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
As atividades comuns de criptografia do SQL Server usando uma chave assimétrica protegida pelo Cofre de Chaves do Azure incluem as três áreas a seguir.
Criptografia de dados transparente usando uma chave assimétrica do Cofre de Chaves do Azure
Cifrando backups usando uma chave assimétrica do Cofre de Chaves
Criptografia ao nível de coluna usando uma chave assimétrica do Azure Key Vault
Conclua as partes I a IV do tópico Etapas de instalação para gerenciamento extensível de chaves usando o Cofre de Chaves do Azure, antes de seguir as etapas neste tópico.
Observação
As versões 1.0.0.440 e anteriores foram substituídas e não são mais suportadas em ambientes de produção. Atualize para a versão 1.0.1.0 ou posterior visitando o Centro de Download da Microsoft e usando as instruções na página SQL Server Connector Maintenance & Troubleshooting em "Atualização do SQL Server Connector".
Observação
Microsoft Entra ID era anteriormente conhecido como Azure Ative Directory (Azure AD).
Criptografia de dados transparente usando uma chave assimétrica do Cofre de Chaves do Azure
Depois de concluir as Partes I a IV do tópico Etapas de configuração para gerenciamento extensível de chaves usando o Cofre de Chaves do Azure, use a chave do Cofre de Chaves do Azure para criptografar a chave de criptografia do banco de dados usando TDE. Para obter mais informações sobre como girar chaves usando o PowerShell, consulte Girar o protetor TDE (Criptografia de Dados Transparente) usando o PowerShell.
Importante
Não exclua versões anteriores da chave após uma troca. Quando as chaves são substituídas, alguns dados ainda são cifrados com as chaves anteriores, como backups mais antigos de bases de dados, ficheiros de log de backups e ficheiros de log de transações.
Você precisará criar uma credencial e um login, e criar uma chave de criptografia de banco de dados que criptografará os dados e logs no banco de dados. Para criptografar um banco de dados, é necessário ter a permissão CONTROL no banco de dados. O gráfico a seguir mostra a hierarquia da chave de criptografia ao usar o Cofre de Chaves do Azure.
Criar uma credencial do SQL Server para ser usada pelo Mecanismo de Banco de Dados para o TDE
O Mecanismo de Banco de Dados usa as credenciais do aplicativo Microsoft Entra para acessar o Cofre da Chave durante o carregamento do banco de dados. Recomendamos a criação de outro ID do Cliente e Secreto , conforme descrito na Etapa 1, para o Mecanismo de Banco de Dados, para limitar as permissões concedidas pelo Cofre de Chaves.
Modifique o script Transact-SQL abaixo das seguintes maneiras:
Edite o argumento
IDENTITY
(ContosoDevKeyVault
) para apontar para o seu Cofre de Chaves do Azure.- Se estiver a utilizar global do Azure , substitua o argumento
IDENTITY
pelo nome do seu Cofre de Chaves do Azure da Parte II. - Se estiveres a usar uma nuvem privada do Azure (por exemplo, Azure Government, Azure operado pela 21Vianet, ou Azure Germany), substitui o argumento
IDENTITY
pelo URI do Vault retornado na Parte II, passo 3. Não inclua "https://" no URI do Vault.
- Se estiver a utilizar global do Azure , substitua o argumento
Substitua a primeira parte do argumento
SECRET
pelo aplicativo Microsoft Entra ID do Cliente de Etapa 1. Neste exemplo, a ID do Cliente éEF5C8E094D2A4A769998D93440D8115D
.Importante
Você deve remover os hífenes do ID de Cliente.
Conclua a segunda parte do argumento
SECRET
com o Segredo do Cliente da Parte I. Neste exemplo, o Segredo do Cliente da Parte 1 éReplaceWithAADClientSecret
.A cadeia de caracteres final para o argumento SECRET será uma longa sequência de letras e números, sem hífenes.
USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Criar um logon do SQL Server para o Mecanismo de Banco de Dados para TDE
Crie um logon do SQL Server e adicione a credencial da Etapa 1 a ele. Este exemplo Transact-SQL usa a mesma chave que foi importada anteriormente.
USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it loads a database -- encrypted by TDE. CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the TDE Login to add the credential for use by the -- Database Engine to access the key vault ALTER LOGIN TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GO
Criar a chave de criptografia de banco de dados (DEK)
O DEK criptografará seus dados e arquivos de log na instância do banco de dados e, por sua vez, será criptografado pela chave assimétrica do Cofre da Chave do Azure. O DEK pode ser criado usando qualquer algoritmo ou comprimento de chave com suporte do SQL Server.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO
Ativar o TDE
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GO
Usando o Management Studio, verifique se a TDE foi ativada conectando-se ao seu banco de dados com o Pesquisador de Objetos. Clique com o botão direito do rato na base de dados, aponte para Tarefase, em seguida, clique em Gerir Encriptação de Base de Dados.
Na caixa de diálogo Gerenciar Criptografia de Banco de Dados, confirme se a TDE está ativada e qual chave assimétrica está criptografando a DEK.
Como alternativa, você pode executar o seguinte script Transact-SQL. Um estado de criptografia de 3 indica um banco de dados criptografado.
USE MASTER SELECT * FROM sys.asymmetric_keys -- Check which databases are encrypted using TDE SELECT d.name, dek.encryption_state FROM sys.dm_database_encryption_keys AS dek JOIN sys.databases AS d ON dek.database_id = d.database_id;
Observação
O banco de dados
tempdb
é automaticamente criptografado sempre que qualquer banco de dados habilita a TDE.
Cifrando backups usando uma chave assimétrica do Cofre de Chaves
Há suporte para backups criptografados a partir do SQL Server 2014 (12.x). O exemplo a seguir cria e restaura um backup criptografado, uma chave de criptografia de dados protegida pela chave assimétrica no cofre de chaves.
O Mecanismo de Banco de Dados usa as credenciais do aplicativo Microsoft Entra para acessar o Cofre da Chave durante o carregamento do banco de dados. Recomendamos a criação de outro ID do Cliente e Secreto , conforme descrito na Etapa 1, para o Mecanismo de Banco de Dados, para limitar as permissões concedidas pelo Cofre de Chaves.
Criar uma credencial do SQL Server para o Mecanismo de Banco de Dados para ser usado na Criptografia de Backup
Modifique o script Transact-SQL abaixo das seguintes maneiras:
Edite o argumento
IDENTITY
(ContosoDevKeyVault
) para apontar para o seu Cofre de Chaves do Azure.- Se estiver a utilizar global do Azure , substitua o argumento
IDENTITY
pelo nome do seu Cofre de Chaves do Azure da Parte II. - Se você estiver usando um de nuvem privada do Azure (por exemplo, Azure Government, Microsoft Azure operado pela 21Vianet ou Azure Germany), substitua o argumento
IDENTITY
pelo URI do Vault retornado na Parte II, etapa 3. Não inclua "https://" no URI do Vault.
- Se estiver a utilizar global do Azure , substitua o argumento
Substitua a primeira parte do argumento
SECRET
pelo aplicativo Microsoft Entra ID do Cliente de Etapa 1. Neste exemplo, a ID do Cliente éEF5C8E094D2A4A769998D93440D8115D
.Importante
Você deve remover os hífenes do ID de Cliente.
Conclua a segunda parte do argumento
SECRET
com o Segredo do Cliente da Parte I. Neste exemplo, o Segredo do Cliente . A cadeia de caracteres final para o argumentoSECRET
será uma longa sequência de letras e números, sem hífenes.USE master; CREATE CREDENTIAL Azure_EKM_Backup_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Criar um logon do SQL Server para o Mecanismo de Banco de Dados para Criptografia de Backup
Crie um logon do SQL Server para ser usado pelo Mecanismo de Banco de Dados para backups de criptografia e adicione a credencial da Etapa 1 a ele. Este exemplo Transact-SQL usa a mesma chave que foi importada anteriormente.
Importante
Não é possível usar a mesma chave assimétrica para criptografia de backup se já tiver usado essa chave para TDE (o exemplo acima) ou criptografia em nível de coluna (o exemplo a seguir).
Este exemplo usa a
CONTOSO_KEY_BACKUP
chave assimétrica armazenada no cofre de chaves, que pode ser importada ou criada anteriormente para o banco de dados mestre, como Parte IV, Etapa 5 anteriormente.USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it is encrypting the backup. CREATE LOGIN Backup_Login FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP; GO -- Alter the Encrypted Backup Login to add the credential for use by -- the Database Engine to access the key vault ALTER LOGIN Backup_Login ADD CREDENTIAL Azure_EKM_Backup_cred ; GO
Backup do banco de dados
Faça backup do banco de dados especificando a criptografia com a chave assimétrica armazenada no cofre de chaves.
No exemplo abaixo, observe que, se o banco de dados já foi criptografado com TDE e a chave assimétrica
CONTOSO_KEY_BACKUP
for diferente da chave assimétrica TDE, o backup será criptografado pela chave assimétrica TDE e peloCONTOSO_KEY_BACKUP
. A instância do SQL Server de destino precisará de ambas as chaves para descriptografar o backup.USE master; BACKUP DATABASE [DATABASE_TO_BACKUP] TO DISK = N'[PATH TO BACKUP FILE]' WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY_BACKUP]); GO
restaurar o banco de dados
Para restaurar um backup de banco de dados criptografado com TDE, a instância do SQL Server de destino deve primeiro ter uma cópia da chave assimétrica do Cofre da Chave usada para criptografia. Desta forma, conseguir-se-ia:
Se a chave assimétrica original usada para TDE não estiver mais no Cofre da Chave, restaure o backup da chave do Cofre da Chave ou reimporte a chave de um HSM local. Importante: Para que a impressão digital da chave corresponda à impressão digital gravada no backup do banco de dados, a chave deve ser nomeada mesmo nome de chave do Cofre da Chave como foi originalmente nomeado antes.
Aplique as etapas 1 e 2 na instância de destino do SQL Server.
Quando a instância do SQL Server de destino tiver acesso à(s) chave(s) assimétrica(s) usada(s) para criptografar o backup, restaure o banco de dados no servidor.
Exemplo de código de restauração:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GO
Para obter mais informações sobre opções de backup, consulte BACKUP (Transact-SQL).
Criptografia ao nível de coluna usando uma chave assimétrica do Azure Key Vault
O exemplo a seguir cria uma chave simétrica protegida pela chave assimétrica no cofre de chaves. Em seguida, a chave simétrica é usada para criptografar dados no banco de dados.
Importante
Não é possível usar a mesma chave assimétrica para criptografia no nível da coluna se já tiver usado essa chave para criptografia de backup.
Este exemplo usa a chave assimétrica CONTOSO_KEY_COLUMNS
armazenada no cofre de chaves, que pode ser importada ou criada anteriormente, conforme descrito na Etapa 3, seção 3 de Etapas de configuração para gerenciamento extensível de chaves usando o Cofre de Chaves do Azure. Para usar essa chave assimétrica no banco de dados ContosoDatabase
, você deve executar a instrução CREATE ASYMMETRIC KEY
novamente, para fornecer ao banco de dados ContosoDatabase
uma referência à chave.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
DECLARE @DATA VARBINARY(MAX);
--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY
(
KEY_GUID('DATA_ENCRYPTION_KEY'),
CONVERT(VARBINARY,'Plain text data to encrypt')
);
-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));
--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;
Ver também
etapas de configuração para gerenciamento extensível de chaves usando o Azure Key Vault
Gerenciamento extensível de chaves usando o Azure Key Vault
Opção de configuração de servidor com provedor EKM habilitado
Manutenção do SQL Server Connector & solução de problemas