SQL Server2005SQLCLR代码安全之权限

2016-01-29 16:08 46 1 收藏

SQL Server2005SQLCLR代码安全之权限,SQL Server2005SQLCLR代码安全之权限

【 tulaoshi.com - SQLServer 】

一、 SQLCLR权限集级别

  当你使用CREATE ASSEMBLY语句把一个程序集加载到一个数据库中时,SQL Server提供了三种权限集级别:SAFE,EXTERNAL_ACCESS和UNSAFE。这些权限集形成如图3和图5(均请参考第二篇)所示的AppDomain策略级别。

  下面是一个典型的语句,它实现安装位于FileLoader.dll文件内的一个程序集,并且赋予它EXTERNAL_ACCESS权限集。

CREATE ASSEMBLY FileAccess
FROM 'E:FileLoader.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
GO
  在代码执行时,每一种权限集级别都授予该代码一组不同的CAS许可权集。下面让我们开始讨论在每一级上授予的特定许可权。

  (1) SAFE

  SAFE是默认的权限集。它仅授予足够的许可权来执行代码,实现不要求存取外部资源的内部计算以及存取在宿主SQL Server实例中的数据和对象。注意,SAFE代码不能存取外部的资源,因此它不能读取或写磁盘文件,不能存取任何其它SQL Server实例,或读取或写注册表。而且,该代码也必须被检验为类型安全的,这将有助于避免各种包括缓冲区溢出在内的攻击。

  SAFE代码是更可靠和安全的SQLCLR代码。它能够实现用T-SQL书写的代码在数据库和服务器实例内所能实现的几乎一样的功能。它能够授予如表格1所列举的CAS许可权。从表格1中可见,该代码能够运行和读取宿主SQL Server实例中的对象和数据-借助于一种特定形式的ADO.NET连接串,或者是"context connection=true"或者是"context connection=yes"来实现。任何其它连接串都可能会导致某种安全异常。

  表格1:授予给SAFE程序集的权限集。

权限类型限制SecurityPermission 受限制执行SqlClientPermission受限制不能是空口令,只能使用上下文连接串
  授予给一个程序集的结果权限集是列举于表格1中的许可权权限集与来自企业、机器和用户权限集的交集。因为这些级别默认会拥有所有的许可权,所以程序集仅接受列举于表格1中的权限。注意,请确保你一定要理解这些权限。

  (2) EXTERNAL_ACCESS

  与SAFE相比,EXTERNAL_ACCESS权限集允许有限制地存取存在于SQL Server实例外部的资源-包括磁盘文件,在其它SQL Server实例中的数据和对象,环境变量和注册表的一些部分。存取这些其它资源通常是在SQL Server服务帐户的安全上下文中进行的,但是,该代码能够模拟其它用户进行存取。这个级别授予列举于表格2中的许可权。

  表格2:授予给EXTERNAL_ACCESS程序集的权限集。

权限类型限制EnviromentPermission不受限制-FileIOPermission不受限制-RegistryPermission受限制仅能以读方式存取HKEY_CLASSES_ROOT,HKEY_LOCAL_MACHINE,HKEY_CURRENT_USER,HKEY_CURRENT_CONFIG和HKEY_USERSecurityPermission受限制Assertion,Execution,SerializationFormatter,ControlPrincipalKeyContainerPermission不受限制-SqlClientPermission不受限制-EventLogPermission受限制仅限于本地主机且仅限于系统管理员DnsPermission不受限制-SocketPermission受限制仅限于IP地址WebPermission受限制仅能通过HTTP存取本地主机SmtpPermission受限制仅能进行连接存取DistributedTransactionPermission 不受限制

来源:https://www.tulaoshi.com/n/20160129/1497591.html

延伸阅读
标签: SQLServer
SQL Server开发人员和管理员们都需要了解可用特性,只要他们安装了SQL Server 2005。这个最新的SQL Server 版本包含了一个经过改善的安全模型,可以对数据库服务器和里面的数据库对象进行更好的控制。在这篇文章中,我们将会重点讨论两个新的工具:表面区域配置工具和SQL 浏览器服务。我们还会讨论SQL Server配置管理器,虽然从SQL Server2000以...
本文详细介绍了SQL Server对XML支持,其中增强的特性,全新的面向XML的存储体系,SQL Server认证机制的安全性改进,分级的数据库访问实体机制,借助CLR控制.Net Assembly的执行过程,上下文定义特性等。 Internet:我用最XML的方式支持你 SQL Server对XML支持 Internet平台应用除了通信部分与其他应用有本质区别外,作为基...
针对与mssql2005的安全,应当针对于2个方面来做,针对于主要的权限及端口。(要是有人说删除不安全的系统存储过程,先说好这个方式只能针对于2000,2005及2008均未发现可以删除的方法,有的话请回复)。 1.端口方面大家都知道mssql默认端口为1433,对于默认端口我一般都有一种想要封掉的冲动,主要是大家只要telnet一下就知道我的数据库是什么...
标签: Web开发
后台数据库: [Microsoft Access] 与 [Microsoft Sql Server] 更换之后,ASP代码应注意要修改的一些地方: [一]连接问题(举例) [Microsoft Access] constr = "DBQ=c:dataclwz.mdb; DRIVER={Microsoft Access Driver (*.mdb)}" [Microsoft Sql Server] constr = "DRIVER={SQL Server};SERVE...
标签: SQLServer
SQL Server上内置了加密术用来保护各种类型的敏感数据。在很多时候,这个加密术对于你来说是完全透明的;当数据被存储时候被加密,它们被使用的时候就会自动加密。在其他的情况下,你可以选择数据是否要被加密。SQL Server可以加密下列这些组件: ·密码 ·存储过程,视图,触发器,用户自定义函数,默认值,和规则。 ·在服务器和用户之间...

经验教程

716

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部