如果不对.NET程序集和SQL Server CLR相关的安全性问题进行描述,那么对CLR新特性的探讨就不可能是完整的。与T-SQL不一样,T-SQL不具备任何引用数据库以外资源的本地访问能力,而.NET程序集完全能够访问系统和网络资源。因此,保证它们的安全是这类开发过程中的一个重要方面。在SQL Server 2005中,微软已经把基于权限的CLR安全模型与基于用户的SQL Server安全模型集成到了一起。
通过SQL Server安全模型,用户只能访问那些他们有用户权限的数据库对象(包括从.NET程序集创建的数据库对象)。CLR安全模型通过提供对运行在服务器上的.NET代码可以访问的……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
如果不对.NET程序集和SQL Server CLR相关的安全性问题进行描述,那么对CLR新特性的探讨就不可能是完整的。与T-SQL不一样,T-SQL不具备任何引用数据库以外资源的本地访问能力,而.NET程序集完全能够访问系统和网络资源。因此,保证它们的安全是这类开发过程中的一个重要方面。在SQL Server 2005中,微软已经把基于权限的CLR安全模型与基于用户的SQL Server安全模型集成到了一起。
通过SQL Server安全模型,用户只能访问那些他们有用户权限的数据库对象(包括从.NET程序集创建的数据库对象)。CLR安全模型通过提供对运行在服务器上的.NET代码可以访问的系统资源类型的控制,扩展了SQL Server安全模型提供的权限控制。CLR安全权限在创建程序集时使用“CREATE ASSEMBLY”语句的“WITH PERMISSION_SET”从句指定。表3-4总结了可以应用到SQL Server数据库对象的CLR数据库安全权限选项。
表3-4:CLR数据库对象安全选项
使用“SAFE”权限可以限制对所有外部资源的访问。“EXTERNAL_ACCESS”权限启用了一些外部使用受管API资源的访问。SQL Server为了访问外部资源,需要模拟调用者。要使用这个权限及创建对象,你必须拥有新的“EXTERNAL_ACCESS”权限。“UNSAFE”权限基本上是一种可以访问任何类型资源的权限。所有系统资源都可以被访问,调用受管的和不受管的代码都是允许的。只有系统管理员可以创建“UNSAFE”权限的对象。
除了使用“CREATE ASSEMBLY”语句,你还可以使用项目属性设置CLR数据库对象权限,如下图3-16所示:
图3-16:设置CLR权限
要想交互性地设置CLR的许可级别,需要先在Visual Studio 2005菜单中选择“项目|属性”选项,打开项目属性。然后打开“数据库”标签页,点击“许可级别”下拉列表。整个项目必须重新部署后,所做的修改才能生效。
管理CLR数据库对象
如下表3-5所示,SQL Server 2005提供了系统视图,你可以看到目前数据库中使用的各种CLR对象。
表3-5:管理CLR数据库对象的系统视图
作者
翻译
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。