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 encriptação do SQL Server que utilizam uma chave assimétrica protegida pelo Azure Key Vault enquadram-se nas seguintes três áreas:
- Encriptação de dados transparentes (TDE) utilizando uma chave assimétrica do Azure Key Vault.
- Encriptar backups usando uma chave assimétrica do cofre de chaves.
- Encriptação ao nível das colunas usando uma chave assimétrica do cofre de chaves.
Complete os passos 1 a 4 do Set up Encriptação de Dados Transparente with Azure Key Vault for SQL Server antes de seguir os passos deste artigo.
Observação
As versões 1.0.0.440 e anteriores são substituídas e já não são suportadas em ambientes de produção. Atualize para a versão 1.0.1.0 ou posterior. Descarregue a versão atual do Centro de Transferências da Microsoft e siga as instruções na secção "Atualização do SQL Server Connector" da manutenção e resolução de problemas do SQL Server Connector.
Observação
Microsoft Entra ID era anteriormente conhecido como Azure Ative Directory (Azure AD).
Encriptação de dados transparente usando uma chave assimétrica do Azure Key Vault
Depois de completar os passos 1 a 4 do configurar Encriptação de Dados Transparente com o Azure Key Vault para o SQL Server, utilize a chave do Azure Key Vault para encriptar a chave de encriptação da base de dados com TDE. Para mais informações sobre rotação de chaves usando PowerShell, veja Rodar o protetor do Encriptação de Dados Transparente (TDE) usando PowerShell.
Importante
Não elimine as versões anteriores da chave após o rollover. Quando as chaves são renovadas, alguns dados continuam encriptados com as chaves anteriores, como backups de bases de dados antigos, ficheiros de registo de cópias de segurança e ficheiros de registo de transações.
Precisa de criar uma credencial e um login, e criar uma chave de encriptação da base de dados que encripte os dados e os logs de transações na base de dados. Encriptar uma base de dados requer CONTROL permissão sobre a base de dados. O gráfico seguinte mostra a hierarquia da chave de encriptação quando se utiliza o Azure Key Vault.
Criar uma credencial do SQL Server para ser usada pelo Mecanismo de Banco de Dados para o TDE
O Database Engine utiliza as credenciais da aplicação Microsoft Entra para aceder ao cofre de chaves durante o carregamento da base de dados. Para limitar as permissões do cofre de chaves que atribui, crie outro Client ID e Secret, conforme descrito no Passo 1: Configurar o modelo de autenticação, para o Database Engine.
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 Azureglobal, substitua o argumento
IDENTITYpelo nome do seu cofre de chaves do Azure a partir do Passo 2: Criar um cofre de chaves. - Se estiver a usar uma cloud Azure privada, por exemplo Azure Government, Azure operado pela 21Vianet ou Azure Alemanha, substitua o argumento
IDENTITYpelo URI do Vault devolvido em Criar um cofre de chaves e uma chave com o PowerShell. Não incluahttps://no URI do cofre de chaves.
- Se estiver a utilizar Azureglobal, substitua o argumento
Substitua a primeira parte do
SECRETargumento pelo ID do Cliente da aplicação Microsoft Entra do Passo 1: Configurar o modelo de autenticação. Neste exemplo, a ID do Cliente éEF5C8E094D2A4A769998D93440D8115D.Importante
Você deve remover os hífenes do ID de Cliente.
Complete a segunda parte do
SECRETargumento com o Client Secret do passo 1. Neste exemplo, o Segredo do Cliente éReplaceWithAADClientSecret.A sequência final do
SECRETargumento é uma longa sequência de letras e números, sem hífens.
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 ; GOCriar a chave de encriptação da base de dados (DEK)
O DEK encripta os seus dados e ficheiros de registo na instância da base de dados e, por sua vez, é encriptado pela chave assimétrica do Azure Key Vault. Pode criar o DEK usando qualquer algoritmo ou comprimento de chave que o SQL Server suporte.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GOAtivar o TDE
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GOUsando o Management Studio, verifique se o TDE está ativado ligando-se à sua base de dados com o Object Explorer. Clique com o botão direito na sua base de dados, aponte para Tasks e depois selecione Manage Database Encryption.
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.
Encriptar 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 seguinte cria e restaura um backup encriptado com uma chave de encriptação de dados que a chave assimétrica no cofre de chaves protege.
O Database Engine utiliza as credenciais da aplicação Microsoft Entra para aceder ao cofre de chaves durante o carregamento da base de dados. Para limitar as permissões do cofre de chaves que concede, crie outro ID de Cliente e Segredo, conforme descrito no Passo 1: Configurar o modelo de autenticação, para o Database Engine.
Crie uma credencial SQL Server para o Database Engine usar para encriptação de backups
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 Azureglobal, substitua o argumento
IDENTITYpelo nome do seu cofre de chaves do Azure a partir do Passo 2: Criar um cofre de chaves. - Se estiveres a usar uma cloud Azure privada, por exemplo Azure Government, Microsoft Azure operado pela 21Vianet, ou Azure Alemanha, substitui o
IDENTITYargumento pelo URI do Vault devolvido em Create a key vault and key by using PowerShell. Não incluahttps://no URI do cofre de chaves.
- Se estiver a utilizar Azureglobal, substitua o argumento
Substitua a primeira parte do argumento
SECRETpelo Client ID da aplicação Microsoft Entra do Passo 1: Configurar o modelo de autenticação. Neste exemplo, a ID do Cliente éEF5C8E094D2A4A769998D93440D8115D.Importante
Você deve remover os hífenes do ID de Cliente.
Complete a segunda parte do
SECRETargumento com o Segredo do Cliente do passo 1. Neste exemplo, o Segredo do Cliente éReplace-With-AAD-Client-Secret. A sequência final doSECRETargumento é uma longa sequência de letras e números, sem hífens.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;
Crie um login SQL Server para o Database Engine para encriptação 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 pode usar a mesma chave assimétrica para encriptação de backup se já usou essa chave para TDE (o exemplo anterior), ou para encriptação ao nível das colunas (o exemplo seguinte).
Este exemplo utiliza a chave assimétrica
CONTOSO_KEY_BACKUParmazenada no cofre de chaves, que pode ter importado ou criado anteriormente para amasterbase de dados, conforme descrito no Passo 2: Criar um cofre de chaves.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 ; GOFaça backup da base de dados
Faça backup da base de dados, especificando a encriptação com a chave assimétrica armazenada no cofre de chaves.
No exemplo seguinte, note-se que se a base de dados já estivesse encriptada com TDE, e a chave assimétrica
CONTOSO_KEY_BACKUPfosse diferente da chave assimétrica TDE, o backup é encriptado tanto pela chave assimétrica TDE como porCONTOSO_KEY_BACKUP. A instância do SQL Server de destino precisa de ambas as chaves para desencriptar 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]); GORestaurar a base de dados
Para restaurar uma cópia de segurança de base de dados encriptada com TDE, a instância do SQL Server de destino deve primeiro ter uma cópia da chave assimétrica do cofre de chaves usada para encriptação. Para fornecer essa cópia:
Se a chave assimétrica original usada para TDE já não estiver no cofre de chaves, restaure o backup da chave do cofre de chaves ou reimporte a chave de um HSM local. Para que a impressão digital da chave corresponda à impressão digital registada na cópia de segurança da base de dados, a chave deve usar o mesmo nome de chave do cofre de chaves que tinha originalmente.
Aplique os passos 1 e 2 na instância de SQL Server de destino.
Depois de a instância do SQL Server de destino ter acesso às chaves assimétricas usadas para encriptar o backup, restaure a base 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; GOPara mais informações sobre opções de backup, consulte BACKUP (Transact-SQL).
Encriptação ao nível das colunas usando uma chave assimétrica do cofre de chaves
O exemplo a seguir cria uma chave simétrica protegida pela chave assimétrica no cofre de chaves. A chave simétrica encripta então os dados na base de dados.
Importante
Não podes usar a mesma chave assimétrica para encriptação ao nível das colunas se já usaste essa chave para encriptação de backup.
Este exemplo utiliza a CONTOSO_KEY_COLUMNS chave assimétrica armazenada no cofre de chaves, que pode ter importado ou criado anteriormente, conforme descrito no Passo 2: Criar um cofre de chaves. Para usar esta chave assimétrica na ContosoDatabase base de dados, execute novamente a CREATE ASYMMETRIC KEY instrução para dar à ContosoDatabase base de dados 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;