Configurar o Encriptação de Dados Transparente com o Azure Key Vault para o SQL Server

Aplica-se a: SQL Server

Neste artigo, instala e configura o SQL Server Connector para Azure Key Vault, e depois configura o Encriptação de Dados Transparente (TDE) utilizando uma chave no Azure Key Vault.

Prerequisites

Antes de começar a usar o Azure Key Vault com a sua instância do SQL Server, certifique-se de que cumpre os seguintes pré-requisitos:

Note

No SQL Server 2022 (16.x) CU 12 e em versões posteriores, o SQL Server no Linux suporta a Gestão Extensível de Chaves (TDE) com o Azure Key Vault. As etapas 3 e 4 deste guia não são necessárias para o SQL Server no Linux.

Fluxo rápido

  1. Selecione um modelo de autenticação no Passo 1: Configure o modelo de autenticação.
  2. Crie um cofre de chaves e uma chave no Passo 2: Crie um cofre de chaves.
  3. Instale o conector no Passo 3: Instale o SQL Server Connector.
  4. Configure o pré-requisito do registo no Passo 4: Adicionar chave do registo para suportar o fornecedor EKM.
  5. Configure o SQL Server e valide a encriptação no Passo 5: Configure o SQL Server.

Passo 1: Configurar o modelo de autenticação

Importante

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

  • Use o separador principal de serviço para SQL Server on-premises.
  • Use o separador Identidade Gerida para o SQL Server em VMs Azure ou o SQL Server ativado pelo Azure Arc, onde a identidade gerida é suportada.

Matriz de suporte ao modelo de autenticação:

Modelo de autenticação Versão do SQL Server Onde o SQL Server corre Suportado
Serviço principal Versões suportadas abordadas por este artigo On-premises, Azure VM, SQL Server ativado pelo Azure Arc Sim
Identidade gerenciada SQL Server 2022 CU17 e posteriores Azure VM Sim
Identidade gerenciada SQL Server 2025 e posteriores SQL Server ativado pelo Azure Arc Sim
Identidade gerenciada Any On-premises No

Para conceder permissões de acesso à instância do SQL Server ao cofre de chaves do Azure, precisa-se de uma conta principal de serviço no Microsoft Entra ID.

  1. Inicie sessão no portal Azure e siga um dos seguintes passos:

    • Selecione o botão Microsoft Entra ID.

      Captura de ecrã do painel de serviços do Azure.

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

  2. Registe uma candidatura com o Microsoft Entra ID seguindo os seguintes passos. Para obter instruções detalhadas passo a passo, consulte a seção Obter uma identidade para o aplicativo da postagem do blog Azure Key Vault, Azure Key Vault – Step by Step.

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

      Captura de ecrã da página Descrição Geral do Microsoft Entra ID no portal do Azure.

    2. Na página Registos na aplicação, selecione Novo registo.

      Captura de ecrã do painel Registos de aplicações no portal do Azure.

    3. No painel Registrar um aplicativo, insira o nome voltado para o usuário do aplicativo 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 ecrã do painel Certificados & segredos da Aplicação no portal do Azure.

    5. Em Adicionar um segredo do cliente, insira uma descrição e uma expiração apropriada e selecione Adicionar. Não pode escolher um período de validade superior a 24 meses. Para obter mais informações, veja Adicionar um segredo do cliente.

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

    6. No painel de Certificados & Segredos, em Valor, selecione o botão Copiar ao lado do valor do segredo do cliente para o usar e criar uma chave assimétrica no SQL Server.

      Captura de ecrã do valor secreto no portal do Azure.

    7. No painel esquerdo, selecione Visão Geral e depois, na caixa ID da Aplicação (cliente), copie o valor para o usar para criar uma chave assimétrica no SQL Server.

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

Etapa 2: Criar um cofre de chaves

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

Note

Apenas o Azure Key Vault e o Azure Key Vault Managed HSM são suportados. O Azure Cloud HSM não é suportado.

Criar um cofre de chaves usando o portal do Azure

Para criar um cofre de chaves usando o portal Azure, veja Quickstart: Criar um cofre de chaves usando o portal Azure.

Controle de acesso baseado em funções no Azure

Use o controlo de acesso baseado em papéis (RBAC) do Azure para gerir o acesso ao Azure Key Vault. Não uses políticas de acesso legadas. As políticas de acesso legadas têm vulnerabilidades de segurança conhecidas, não suportam Privileged Identity Management (PIM) e não devem ser usadas para dados críticos e cargas de trabalho. Para obter mais informações sobre as permissões RBAC do Cofre de Chaves do Azure, consulte funções internas incorporadas do Azure para operações do plano de dados do Cofre de Chaves.

  1. Vá ao recurso do cofre de chaves que criaste e seleciona a definição Controle de acesso (IAM).

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

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

  3. A aplicação EKM ou identidade gerida precisa da função Key Vault Crypto Service Encryption User para realizar operações de encapsulamento e desencapsulamento. Pesquise por Key Vault Crypto Service Encryption User e selecione a função. Selecione Seguinte.

    Captura de ecrã a mostrar a seleção de uma atribuição de função no portal do Azure.

  4. No separador Membros, selecione a opção Selecionar membros e depois procure a aplicação Microsoft Entra ou identidade gerida que criou no Passo 1. Selecione a aplicação ou identidade gerida e depois o botão Select .

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

  5. Selecione Revisar e atribuir duas vezes para concluir a atribuição de função.

