.NET数据库对象的安全性

日期: 2009-11-02 作者:McGraw-Hill翻译:孙瑞 来源:TechTarget中国 英文

如果不对.NET程序集和SQL Server CLR相关的安全性问题进行描述,那么对CLR新特性的探讨就不可能是完整的。与T-SQL不一样,T-SQL不具备任何引用数据库以外资源的本地访问能力,而.NET程序集完全能够访问系统和网络资源。因此,保证它们的安全是这类开发过程中的一个重要方面。在SQL Server 2005中,微软已经把基于权限的CLR安全模型与基于用户的SQL Server安全模型集成到了一起。

  通过SQL Server安全模型,用户只能访问那些他们有用户权限的数据库对象(包括从.NET程序集创建的数据库对象)。CLR安全模型通过提供对运行在服务器上的.NET代码可以访问的……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

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数据库对象的系统视图

翻译

孙瑞
孙瑞

相关推荐