Compartilhar via


Atributos de proteção de host e programação da Integração CLR

O CLR (Common Language Runtime) fornece um mecanismo para anotar APIs (interfaces de programação de aplicativo ) gerenciadas que fazem parte do .NET Framework com determinados atributos que podem ser de interesse de um host do CLR como, por exemplo, o SQL Server, desde o SQL Server 2005. Entre os exemplos desses HPAs (atributos de proteção de host) estão:

  • SharedState, que indica se a API expõe a capacidade de criar ou gerenciar estado compartilhado (por exemplo, campos de classe estáticos).

  • Synchronization, que indica se a API expõe a capacidade para executar sincronização entre threads.

  • ExternalProcessMgmt, que indica se a API expõe um modo de controlar o processo de host.

Dados esses atributos, o SQL Server especifica uma lista de HPAs desaprovadas no ambiente hospedado por meio da CAS (segurança de acesso do código). Os requisitos de CAs são especificados por um dos três conjuntos de permissões do SQL Server: SAFE, EXTERNAL_ACCESS ou UNSAFE. Um desses três níveis de segurança é especificado quando o assembly é registrado no servidor, usando a instrução CREATE ASSEMBLY. Código em execução nos conjuntos de permissões SAFE ou EXTERNAL_ACCESS deve evitar determinados tipos ou membros que tenham o atributo System.Security.Permissions.HostProtectionAttribute aplicado. Para obter mais informações, consulte Criando um assembly e Restrições do modelo de programação da Integração CLR.

HostProtectionAttribute não é uma permissão de segurança tanto quanto uma forma de aumentar a confiabilidade; ela identifica construções de código específicas, tipos ou métodos, que o host pode desautorizar. O uso do HostProtectionAttribute impõe um modelo de programação que ajuda a proteger a estabilidade do host.

Atributos de proteção de host

HPAs identificam tipos ou membros que não se ajustam ao modelo de programação de host e representam os seguintes níveis crescentes de ameaça à confiabilidade:

  • Do contrário, benignos.

  • Poderia levar à desestabilização do código de usuário gerenciado por servidor.

  • Poderia levar à desestabilização do próprio processo do servidor.

O SQL Server desautoriza o uso de um tipo ou membro que tenha HostProtectionAttribute que especifique uma enumeração System.Security.Permissions.HostProtectionResource cujo valor é ExternalProcessMgmt, ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronization ou UI. Isso impede que os assemblies chamem membros que permitam compartilhar o estado, realizar a sincronização, causar um vazamento de recurso na terminação ou afetar a integridade do processo do SQL Server.

Tipos e membros desaprovados

Os seguintes tópicos identificam tipos e membros cujos valores HostProtectionResource são desaprovados por SQL Server.

ObservaçãoObservação

As listas nestes tópicos foram geradas a partir dos assemblies da versão 2.0 SP1 do .NET Framework para os quais há suporte. Para obter mais informações, consulte Bibliotecas do .NET Framework compatíveis.

Nesta seção