Criar uma chave

O utilizador que cria a chave precisa da função Administrador do Cofre de Chaves. Assim como as etapas anteriores, adicione o membro que está 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. Esta ação abre o painel de Criar uma tecla . Selecione a opção Gerar e insira um nome para a chave. O SQL Server Connector requer que o nome da chave use apenas 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 de chave RSA como 2048 . Atualmente, o EKM suporta apenas uma chave RSA. Defina as datas de ativação e expiração conforme apropriado e defina Ativado como Sim.

    Captura de ecrã do painel Criar chave.

Configurar um Azure Key Vault Managed HSM (opcional)

O Azure Key Vault Managed HSM (Hardware Security Module) suporta SQL Server e SQL Server nas Máquinas Virtuais do Azure (VMs) quando utiliza a versão mais recente do SQL Server Connector e do SQL do Azure. O Managed HSM é um serviço HSM de locatário único, altamente disponível e totalmente gerido. O HSM gerenciado fornece uma base segura para operações criptográficas e armazenamento de chaves. O HSM gerenciado foi projetado para atender aos mais rigorosos requisitos de segurança e conformidade.

O Passo 2 mostra como criar um cofre de chaves e uma chave no Azure Key Vault. Pode, opcionalmente, usar um Azure Key Vault Managed HSM para armazenar ou criar uma chave para o SQL Server Connector. Siga estes passos:

  1. Crie um HSM gerido pelo Azure Key Vault usando o portal Azure, o CLI do Azure, PowerShell ou um template ARM.

  2. Ative o HSM gerenciado. Apenas os administradores designados designados durante a criação podem ativá-la. No portal Azure, selecione o recurso HSM Gerido e depois selecione Download Security Domain no menu Visão Geral. Siga um dos guias de iniciação rápida para ativar o seu HSM gerido.

  3. Conceder permissões ao principal do serviço Microsoft Entra ou identidade gerida para aceder ao HSM Gerido. A função Managed HSM Administrator não concede permissões para criar uma chave. À semelhança do passo 2, a aplicação EKM ou identidade gerida necessita da função Utilizador de Criptografia do HSM Gerido ou da função Utilizador de Encriptação de Serviço de Criptografia do HSM Gerido para realizar operações de encapsulamento e desencapsulamento. Para obter mais informações, consulte funções internas locais do RBAC para 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

    Os algoritmos RSA-HSM_2048 e RSA-HSM_3072 são suportados a partir da Atualização Cumulativa 13 do SQL Server 2022 (16.x).

    O Azure Key Vault Managed HSM suporta rotação automática de chaves. Para obter mais informações, consulte Configurar a rotação automática das chaves no Azure Managed HSM.

    O HSM gerenciado oferece suporte a conexões de ponto de extremidade privadas. Para obter mais informações, consulte Integrar HSM gerido com Azure Private Link. Nesta configuração, deve ativar a opção ignorar serviços fidedignos da Microsoft na definição Rede do Azure Key Vault Managed HSM.

Etapa 3: Instalar o SQL Server Connector

Pede a um administrador do SQL Server para descarregar a versão mais recente do SQL Server Connector para Microsoft Azure Key Vault no Centro de Transferências da Microsoft e executar o instalador.

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

Por padrão, o conector é instalado em C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. Podes mudar esta localização durante a configuração. Se o alterares, ajusta os scripts na secção seguinte.

Uma instalação bem-sucedida instala Microsoft.AzureKeyVaultService.EKM.dll na máquina. Este assembly é a DLL do fornecedor EKM criptográfico. Registe-o no SQL Server usando a CREATE CRYPTOGRAPHIC PROVIDER instrução.

O instalador também oferece scripts de exemplo para encriptação do SQL Server.

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

Etapa 4: Adicionar chave do Registro para dar suporte ao provedor EKM

Warning

Só um administrador do SQL Server que saiba exatamente o que está a fazer deve modificar o registo. Alterações incorretas podem causar problemas graves. Faça uma cópia de segurança do registo antes de fazer qualquer alteração, para poder restaurá-lo caso ocorra algum problema.

  1. Execute regedit para abrir o Editor do Registro.

  2. Crie uma SQL Server Cryptographic Provider chave de registo em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

  3. Clique com o botão direito do rato na chave de registo SQL Server Cryptographic Provider e, em seguida, selecione Permissões.

  4. Atribua Controlo Total na chave SQL Server Cryptographic Provider à conta de utilizador que executa o serviço SQL Server.

    Captura de ecrã da chave de registo EKM no Editor de registo.

  5. Selecione Aplicar e, em seguida, OK.

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

    Note

    Se utilizar TDE com EKM ou o Azure Key Vault numa instância de cluster de ativação pós-falha, adicione também HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider ao procedimento de ponto de verificação do registo do cluster, para que o registo seja sincronizado entre os nós, o que facilita a recuperação da base de dados após a ativação pós-falha e a rotação de chaves.

    Execute o seguinte comando PowerShell para adicionar a chave do registo à rotina de checkpoint:

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

