Configurar Transparent Data Encryption com Azure Key Vault para SQL Server

Aplica-se a:SQL Server

Neste artigo, você instala e configura o Conector SQL Server para Azure Key Vault e configura Transparent Data Encryption (TDE) usando uma chave no Azure Key Vault.

Pré-requisitos

Antes de começar a usar Azure Key Vault com sua instância de SQL Server, verifique se você atende aos seguintes pré-requisitos:

Note

No SQL Server 2022 (16.x) 12 e versões posteriores, SQL Server em Linux dá suporte ao Gerenciamento extensível de chaves TDE com Azure Key Vault. Não é necessário seguir as etapas 3 e 4 deste guia para o SQL Server em Linux.

Fluxo rápido

  1. Selecione um modelo de autenticação na Etapa 1: configurar o modelo de autenticação.
  2. Crie um cofre de chaves e uma chave na Etapa 2: criar um cofre de chaves.
  3. Instale o conector na Etapa 3: instalar o conector SQL Server.
  4. Configure o pré-requisito do Registro na Etapa 4: Adicionar chave do Registro para dar suporte ao provedor EKM.
  5. Configure SQL Server e valide a criptografia na Etapa 5: Configurar SQL Server.

Etapa 1: Configurar o modelo de autenticação

Importante

Escolha seu modelo de autenticação antes de continuar:

  • Use a guia Entidade de Serviço para SQL Server local.
  • Use a guia Identidade Gerenciada para o SQL Server em VMs do Azure ou habilitado pelo Azure Arc, nos casos em que há suporte para identidade gerenciada.

Matriz de suporte do modelo de autenticação:

Modelo de autenticação Versão do SQL Server Onde SQL Server é executado Supported
Entidade de serviço Versões com suporte abordadas por este artigo Local, VM do Azure, SQL Server habilitado pelo Azure Arc Sim
Identidade gerenciada SQL Server 2022 CU17 e posterior Azure VM Sim
Identidade gerenciada SQL Server 2025 e posterior SQL Server habilitado pelo Azure Arc Sim
Identidade gerenciada Any On-premises No

Para conceder permissões de acesso de instância do SQL Server ao cofre de chaves do Azure, você precisa de uma conta de entidade de serviço na ID do Microsoft Entra.

  1. Entre no portal do Azure e execute uma das seguintes etapas:

    • Selecione o botão Microsoft Entra ID.

      Captura de tela do painel serviços do Azure.

    • Selecione Mais serviços e, no painel Todos os serviços, digite Microsoft Entra ID.

  2. Registre um aplicativo com Microsoft Entra ID executando as etapas a seguir. Para obter instruções passo a passo detalhadas, consulte a seção Obter uma identidade para o aplicativo da postagem no blog do Azure Key Vault, Azure Key Vault – Passo a passo.

    1. Na seção Gerenciar do recurso Microsoft Entra ID, selecione Registros de aplicativo.

      Captura de tela da página Visão geral do Microsoft Entra ID no portal do Azure.

    2. Na página Registros de aplicativo, selecione Novo registro.

      Captura de tela do painel Registros de aplicativo no portal do Azure.

    3. No painel Registrar um aplicativo, insira o nome do aplicativo voltado para o usuário e selecione Registrar.

      Captura de tela do painel Registrar um aplicativo.

    4. No painel esquerdo, selecione Certificados & segredos>Segredos do cliente>Novo segredo do cliente.

      Captura de tela do painel Certificados e segredos para o aplicativo no portal do Azure.

    5. Em Adicionar um segredo do cliente, insira uma descrição e uma validade apropriada e selecione Adicionar. Não é possível escolher um período de expiração superior a 24 meses. Para saber mais, confira Adicionar um segredo do cliente.

      Captura de tela da seção de Adicionar um segredo do cliente para o aplicativo no portal do Azure.

    6. No painel Certificados & segredos, em Valor, selecione o botão Copiar ao lado do valor do segredo do cliente para usá-lo para criar uma chave assimétrica no SQL Server.

      Captura de tela do valor do segredo no portal do Azure.

    7. No painel esquerdo, selecione Visão geral e, na caixa ID do aplicativo (cliente), copie o valor para usá-lo para criar uma chave assimétrica em SQL Server.

      Captura de tela do valor ID do Aplicativo (cliente) no painel Visão geral.

