Configuração do servidor: clr strict security
Aplica-se: SQL Server
Controla a interpretação das permissões SAFE
, EXTERNAL_ACCESS
ou UNSAFE
no SQL Server. Para obter mais informações essas permissões, confira Criando assemblies.
Valor | Descrição |
---|---|
0 |
Desabilitada. Fornecido para compatibilidade com versões anteriores. Não é recomendável definir esse valor como 0 . |
1 |
Habilitado. Faz com que o Mecanismo de Banco de Dados ignore as informações de PERMISSION_SET sobre os assemblies e sempre interprete-as como UNSAFE . No SQL Server 2017 (14.x) e versões posteriores, 1 é o valor padrão. |
A segurança de acesso ao código não é mais suportada
O CLR usa o CAS (Segurança de Acesso do Código) no .NET Framework, para o qual não há mais suporte como um limite de segurança. Um assembly CLR criado com o PERMISSION_SET = SAFE
pode conseguir acessar recursos externos do sistema, chamar um código não gerenciado e adquirir privilégios sysadmin. No SQL Server 2017 (14.x) e versões posteriores, clr strict security
trata os assemblies SAFE
e EXTERNAL_ACCESS
como se estivessem marcados com UNSAFE
.
Recomendamos que você assine todos os assemblies por um certificado ou uma chave assimétrica com um logon correspondente que tenha recebido a permissão UNSAFE ASSEMBLY
no banco de dados master
. Os administradores do SQL Server também podem adicionar assemblies a uma lista de assemblies, na qual o Mecanismo de Banco de Dados deve confiar. Para obter mais informações, consulte sys.sp_add_trusted_assembly.
Comentários
Quando habilitada, a opção PERMISSION_SET
nas instruções CREATE ASSEMBLY
e ALTER ASSEMBLY
é ignorada em tempo de execução, mas as opções PERMISSION_SET
são preservadas nos metadados. Ignorar esta opção minimiza a interrupção de instruções de código existentes.
CLR strict security
é um advanced option
.
Depois de habilitar a segurança estrita, os assemblies que não estão assinados não serão carregados. Você deve alterar ou remover e recriar cada assembly, de modo que ele seja assinado com um certificado ou uma chave assimétrica que tem um logon correspondente à permissão UNSAFE ASSEMBLY
no servidor.
Permissões
Alterar essa opção
Exige a permissão CONTROL SERVER
ou a associação na função de servidor fixa sysadmin.
Criar um assembly CLR
As seguintes permissões necessárias para criar um assembly CLR quando o CLR strict security
está habilitado:
O usuário deve ter a permissão
CREATE ASSEMBLY
Uma das seguintes condições também deve ser verdadeira:
O assembly é assinado com um certificado ou uma chave assimétrica que tem um logon correspondente à permissão
UNSAFE ASSEMBLY
no servidor. A assinatura do assembly é recomendada.O banco de dados tem a propriedade
TRUSTWORTHY
definida comoON
e o banco de dados pertence a um logon que tem a permissãoUNSAFE ASSEMBLY
no servidor. Essa opção não é recomendada.
Exemplos
O exemplo a seguir primeiro mostra a configuração atual da opção clr strict security
e define o valor da opção como 1
(habilitado).
EXEC sp_configure 'clr strict security';
GO
EXEC sp_configure 'clr strict security' , '1';
RECONFIGURE;
GO