Etapa 5: Configurar o SQL Server

Para obter uma observação sobre os níveis mínimos de permissão necessários para cada ação nesta seção, consulte B. Perguntas freqüentes.

Fase 1: Configurar o fornecedor e credenciais criptográficas em master

Escolha o seu modelo de autenticação e siga os passos correspondentes.

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

  2. Configure o SQL Server para usar o EKM executando o seguinte script 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 SQL Server Connector como um provedor EKM com o SQL Server.

    Crie um provedor criptográfico usando o SQL Server Connector, que é um provedor EKM para o Cofre de Chaves do Azure. 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 comprimento do caminho do arquivo não pode exceder 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 login que realize encriptação usando uma chave do cofre de chaves. Existe um mapeamento um-para-um entre credenciais e logins – cada login deve ter uma credencial única.

    Modifique esse script Transact-SQL das seguintes maneiras:

    • Edite o argumento IDENTITY (DocsSampleEKMKeyVault) para apontar para o seu Azure Key Vault.

    • Substitua a primeira parte do SECRET argumento pelo Microsoft Entra Client ID do Passo 1: Configurar o modelo de autenticação. Neste exemplo, o ID do Cliente é d956f6b9xxxxxxx.

      Importante

      Remova os hífens do ID da App (Cliente).

    • Complete a segunda parte do SECRET argumento com o Segredo do Cliente do Passo 1. A sequência final é uma longa sequência de letras e números sem hífens (exceto os hífens que possam existir no próprio Segredo do Cliente).

    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://learn.microsoft.com/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 um exemplo de utilização de variáveis e remoção programática de hífens do ID do cliente, veja CREATE CREDENTIAL.

  5. Abra a chave do Azure Key Vault na sua instância do SQL Server.

    Quer tenha criado uma nova chave ou importado uma chave assimétrica no Passo 2: Crie um cofre de chaves, abra a chave no SQL Server usando CREATE ASYMMETRIC KEY.

    Importante

    Preencha os pré-requisitos do registo antes de realizar este passo.

    Nos seguintes exemplos:

    • Substitui EKMSampleASYKey pelo nome que queres usar no SQL Server.
    • Substitua ContosoRSAKey0 pelo seu nome de chave no Azure Key Vault ou Managed HSM.

    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 específica da chave quando precisar de fixar operações a 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 específica da chave que o SQL Server utiliza para operações de base 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. Mover o mapeamento de credenciais do login original do administrador para o login criado a partir da chave assimétrica.

    O SQL Server utiliza o login criado a partir da chave assimétrica (TDE_Login) para operações EKM. Para garantir que o SQL Server pode aceder ao Azure Key Vault durante operações de encriptação e recuperação, mapeie a credencial para TDE_Login o login original da configuração em vez do 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: Encriptar e validar a base de dados do utilizador

Configurar o banco de dados de usuários para ser criptografado

  1. Crie uma base de dados de teste para encriptar usando a chave do Azure Key Vault.

    -- Create a test database for the TDE example.
    CREATE DATABASE TestTDE;
    
  2. Crie uma chave de encriptação de base 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. Ative o TDE na base de dados definindo ENCRYPTION ON.

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

Verificar o uso da chave e o estado da encriptação

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

    SELECT name,
           algorithm_desc,
           thumbprint
    FROM sys.asymmetric_keys;
    

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

    name            algorithm_desc    thumbprint
    EKMSampleASYKey RSA_2048          <key thumbprint>
    
  2. Na base de dados do utilizador (TestTDE), execute a seguinte consulta Transact-SQL para verificar se o TDE está ativado e que a chave de encriptação da base 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 devolve uma saída semelhante à seguinte:

    encryptor_type encryption_state_desc encryptor_thumbprint
    ASYMMETRIC KEY ENCRYPTED             <key thumbprint>
    

    Confirme que encryptor_thumbprint coincide com a impressão digital devolvida por sys.asymmetric_keys. Um desajuste indica geralmente que a chave de encriptação da base de dados está protegida por uma chave diferente da esperada.

Limpeza

Use os passos de limpeza que correspondam ao modelo de autenticação que configurou.

  1. Limpa os objetos de teste que criaste 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. Verifique se deve remover a chave de registo SQL Server Cryptographic Provider.

    Importante

    A SQL Server Cryptographic Provider chave do registo não é removida automaticamente depois de apagares as chaves EKM.

    Apague esta chave de registo apenas quando já não precisar de EKM na instância. Eliminá-lo demasiado cedo pode quebrar a funcionalidade do EKM e as operações de recuperação.

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

Efetuar a rotação de chaves assimétricas para TDE com o Azure Key Vault

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

Importante

Não exclua versões anteriores da chave após a rotação. Versões anteriores podem ainda ser necessárias para restaurar backups antigos, ficheiros de registo e artefactos de recuperação.