Etapa 2: Crie um cofre de chaves

Selecione o método que deseja usar para criar um cofre de chaves.

Note

Há suporte apenas para o Azure Key Vault e o HSM Gerenciado do Azure Key Vault. Não há suporte para O HSM na Nuvem do Azure.

Criar um cofre de chaves usando o portal do Azure

Para criar um cofre de chaves usando o portal Azure, consulte Início Rápido: Criar um cofre de chaves usando o portal Azure.

Controle de acesso baseado em papéis do Azure

Use Azure RBAC (controle de acesso baseado em função) para gerenciar o acesso ao Azure Key Vault. Não use políticas de acesso herdadas. As políticas de acesso herdadas têm vulnerabilidades de segurança conhecidas, não têm suporte para Privileged Identity Management (PIM) e não devem ser usadas para cargas de trabalho e dados críticos. Para obter mais informações sobre permissões de RBAC do Azure Key Vault, consulte Funções internas do Azure para operações de plano de dados do Key Vault.

  1. Vá para o recurso do cofre de chaves que você criou e selecione a configuração Controle de acesso (IAM).

  2. Selecione Adicionar>Adicionar atribuição de função.

    Captura de tela do botão Adicionar atribuição de função no painel Controle de acesso (IAM) no portal do Azure.

  3. O aplicativo EKM ou a identidade gerenciada precisa da função Key Vault Crypto Service Encryption User para realizar operações de empacotamento e desempacotamento. Procure por Usuário de Criptografia do Serviço Key Vault e selecione a função. Selecione Próximo.

    Captura de tela da seleção de uma atribuição de função no portal do Azure.

  4. Na guia Membros, selecione a opção Selecionar membros e pesquise o aplicativo Microsoft Entra ou a identidade gerenciada que você criou na Etapa 1. Selecione o aplicativo ou a identidade gerenciada e, em seguida, o botão Selecionar .

    Captura de tela do painel Selecionar membros para adicionar uma atribuição de função no portal do Azure.

  5. Clique em Revisar + atribuir duas vezes para concluir a atribuição de função.

Criar uma chave

O usuário que cria a chave precisa da função Administrador do Cofre de Chaves. Assim como nas etapas anteriores, adicione o membro criando a chave e atribua a função.

  1. No painel Cofre de Chaves, selecione Chaves e, em seguida, selecione a opção Gerar/Importar. Essa ação abre o painel Criar uma chave . Selecione a opção Gerar e insira um nome exclusivo para a chave. O Conector do SQL Server exige que o nome da chave use somente os caracteres "a-z", "A-Z", "0-9" e "-", com um limite de 26 caracteres.

  2. Use o tipo de chave RSA e o tamanho da chave RSA2048. No momento, o EKM oferece suporte apenas a uma chave RSA. Defina as datas de ativação e término conforme apropriado e defina Habilitado como Sim.

    Captura de tela do painel Criar Chave.

Configurar um HSM Gerenciado Azure Key Vault (opcional)

Azure Key Vault HSM gerenciado (Módulo de Segurança de Hardware) dá suporte ao SQL Server, ao SQL Server em Máquinas Virtuais do Azure (VMs), quando você usa a versão mais recente do Conector do SQL Server, e ao SQL do Azure. O HSM gerenciado é um serviço HSM totalmente gerenciado, altamente disponível e de locatário único. O HSM gerenciado fornece uma base segura para operações criptográficas e armazenamento de chaves. O HSM gerenciado é projetado para atender aos mais rigorosos requisitos de segurança e conformidade.

