Programação do SQL servidor e atributos de proteção de host
A capacidade de carregar e executar código gerenciado em um host do SQL servidor requer atender aos requisitos do host para a segurança de acesso do código e host recurso proteção.Os requisitos de segurança de acesso do código são especificados por um dos três SQL servidor permissão define: SAFE, EXTERNAL acesso ou UNSAFE.O código executado dentro do SAFE ou EXTERNAL acesso permissão conjuntos devem evitar determinadas tipos ou membros que possuem o HostProtectionAttribute atributo aplicado. The HostProtectionAttribute não é uma permissão de segurança sistema autônomo muito sistema autônomo constrói uma garantia de confiabilidade em que ele identifica o código específico, tipos ou métodos, que pode não permitir que o host. O uso do HostProtectionAttribute aplica um modelo de programação que ajuda a proteger a estabilidade do host.
Atributos de proteção de host
Atributos de proteção de host identificam tipos ou membros que não se ajuste o modelo de programação de host e representam os seguintes níveis cada vez maiores de confiabilidade ameaça:
Caso contrário, É benigno.
Pode levar a destabilization do código do usuário do servidor gerenciado.
Pode levar a destabilization do processo do servidor propriamente dito.
SQL servidor não permite o uso de um tipo ou membro que tenha um HostProtectionAttribute Especifica que um HostProtectionResource valor de SharedState, Synchronization, MayLeakOnAbort, ou ExternalProcessMgmt. Isso impede que os conjuntos de membros de chamada que habilitar o estado de compartilhamento, executar a sincronização, podem causar um perda de recursos na finalização ou afetar a integridade do processo do SQL servidor.
Não são permitidos tipos e membros
A tabela a seguir identifica tipos e membros cujo HostProtectionResource valores não são permitidas pelo SQL servidor.
SQL servidor permissão conjuntos
O SQL servidor permite que os usuários especifiquem os requisitos de confiabilidade do código implantado em um banco de dados.Quando os assemblies são carregados no banco de dados, o autor do assembly pode especificar um dos três conjuntos de permissões desse conjunto de módulos (assembly): SAFE, EXTERNAL acesso ou UNSAFE.
Permissão conjunto |
SEGURO |
ACESSO EXTERNO |
NÃO SEGURO |
---|---|---|---|
Segurança de acesso a código |
Executar somente |
Acesso a recursos externos + executar |
Irrestrito: |
Restrições do modelo de programação |
Sim |
Sim |
Sem restrições |
Requisito verifiability |
Sim |
Sim |
Não |
Capacidade de telefonar código nativo |
Não |
Não |
Sim |
SAFE é o modo mais seguro e confiável com restrições associadas em termos do modelo de programação permitido.Código de segurança possui recursos de alta confiabilidade e segurança.SEGURANÇA assemblies recebem permissão suficiente para executar, executar cálculos e ter acesso ao banco de dados local.Assemblies de segurança precisa ser verificável digitar seguro e não tem permissão para telefonar código não gerenciado.
EXTERNAL acesso fornece uma opção de segurança intermediário, permitindo acessar os recursos de código externo ao banco de dados, mas ainda com a confiabilidade e a segurança de SAFE.
UNSAFE é para código altamente confiável que pode ser criado somente por administradores de bancos de dados.Esse código confiável tem restrições de acesso do código, e ele possa chamar código não gerenciado (nativo).
O SQL servidor usa a camada de diretiva de segurança do código de nível host acesso para definir uma política de host que concede a um dos três conjuntos de permissões com base na permissão de conjunto de catálogos do SQL servidor.Código gerenciado em execução dentro do banco de dados sempre obtém um desses conjuntos de permissão de acesso do código.
Restrições do modelo de programação
O modelo de programação para código gerenciado no SQL servidor requer funções, procedimentos e tipos que não requerem o uso do estado mantido em várias chamadas ou o compartilhamento de estado entre várias sessões de usuário.Além disso, conforme descrito anteriormente, a presença do estado compartilhado pode causar exceções críticas que afetam a escalabilidade e confiabilidade do aplicativo.
Feitas essas considerações, o SQL servidor não permite o uso de variáveis estáticas e membros de dados estático.Para assemblies SAFE e EXTERNAL acesso, o SQL servidor examina os metadados do assembly em time de criar ASSEMBLY e falha a criar de tais assemblies se encontra o uso de membros de dados estático e variáveis.