.NET Framework 公共语言运行时(CLR)的安全模型管理和保护在 Transact-SQL 语句中运行的不同类型的 CLR 和非 CLR 对象之间的访问,或管理服务器中运行的另一个 CLR 对象之间的访问。 对象之间的调用称为链接。 对这些对象执行的安全检查类型取决于相关的链接类型。
CLR 集成安全模式可实现以下目的:
默认情况下,在 SQL Server 上运行托管用户代码。 执行可能损害 SQL Server 可靠性的操作应受到适当的高级权限的保护。
托管用户代码不应获得对数据库中用户数据或其他用户代码的未经授权的访问。 用户定义代码应当在调用该代码的用户会话的安全上下文中运行,且拥有该安全上下文的正确特权。
应当有控制来限制用户代码不得访问服务器以外的任何资源,而只能用于本地数据访问和计算。
用户定义代码不应由于在 SQL Server 进程中运行而获得对系统资源的未经授权的访问。
具有 CLR 基于代码访问的安全模型的 SQL Server。 本节将讨论此组合安全方法的某些优势。
下表列出了本节中的主题。
CLR 集成代码访问安全性
讨论托管代码的代码访问安全性 (CAS) 模型。
主机保护属性和 CLR 集成编程
提供有关 SAFE 和EXTERNAL_ACCESS程序集中不允许的主机保护属性(HPA)值的信息。
CLR 集成安全性中的链接
介绍如何在 SQL Server 中相互调用用户代码片段。
模拟和 CLR 集成安全性
讨论托管代码如何使用模拟访问外部资源。
允许部分受信任的调用方
讨论当托管方法调用另一个程序集中包含的类中的方法时出现的问题。
应用程序域和 CLR 集成安全性
描述如何将程序集加载到应用程序域中。