宿主保护属性和 CLR 集成编程
公共语言运行时 (CLR) 提供一种机制,用于使用 CLR 宿主(例如从 SQL Server 2005 开始的 SQL Server)可能需要的特定属性对属于 .NET Framework 的托管应用程序编程接口 (API) 进行批注。 这种宿主保护属性 (HPA) 的示例包括:
SharedState,指示 API 是否公开创建或管理共享状态(例如,静态类字段)的功能。
Synchronization,指示 API 是否公开在线程之间执行同步的功能。
ExternalProcessMgmt,指示 API 是否公开控制宿主进程的方法。
在给定这些属性的基础上,SQL Server 可通过代码访问安全性 (CAS) 指定在宿主环境下不允许的 HPA 的列表。 CAS 要求由以下三个 SQL Server 权限集之一指定:SAFE、EXTERNAL_ACCESS 或 UNSAFE。 在服务器上使用 CREATE ASSEMBLY 语句注册程序集时,将指定这三个安全级别之一。 在 SAFE 或 EXTERNAL_ACCESS 权限集内执行的代码必须避免应用了 System.Security.Permissions.HostProtectionAttribute 属性的特定类型或成员。 有关详细信息,请参阅创建程序集和 CLR 集成编程模型限制。
HostProtectionAttribute 与其说是一项安全权限,不如说是一种用于提高可靠性的方法,原因在于它标识宿主可能不允许的特定代码构造(类型或方法)。 使用 HostProtectionAttribute 会强制执行可帮助保护宿主稳定性的编程模型。
宿主保护属性
HPA 可标识不适合宿主编程模型的类型或成员,并表示可靠性威胁的以下递增级别:
在其他方面为良性。
可能会导致反序列化服务器托管的用户代码。
可能会导致反序列化服务器进程本身。
SQL Server 不允许使用具有将 System.Security.Permissions.HostProtectionResource 枚举指定为 ExternalProcessMgmt、ExternalThreading、MayLeakOnAbort、SecurityInfrastructure、SelfAffectingProcessMgmnt、SelfAffectingThreading、 SharedState、Synchronization 或 UI 值的 HostProtectionAttribute 的类型或成员。 这会阻止程序集调用启用共享状态、执行同步、可能导致终止时资源泄漏或影响 SQL Server 进程的完整性的成员。
禁用的类型和成员
下面的主题标识了其 HostProtectionResource 值被 SQL Server 禁用的类型和成员。
注意 |
---|
这些主题中的列表是通过受支持的程序集生成的。 有关详细信息,请参阅支持的 .NET Framework 库。 |
本节涉及的主题
Microsoft.VisualBasic.dll 中禁用的类型和成员
列出了 Microsoft.VisualBasic.dll 中其 HPA 值被禁用的类型和成员。mscorlib.dll 中禁用的类型和成员
列出了 mscorlib.dll 中其 HPA 值被禁用的类型和成员。System.dll 中禁用的类型和成员
列出了 System.dll 中其 HPA 值被禁用的类型和成员。System.Data.dll 中禁用的类型和成员
列出了 System.Data.dll 中其 HPA 值被禁用的类型和成员。System.Core.dll 中禁用的类型和成员
列出了 System.Core.dll 中其 HPA 值被禁用的类型和成员。