主机保护属性和 CLR 集成编程
适用范围:SQL Server
公共语言运行时(CLR)提供一种机制,用于批注作为 .NET Framework 一部分的托管应用程序编程接口(API)。 这些属性可能对 CLR 的主机感兴趣,例如 SQL Server。 这种宿主保护属性 (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 禁止使用具有 HostProtectionAttribute
指定值为 System.Security.Permissions.HostProtectionResource
、ExternalProcessMgmt
、ExternalThreading
、MayLeakOnAbort
、SecurityInfrastructure
、SelfAffectingProcessMgmt
、SelfAffectingThreading
、SharedState
、SharedState
或 UI
的 枚举的类型或成员。 这样可防止程序集调用启用共享状态、执行同步、终止时可能导致资源泄漏或影响 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 值被禁用的类型和成员。 |