A etapa 2 mostra como criar um cofre de chaves e uma chave em Azure Key Vault. Opcionalmente, você pode usar um HSM gerenciado Azure Key Vault para armazenar ou criar uma chave para o Conector SQL Server. Siga estas etapas:

  1. Crie um HSM gerenciado Azure Key Vault usando o portal Azure, o CLI do Azure, o PowerShell ou um modelo do ARM.

  2. Ative o HSM gerenciado. Somente os administradores designados atribuídos durante a criação podem ativá-lo. No portal Azure, selecione o recurso HSM Gerenciado e, em seguida, selecione Baixar Domínio de Segurança no menu Visão Geral. Siga um dos guias de início rápido para ativar o HSM Gerenciado.

  3. Conceda permissões para que a entidade de serviço do Microsoft Entra ou a identidade gerenciada acesse o HSM gerenciado. A função de Administrador do HSM Gerenciado não concede permissões para criar uma chave. Assim como na etapa 2, a aplicação EKM ou a identidade gerenciada precisa da função Usuário de Criptografia do HSM Gerenciado ou Usuário de Criptografia de Serviço de Criptografia do HSM Gerenciado para executar operações de empacotamento e desempacotamento. Para obter mais informações, confira Funções internas do RBAC local para o HSM gerenciado.

  4. No menu do serviço HSM Gerenciado do Azure Key Vault, em Configuração, selecione Chaves. Na janela Chaves, selecione Gerar/Importar/Restaurar Backup para criar uma chave ou importar uma chave existente.

    Note

    Algoritmos RSA-HSM_2048 e RSA-HSM_3072 têm suporte a partir da Atualização Cumulativa 13 do SQL Server 2022 (16.x).

    O Azure Key Vault Managed HSM oferece suporte à rotação automática de chaves. Para saber mais, confira Configurar rotação automática de chave no HSM gerenciado do Azure.

    O HSM gerenciado dá suporte a conexões de ponto de extremidade privado. Para obter mais informações, consulte Integrar o HSM gerenciado com o Link Privado do Azure. Nessa configuração, você deve habilitar a opção Ignorar serviços confiáveis da Microsoft na configuração Rede do HSM Gerenciado do Azure Key Vault.

Etapa 3: Instalação do Conector do SQL Server

Faça com que um administrador de SQL Server baixe a versão mais recente do SQL Server Connector para Microsoft Azure Key Vault do Centro de Download da Microsoft e execute o instalador.

Captura de tela do assistente de instalação do Conector do SQL Server.

Por padrão, o conector é instalado em C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. Você pode alterar esse local durante a instalação. Se você alterá-lo, ajuste os scripts na próxima seção.

Uma instalação bem-sucedida coloca Microsoft.AzureKeyVaultService.EKM.dll no computador. Este assembly é a DLL do provedor criptográfico EKM. Registre-o com SQL Server usando a instruçãoCREATE CRYPTOGRAPHIC PROVIDER.

O instalador também oferece scripts de exemplo para criptografia de SQL Server.

Para obter explicações de código de erro, configurações ou tarefas de manutenção, consulte:

Etapa 4: adicionar chave do registro para oferecer suporte ao provedor EKM

Warning

Somente um administrador SQL Server que sabe exatamente o que está fazendo deve modificar o registro. Alterações incorretas podem causar sérios problemas. Faça backup do registro antes de fazer qualquer alteração para que você possa restaurá-lo se ocorrer um problema.

  1. Execute regedit para abrir o Editor do Registro.

  2. Crie uma SQL Server Cryptographic Provider chave do Registro em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

  3. Clique com o botão direito do mouse na chave SQL Server Cryptographic Provider do Registro e selecione Permissões.

  4. Conceda Controle Total na chave SQL Server Cryptographic Provider para a conta de usuário que executa o serviço do SQL Server.

    Captura de tela da chave do Registro EKM no Editor do Registro.

  5. Selecione Aplicar e, em seguida, OK.

  6. Feche o Editor do Registro e reinicie o serviço SQL Server.

    Note

    Se você usa TDE com EKM ou Azure Key Vault em uma instância de cluster de failover, adicione também HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider à rotina de ponto de verificação do Registro do Cluster para que o registro seja sincronizado entre os nós, facilitando a recuperação do banco de dados após o failover e a rotação de chaves.

    Execute o seguinte comando do PowerShell para adicionar a chave do Registro à rotina de ponto de verificação:

    Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"
    

