SQL Server2005 SQLCLR代码之CLR安全
2006-08-07 09:14:59 来源:WEB开发网核心提示: 现在,我们将更为详细地讨论关于CAS的问题,SQL Server2005 SQLCLR代码之CLR安全(3),但是,请记住,机器和用户,图4展示了这个工具,现在我们所讨论的许可权问题并不是在SQL Server内部的那种,而是在外部-在操作系统中的许可权
现在,我们将更为详细地讨论关于CAS的问题。但是,请记住,现在我们所讨论的许可权问题并不是在SQL Server内部的那种,而是在外部-在操作系统中的许可权。例如,比方说SQLCLR代码不得不打开一个磁盘文件来记录一些日志数据,或进行连接以从另一个数据库读取数据。CAS许可权限制代码能够存取该磁盘文件的方式以及到其它数据库的连接方式。
为了运行某种方法,无论何时CLR装载一个程序集,它都要收集关于该程序集的与在该机器上定义的策略相匹配的证据以便授予其相应的许可权。典型地,对于.NET程序集的证据通常包括位置(原始)数据(程序集从这里运行)和身份数据。但是,既然一个SQLCLR程序集从SQL Server内部运行,那么,位置证据基本上是不相关的。这样以来,只剩下了身份证据,例如是否该程序集拥有一个强名字或者是经过一家特定公司进行数字签名的。
图3.来自四种策略级别的CAS许可权的交集
CLR收集该证据,然后与四种策略级别(企业,机器,用户和AppDomain)加以比较。(SQL Server文档经常调用AppDomain级别"Host Policy",但这是一回事。在.NET框架中,AppDomain是更为典型的术语,我经常使用它)。由CLR授予给一个程序集的实际的许可权集是在每一个级别上授予的许可权的交集。
图3展示了这一工作机理。这四种级别中的每一种都有其自己的许可权集合。为了决定授予给一个程序集的许可权集,CLR使用这些许可权的交集-也即是,各种许可权集的公共集合,并且把这个交集授予给该程序集。
你可以使用.NET框架2.0配置工具来分析前三种策略级别:企业,机器和用户。图4展示了这个工具,当你展开TreeView控件的运行时刻安全策略部分时显示策略级别。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接