Girar chaves assimétricas para TDE usando Azure Key Vault em SQL Server

Aplica-se a:SQL Server

Este artigo mostra como girar manualmente a chave assimétrica usada por Transparent Data Encryption (TDE) com EKM (Gerenciamento extensível de chaves) e Azure Key Vault.

Use este procedimento depois de configurar o TDE com Azure Key Vault. Para obter instruções iniciais de instalação, consulte Configurar Transparent Data Encryption com Azure Key Vault para SQL Server.

Importante

SQL Server não gira automaticamente a chave assimétrica usada para TDE. Rotação é uma operação manual.

Girar o protetor de TDE lógico é uma operação online e geralmente é concluída rapidamente, pois SQL Server criptografa novamente apenas a DEK (chave de criptografia de banco de dados), não todo o banco de dados.

Não exclua as versões de chave anteriores após a rotação. Versões anteriores ainda podem ser necessárias para restaurar backups mais antigos, logs de transações ou outros artefatos de recuperação.

Antes de começar

  • Conclua a configuração inicial de EKM e TDE.
  • Verifique se SQL Server atualmente pode acessar o cofre de chaves.
  • Verifique se você tem permissões para criar credenciais, logons e chaves assimétricas no SQL Server.
  • Verifique se o modelo de autenticação ainda é válido:
    • Entidade de serviço: o registro do aplicativo e o segredo do cliente são válidos.
    • Identidade gerenciada: a identidade gerenciada SQL Server ainda está habilitada e tem as permissões de chave necessárias.

Girar a chave

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

  1. Em Azure Key Vault ou HSM Gerenciado, gire a chave:

    • Criar uma nova versão do mesmo nome de chave ou
    • Crie um novo nome de chave.
  2. Em SQL Server, crie uma credencial para a operação de rotação, se necessário.

    CREATE CREDENTIAL <new_credential_name>
       WITH IDENTITY = <key_vault_name_or_uri_without_https>,
       SECRET = '<client_id_without_hyphens><client_secret>'
       FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
  3. Adicione a credencial à entidade de segurança de configuração que cria a próxima chave assimétrica.

    ALTER LOGIN [<domain>\<login>]
       ADD CREDENTIAL [<new_credential_name>];
    
  4. Crie a nova chave assimétrica SQL Server de Azure Key Vault.

    Note

    Para rotação manual, SQL Server dá suporte a um nome de chave sem versão e a uma referência de chave com versão:

    • Sem versão: use <key_name> para permitir que SQL Server use a versão de chave mais alta disponível no Azure Key Vault.
    • Com versionamento: use <key_name>/<version> para vincular operações de criptografia a uma versão específica da chave.

    Você não precisa criar um nome de chave AKV diferente para rotacionar. Faça a rotação das chaves criando uma nova versão da chave e, em seguida, criando uma nova chave assimétrica do SQL Server que faz referência à forma sem versão ou versionada.

    Use um nome de chave sem versão ou uma versão de chave específica:

    CREATE ASYMMETRIC KEY <new_ekm_key_name>
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = '<key_name_or_key_name/version>',
       CREATION_DISPOSITION = OPEN_EXISTING;
    
  5. Crie um novo logon com base na nova chave assimétrica.

    CREATE LOGIN <new_login_name>
       FROM ASYMMETRIC KEY <new_ekm_key_name>;
    
  6. Mova o mapeamento de credenciais do logon de instalação para o novo logon de chave assimétrica.

    ALTER LOGIN [<domain>\<login>]
       DROP CREDENTIAL [<new_credential_name>];
    
    ALTER LOGIN <new_login_name>
       ADD CREDENTIAL [<new_credential_name>];
    
  7. Criptografar novamente a DEK (chave de criptografia de banco de dados) usando a nova chave assimétrica.

    USE [<database_name>];
    GO
    ALTER DATABASE ENCRYPTION KEY
       ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
    

Verificar rotação

  1. Verifique os metadados de criptografia do banco de dados.

    SELECT encryptor_type,
           encryption_state_desc,
           encryptor_thumbprint
    FROM sys.dm_database_encryption_keys
    WHERE database_id = DB_ID('<database_name>');
    
  2. Verifique a impressão digital da chave assimétrica do SQL Server.

    SELECT name,
           algorithm_desc,
           thumbprint
    FROM sys.asymmetric_keys
    WHERE name = '<new_ekm_key_name>';
    
  3. Confirme se as impressões digitais correspondem.