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 para um host do CLR, como SQL Server, começando com 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.
Considerando esses atributos, 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 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 de modelo de programação de 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.
SQL Server não permite o uso de um tipo ou membro que tem um HostProtectionAttribute
que especifica uma System.Security.Permissions.HostProtectionResource
enumeração com um valor de ExternalProcessMgmt
, ExternalThreading
, MayLeakOnAbort
, , SelfAffectingProcessMgmnt
SecurityInfrastructure
, SelfAffectingThreading
, SharedState
, Synchronization
ou 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 desaprovados
Os tópicos a seguir identificam tipos e membros cujos HostProtectionResource
valores não são permitidos por SQL Server.
Observação
As listas deste tópico foram geradas dos assembly com suporte. Para obter mais informações, consulte Bibliotecas de .NET Framework com suporte.
Nesta seção
Tipos desaprovados e membros em Microsoft.VisualBasic.dll
Lista os tipos e os membros de Microsoft.VisualBasic.dll cujos valores HPA não são permitidos.
Membros e tipos não permitidos em mscorlib.dll
Lista os tipos e os membros de mscorlib.dll cujos valores HPA são desaprovados.
Disallowed Types and Members In System.dll
Lista os tipos e os membros de System.dll cujos valores HPA são desaprovados.
Tipos e membros não permitidos em System.Data.dll
Lista os tipos e os membros de System.Data.dll cujos valores HPA são desaprovados.
Tipos e membros desaprovados no System.Core.dll
Lista os tipos e os membros de System.Core.dll cujos valores HPA são desaprovados.
Consulte Também
Segurança de acesso a código da integração CLR
Restrições do modelo de programação da Integração CLR
Criando um assembly