Compartilhar via


Atributos de proteção de host e programação de integração clr

Aplica-se:SQL Server

O CLR (Common Language Runtime) fornece um mecanismo para anotar APIs (interfaces de programação de aplicativo gerenciado) que fazem parte do .NET Framework. Esses atributos podem ser de interesse para um host do CLR, como o SQL Server. 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 o estado compartilhado (por exemplo, campos de classe estáticos).

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

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

Considerando esses atributos, o SQL Server especifica uma lista de HPAs que não são permitidos no ambiente hospedado por meio da CAS (segurança de acesso ao código). Os requisitos de CAS são especificados por um dos três conjuntos de permissões do SQL Server: SAFE, EXTERNAL_ACCESSou UNSAFE. Um desses três níveis de segurança é especificado quando o assembly é registrado no servidor, usando a instrução CREATE ASSEMBLY. A execução de código dentro dos 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 Criar um assembly e restrições de modelo de programação de integração clr.

O HostProtectionAttribute não é uma permissão de segurança tanto quanto uma maneira de melhorar a confiabilidade, pois identifica construções de código específicas, tipos ou métodos, que o host pode não permitir. 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

Os HPAs identificam tipos ou membros que não se encaixam no modelo de programação do host e representam os seguintes níveis crescentes de ameaça de 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 não permite o uso de um tipo ou membro que tenha um HostProtectionAttribute que especifica uma enumeração System.Security.Permissions.HostProtectionResource com um valor de ExternalProcessMgmt, ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronizationou UI. Isso impede que os assemblies chamem membros que permitem o compartilhamento do estado, executam a sincronização, podem causar uma perda de recursos após o término ou afetam a integridade do processo do SQL Server.

Tipos e membros não permitidos

Os artigos a seguir identificam tipos e membros cujos valores de HostProtectionResource o SQL Server não permitem.

As listas nesses artigos foram geradas a partir dos assemblies com suporte. Para obter mais informações, consulte bibliotecas do .NET Framework com suporte.

Nesta seção

Artigo Descrição
tipos e membros não permitidos no Microsoft.VisualBasic.dll Lista os tipos e os membros de Microsoft.VisualBasic.dll cujos valores HPA não são permitidos.
tipos e membros não permitidos no mscorlib.dll Lista os tipos e os membros de mscorlib.dll cujos valores HPA são desaprovados.
tipos e membros não permitidos no System.dll Lista os tipos e os membros de System.dll cujos valores HPA são desaprovados.
tipos e membros não permitidos no System.Data.dll Lista os tipos e os membros de System.Data.dll cujos valores HPA são desaprovados.
tipos e membros não permitidos no System.Core.dll Lista os tipos e os membros de System.Core.dll cujos valores HPA são desaprovados.