Etapa 5: configurar o SQL Server

Confira B. Perguntas frequentes para ver uma observação sobre os níveis de permissão mínimos necessários para cada ação nesta seção.

Fase 1: Configurar o provedor criptográfico e as credenciais em master

Escolha seu modelo de autenticação e siga as etapas correspondentes.

  1. Execute sqlcmd ou abra o SQL Server Management Studio.

  2. Configure o SQL Server para usar o EKM executando o seguinte script do Transact-SQL:

    -- Enable advanced options.
    USE master;
    GO
    
    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXEC sp_configure 'EKM provider enabled', 1;
    GO
    RECONFIGURE;
    
  3. Registre o Conector do SQL Server como um provedor EKM com o SQL Server.

    Crie um provedor criptográfico usando o Conector do SQL Server, que é um provedor EKM do Azure Key Vault. Neste exemplo, o nome do provedor é AzureKeyVault_EKM.

    CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM
    FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll';
    GO
    

    Note

    O tamanho do caminho do arquivo não pode ultrapassar 256 caracteres.

  4. Configure uma credencial do SQL Server para um logon do SQL Server para usar o cofre de chaves.

    Adicione uma credencial a cada logon que executa a criptografia usando uma chave do cofre de chaves. Há um mapeamento um-para-um entre credenciais e logons - cada logon deve ter uma credencial exclusiva.

    Modifique o script Transact-SQL abaixo das seguintes maneiras:

    • Edite o argumento IDENTITY (DocsSampleEKMKeyVault) para apontar para o Cofre de Chaves do Azure.

    • Substitua a primeira parte do SECRET argumento pela ID do cliente Microsoft Entra da Etapa 1: configurar o modelo de autenticação. Nesse exemplo, a ID do Cliente é d956f6b9xxxxxxx.

      Importante

      Remova os hifens da ID do aplicativo (cliente).

    • Conclua a segunda parte do SECRET argumento com o Segredo do Cliente da Etapa 1. A string final é uma longa sequência de letras e números sem hífens (exceto quaisquer hífens no próprio Client Secret).

    USE master;
    CREATE CREDENTIAL sysadmin_ekm_cred
       -- Set IDENTITY to the vault name (public Azure) or full vault hostname without https:// (sovereign clouds / Managed HSM)
       -- See https://dotnet.territoriali.olinfo.it/azure/key-vault/general/about-keys-secrets-certificates#dns-suffixes-for-base-url
       WITH IDENTITY = 'DocsSampleEKMKeyVault',
             --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret-->
       SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
    -- Add the credential to the SQL Server administrator's domain login
    ALTER LOGIN [<domain>\<login>]
        ADD CREDENTIAL sysadmin_ekm_cred;
    

    Para obter um exemplo de como usar variáveis e remover hifens programaticamente da ID do cliente, consulte CREATE CREDENTIAL.

  5. Abra a chave Azure Key Vault em sua instância de SQL Server.

    Se você criou uma nova chave ou importou uma chave assimétrica na Etapa 2: Criar um cofre de chaves, abra a chave em SQL Server usando CREATE ASYMMETRIC KEY.

    Importante

    Conclua os pré-requisitos do Registro antes de executar esta etapa.

    Nos seguintes exemplos:

    • Substitua EKMSampleASYKey pelo nome que você deseja usar no SQL Server.
    • Substitua ContosoRSAKey0 pelo nome da chave em Azure Key Vault ou HSM Gerenciado.

    Use um nome de chave sem versão (recomendado para a maioria dos cenários):

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    Use uma versão de chave específica quando precisar fixar operações em uma versão:

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    Neste exemplo, 1a4d3b9b393c4678831ccc60def75379 é a versão de chave específica que SQL Server usa para operações de banco de dados.

  6. Crie um novo logon usando a chave assimétrica no SQL Server que você criou na etapa anterior.

    -- Create a login that associates the asymmetric key with this login
    CREATE LOGIN TDE_Login
        FROM ASYMMETRIC KEY EKMSampleASYKey;
    
  7. Mova o mapeamento de credenciais do logon do administrador original para o logon criado a partir da chave assimétrica.

    SQL Server usa o logon criado a partir da chave assimétrica (TDE_Login) para operações EKM. Para garantir que SQL Server possa acessar Azure Key Vault durante operações de criptografia e recuperação, mapeie a credencial paraTDE_Login, em vez do logon de instalação original.

    -- Remove the service principal credential from the original setup login
    ALTER LOGIN [<domain>\<login>]
       DROP CREDENTIAL sysadmin_ekm_cred;
    
    -- Map the service principal credential to the login created from the asymmetric key
    ALTER LOGIN TDE_Login
       ADD CREDENTIAL sysadmin_ekm_cred;
    

