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

Common Language Runtime (CLR) proporciona un mecanismo para anotar interfaces de programación de aplicaciones administradas (API) que forman parte de .NET Framework con determinados atributos que pueden ser de interés para un host de CLR, como SQL Server, a partir de 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.

Dados estos atributos, SQL Server especifica una lista de HPA no permitidas en el entorno hospedado a través de la seguridad de acceso al código (CAS). Los requisitos de CAS se especifican mediante uno de los tres conjuntos de permisos de SQL Server: SAFE, EXTERNAL_ACCESSo 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 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 tiene un HostProtectionAttribute objeto que especifica una System.Security.Permissions.HostProtectionResource enumeración con un valor de ExternalProcessMgmt, , SelfAffectingProcessMgmntMayLeakOnAbortExternalThreadingSelfAffectingThreadingSharedStateSecurityInfrastructure, , Synchronization, o .UI Esto impide que los ensamblados llamen a los miembros que habilitan el estado compartido, realizan una sincronización, podrían provocar una pérdida de recursos al finalizar o afectan a la integridad del proceso de SQL Server.

Tipos y miembros no permitidos

En los temas siguientes se identifican los tipos y miembros cuyos HostProtectionResource valores no están permitidos por SQL Server.

Nota

Las listas de estos temas se generaron a partir de los ensamblados admitidos. Para obtener más información, consulte Bibliotecas de .NET Framework compatibles.

En esta sección

Miembros y tipos no permitidos en Microsoft.VisualBasic.dll
Enumera los tipos y miembros de Microsoft.VisualBasic.dll cuyos valores de HPA no se permiten.

Miembros y tipos no permitidos en mscorlib.dll
Enumera los tipos y miembros en mscorlib.dll cuyos valores HPA no se permiten.

Tipos y miembros no permitidos en System.dll
Enumera los tipos y miembros en System.dll cuyos valores HPA no se permiten.

Tipos y miembros no permitidos en System.Data.dll
Enumera los tipos y miembros en System.Data.dll cuyos valores HPA no se permiten.

Tipos y miembros no permitidos en System.Core.dll
Enumera los tipos y miembros en System.Core.dll cuyos valores HPA no se permiten.

Consulte también

Seguridad de acceso del código de integración CLR
Restricciones del modelo de programación de la integración CLR
Crear un ensamblado