CLR 集成安全性

适用于:SQL Server

SQL Server与 .NET Framework 公共语言运行时 (CLR) 集成的安全模型管理和保护SQL Server中运行的不同类型的 CLR 和非 CLR 对象之间的访问。 这些对象可以通过 Transact-SQL 语句或服务器中运行的其他 CLR 对象进行调用。 对象之间的调用称为链接。 对这些对象执行的安全检查类型取决于相关的链接类型。

CLR 集成安全模式可实现以下目的:

  • 默认情况下,在 SQL Server 上运行托管用户代码不应损害SQL Server的完整性和稳定性。 执行可能会损害SQL Server可靠性的操作应受适当的高级权限的保护。

  • 托管用户代码不应当获得对数据库中用户数据或其他用户代码的未经授权访问。 用户定义代码应当在调用该代码的用户会话的安全上下文中运行,且拥有该安全上下文的正确特权。

  • 应当有控制来限制用户代码不得访问服务器以外的任何资源,而只能用于本地数据访问和计算。

  • 由于在SQL Server进程中运行,用户定义的代码不应能够获得对系统资源的未经授权的访问。

SQL Server现在将 SQL Server 的基于用户的安全模型与 CLR 的基于代码访问的安全模型集成。 本节将讨论此组合安全方法的某些优势。

下表列出了本节的主题。

CLR 集成代码访问安全性
讨论托管代码的代码访问安全性 (CAS) 模式。

宿主保护属性和 CLR 集成编程
提供有关 SAFE 和 EXTERNAL_ACCESS 程序集中禁止的宿主保护属性 (HPA) 值的信息。

CLR 集成安全性中的链接
描述用户代码片段如何在SQL Server中相互调用。

模拟和 CLR 集成安全性
讨论托管代码是如何使用模拟来访问外部资源的。

讨论当托管方法调用其他程序集中所包含类的方法时所产生的问题。

应用程序域和 CLR 集成安全性
描述如何将程序集加载到应用程序域。

另请参阅

管理 CLR 集成程序集