Fase 2: Criptografar e validar o banco de dados do usuário

Configure o banco de dados de usuário para ser criptografado

  1. Crie um banco de dados de teste para criptografar usando a chave Azure Key Vault.

    -- Create a test database for the TDE example.
    CREATE DATABASE TestTDE;
    
  2. Crie uma chave de criptografia de banco de dados usando a chave assimétrica do servidor (EKMSampleASYKey).

    USE TestTDE;
    -- Create a DEK protected by the EKM asymmetric key.
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_256
    ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
    
  3. Habilite o TDE no banco de dados definindo ENCRYPTION ON.

    -- Enable TDE for the database.
    ALTER DATABASE TestTDE
        SET ENCRYPTION ON;
    

Verificar o uso da chave e o estado de criptografia

  1. master No banco de dados, execute a consulta Transact-SQL a seguir para verificar se a chave assimétrica EKM existe e capturar sua impressão digital.

    SELECT name,
           algorithm_desc,
           thumbprint
    FROM sys.asymmetric_keys;
    

    A instrução retorna uma saída semelhante à seguinte:

    name            algorithm_desc    thumbprint
    EKMSampleASYKey RSA_2048          <key thumbprint>
    
  2. No banco de dados do usuário (TestTDE), execute a consulta Transact-SQL a seguir para verificar se o TDE está habilitado e se a chave de criptografia do banco de dados está protegida por uma chave assimétrica.

    SELECT encryptor_type,
           encryption_state_desc,
           encryptor_thumbprint
    FROM sys.dm_database_encryption_keys
    WHERE database_id = DB_ID('TestTDE');
    

    A instrução retorna uma saída semelhante à seguinte:

    encryptor_type encryption_state_desc encryptor_thumbprint
    ASYMMETRIC KEY ENCRYPTED             <key thumbprint>
    

    Confirme se encryptor_thumbprint corresponde à impressão digital retornada de sys.asymmetric_keys. Uma incompatibilidade geralmente indica que a chave de criptografia do banco de dados é protegida por uma chave diferente do esperado.

Limpeza

Use as etapas de limpeza que correspondem ao modelo de autenticação configurado.

  1. Limpe os objetos de teste que você criou neste procedimento.

    -- CLEAN UP: shared objects + service principal credential
    USE master;
    GO
    ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DROP DATABASE [TestTDE];
    GO
    
    DROP LOGIN [TDE_Login];
    GO
    
    DROP ASYMMETRIC KEY [EKMSampleASYKey];
    DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM];
    GO
    
    DROP CREDENTIAL [sysadmin_ekm_cred];
    GO
    
  2. Examine se você deve remover a chave do SQL Server Cryptographic Provider Registro.

    Importante

    A SQL Server Cryptographic Provider chave do Registro não é removida automaticamente depois que você exclui as chaves EKM.

    Exclua essa chave do Registro somente quando você não precisar mais de EKM na instância. Excluí-lo cedo demais pode comprometer o funcionamento do EKM e as operações de recuperação.

    Caminho do registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider

Rotacionar chaves assimétricas para TDE com Azure Key Vault

Use um guia operacional dedicado para etapas de rotação de chaves, incluindo scripts específicos de autenticação, verificação e verificações de segurança:

Importante

Não exclua as versões anteriores da chave após uma rotação. Versões anteriores ainda podem ser necessárias para restaurar backups, arquivos de log e artefatos de recuperação mais antigos.