Share via


Atributos de protección del host y programación de la integración CLR

El Common Language Runtime (CLR) proporciona un mecanismo para anotar interfaces de programación de aplicaciones (API) administradas que forman parte del .NET Framework con ciertos atributos que pueden ser de interés para un host del CLR, como SQL Server, que se inició con SQL Server 2005. Los ejemplos de estos atributos de protección del host (HPA) incluyen:

  • SharedState, que indica si la API expone la capacidad para crear o administrar el estado compartido (por ejemplo, campos clase estática).

  • Synchronization, que indica si la API expone la capacidad de realizar la sincronización entre los subprocesos.

  • ExternalProcessMgmt, que indica si la API expone una manera de controlar el proceso de host.

Al proporcionar estos atributos, SQL Server especifica una lista de los HPA que no se permiten en el entorno alojado a través de la seguridad de acceso a código (CAS). Los requisitos de CAS se especifican mediante uno de los tres conjuntos de permisos de SQL Server: SAFE, EXTERNAL_ACCESS o UNSAFE. Uno de estos tres niveles de seguridad se especifica cuando el ensamblado se registra en el servidor mediante la instrucción CREATE ASSEMBLY. La ejecución de códigos desde los conjuntos de permiso SAFE o EXTERNAL_ACCESS debe evitar ciertos tipos o miembros que tienen aplicado el atributo System.Security.Permissions.HostProtectionAttribute. Para obtener más información, vea Crear un ensamblado y Restricciones del modelo de programación de la integración CLR.

El atributo HostProtectionAttribute no es tanto un permiso de seguridad como una manera de mejorar la confiabilidad, en cuanto a que identifica construcciones de código específicas, bien sean tipos o métodos, que pueden no estar permitidas por el host. El uso del atributo HostProtectionAttribute exige un modelo de programación de ayuda para proteger la estabilidad del host.

Atributos de protección del host

Los HPA identifican los tipos o miembros que no se ajustan al modelo de programación del host y representan los siguientes niveles crecientes de amenaza de confiabilidad:

  • En caso contrario son favorables.

  • Podrían provocar la desestabilización del código de usuario administrado por servidor.

  • Podría provocar la desestabilización del propio proceso de servidor.

SQL Server no permite el uso de un tipo o miembro que tenga un HostProtectionAttribute que especifique una enumeración System.Security.Permissions.HostProtectionResource con un valor de ExternalProcessMgmt, ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronization o UI. De esta forma, se evita que los ensamblados llamen a miembros que habiliten el estado compartido, ejecuten la sincronización, puedan causar una pérdida de recursos al terminar o afecten la integridad de los procesos de SQL Server.

Tipos y miembros no permitidos

En los temas siguientes se identifican los tipos y miembros cuyos valores HostProtectionResource no se permiten en SQL Server.

[!NOTA]

Las listas de estos temas se han generado a partir de los ensamblados compatibles del SP1 de la versión 2.0 de .NET Framework. Para obtener más información, vea Bibliotecas de .NET Framework admitidas.

En esta sección