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 como ON e o banco de dados pertence a um logon que tem a permissão UNSAFE 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