Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Este artigo mostra como efetuar manualmente a rotação da chave assimétrica utilizada pelo Encriptação de Dados Transparente (TDE) com o Extensible Key Management (EKM) e o Azure Key Vault.
Use este procedimento depois de configurar o TDE com o Azure Key Vault. Para instruções iniciais de configuração, consulte Configurar Encriptação de Dados Transparente com Azure Key Vault for SQL Server.
Importante
O SQL Server não faz automaticamente a rotação da chave assimétrica usada para TDE. A rotação é uma operação manual.
A rotação do protetor lógico do TDE é uma operação online e normalmente conclui-se rapidamente, porque o SQL Server reencripta apenas a chave de encriptação da base de dados (DEK), e não toda a base de dados.
Não apague versões anteriores de chaves após a rotação. Versões anteriores podem ainda ser necessárias para restaurar backups antigos, registos de transações ou outros artefactos de recuperação.
Prerequisites
- Completar a configuração inicial do EKM e TDE.
- Verifique se o SQL Server consegue atualmente aceder ao cofre de chaves.
- Certifique-se de que tem permissões para criar credenciais, logins e chaves assimétricas no SQL Server.
- Certifique-se de que o seu modelo de autenticação continua válido:
- Princípio de serviço: o registo da aplicação e o segredo do cliente são válidos.
- Identidade gerida: a identidade gerida do SQL Server continua ativada e tem as permissões de chave necessárias.
Girar a chave
Escolha o seu modelo de autenticação e siga os passos correspondentes.
No Azure Key Vault ou no Managed HSM, rode a chave:
- Criar uma nova versão do mesmo nome de chave, ou
- Crie um novo nome de chave.
No SQL Server, cria 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;Adicione a credencial ao princípio de configuração que cria a próxima chave assimétrica.
ALTER LOGIN [<domain>\<login>] ADD CREDENTIAL [<new_credential_name>];Crie a nova chave assimétrica do SQL Server a partir do Azure Key Vault.
Note
Para rotação manual, o SQL Server suporta tanto um nome de chave sem versão como uma referência de chave versionada:
- Sem versão: usar
<key_name>para permitir que o SQL Server use a versão de chave mais alta disponível no Azure Key Vault. - Versionado: usar
<key_name>/<version>para fixar operações de encriptação a uma versão específica da chave.
Não precisa de criar um nome de chave AKV diferente para efetuar a rotação. Roda as chaves criando uma nova versão da chave e depois criando uma nova chave assimétrica do SQL Server que faça referência à forma sem versão ou versionada.
Use um nome de chave sem versão ou uma versão específica da chave:
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;- Sem versão: usar
Crie um novo login a partir da nova chave assimétrica.
CREATE LOGIN <new_login_name> FROM ASYMMETRIC KEY <new_ekm_key_name>;Mude o mapeamento das credenciais do login de configuração para o novo login assimétrico.
ALTER LOGIN [<domain>\<login>] DROP CREDENTIAL [<new_credential_name>]; ALTER LOGIN <new_login_name> ADD CREDENTIAL [<new_credential_name>];Reencripte a chave de encriptação da base de dados (DEK) 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
Verifique os metadados de encriptação para a base de dados.
SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint FROM sys.dm_database_encryption_keys WHERE database_id = DB_ID('<database_name>');Verifique a impressão digital assimétrica da chave do SQL Server.
SELECT name, algorithm_desc, thumbprint FROM sys.asymmetric_keys WHERE name = '<new_ekm_key_name>';Confirma que as impressões digitais coincidem.