SQL Server2005SQLCLR代码安全之权限

超越平凡1986

超越平凡1986

2016-01-29 16:08

SQL Server2005SQLCLR代码安全之权限,SQL Server2005SQLCLR代码安全之权限
一、 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 不受限制
展开更多 50%)
分享

猜你喜欢

SQL Server2005SQLCLR代码安全之权限

SQLServer
SQL Server2005SQLCLR代码安全之权限

SQL Server2005 SQLCLR代码安全之权限

编程语言 网络编程
SQL Server2005 SQLCLR代码安全之权限

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server2005 SQLCLR代码之CLR安全

SQLServer
SQL Server2005 SQLCLR代码之CLR安全

SQL Server 2005之Integration Service

编程语言 网络编程
SQL Server 2005之Integration Service

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQL Server 7.0到2005的安全漏洞会允许登录权限提高?

编程语言 网络编程
SQL Server 7.0到2005的安全漏洞会允许登录权限提高?

SQL Server 2005密码安全追踪与存储

SQLServer
SQL Server 2005密码安全追踪与存储

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

局域网网络故障排除策略(上)

局域网网络故障排除策略(上)

PsTools——网管员的好帮手

PsTools——网管员的好帮手
下拉加载更多内容 ↓