Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Le attività comuni di crittografia di SQL Server che utilizzano una chiave asimmetrica protetta da Azure Key Vault rientrano nelle seguenti tre aree:
- Crittografia trasparente dei dati (TDE) utilizzando una chiave asimmetrica di Azure Key Vault.
- Crittografare i backup utilizzando una chiave asimmetrica dal vault delle chiavi.
- Crittografia a livello di colonna utilizzando una chiave asimmetrica dal vault delle chiavi.
Completa i passaggi da 1 a 4 di Set up Transparent Data Encryption with Azure Key Vault for SQL Server prima di seguire i passaggi di questo articolo.
Nota
Le versioni 1.0.0.440 e precedenti sono state sostituite e non sono più supportate negli ambienti di produzione. Aggiorna alla versione 1.0.1.0 o successiva. Scarica la versione attuale dal Area download Microsoft e segui le istruzioni nella sezione "Aggiornamento di SQL Server Connector" di manutenzione e risoluzione dei problemi di SQL Server Connector.
Nota
Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).
Crittografia trasparente dei dati utilizzando una chiave asimmetrica di Azure Key Vault
Dopo aver completato i passaggi da 1 a 4 di configurare Transparent Data Encryption con Azure Key Vault for SQL Server, usa la chiave Azure Key Vault per criptare la chiave di crittografia del database con TDE. Per maggiori informazioni sulla rotazione delle chiavi usando PowerShell, consulta Ruotare il sistema di protezione di Transparent Data Encryption (TDE) usando PowerShell.
Importante
Non eliminare le versioni precedenti della chiave dopo il rollover. Quando le chiavi vengono ruotate, alcuni dati sono ancora criptati con le chiavi precedenti, come backup di database più vecchi, file di log salvati e file di log delle transazioni.
Devi creare una credenziale e un account di accesso, e creare una chiave di crittografia del database che crittografi i dati e il log delle transazioni nel database. Crittare un database richiede il permesso CONTROL sul database. Il grafico seguente mostra la gerarchia della chiave di crittografia quando si utilizza Azure Key Vault.
Creare credenziali di SQL Server per il motore di database da usare per TDE
Il motore di database utilizza le credenziali dell'applicazione Microsoft Entra per accedere al vault delle chiavi durante il caricamento del database. Per limitare i permessi di archivio delle chiavi che concedi, crea un altro Client ID e Secret, come descritto nel Passo 1: Configura il modello di autenticazione, per il motore di database.
Modificare lo script Transact-SQL sottostante nei modi seguenti:
Modificare l'argomento
IDENTITY(ContosoDevKeyVault) in modo che punti all'Azure Key Vault.- Se si usa Azure globale, sostituire l'argomento
IDENTITYcon il nome del proprio Azure Key Vault specificato in Passaggio 2: Creare un insieme di credenziali delle chiavi di Azure. - Se usi un cloud Azure privato, ad esempio Azure per enti pubblici, Azure gestito da 21Vianet o Azure Germania, sostituisci l'
IDENTITYargomento con l'URI del Vault restituito in Create a Key Vault and Key usando PowerShell. Non includerehttps://nell'URI dell'archivio di chiavi.
- Se si usa Azure globale, sostituire l'argomento
Sostituisci la prima parte dell'argomento
SECRETcon l'ID del client dell'applicazione Microsoft Entra dal Passo 1: Configura il modello di autenticazione. In questo esempio l'ID client èEF5C8E094D2A4A769998D93440D8115D.Importante
È necessario rimuovere i trattini dall' ID Client.
Completa la seconda parte dell'argomento
SECRETcon il Client Secret del passaggio 1. In questo esempio, il Client Secret èReplaceWithAADClientSecret.La stringa finale dell'argomento
SECRETè una lunga sequenza di lettere e numeri, senza trattini.
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;Creare un account di accesso di SQL Server per il motore di database per TDE
Creare un account di accesso di SQL Server e aggiungere le credenziali del Passaggio 1. Questo esempio di Transact-SQL usa la stessa chiave importata in precedenza.
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 ; GOCrea la chiave di crittografia del database (DEK)
Il DEK cripta i tuoi dati e i file di log nell'istanza del database, e a sua volta viene criptato dalla chiave asimmetrica di Azure Key Vault. Puoi creare il DEK usando qualsiasi algoritmo o lunghezza di chiave supportata da SQL Server.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GOAttiva il TDE
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GOUtilizzando Management Studio, verifica che TDE sia attivato collegandoti al tuo database con Esplora oggetti. Clicca con il tasto destro sul database, punta a Tasks e poi seleziona Gestisci la crittografia del database.
Nella finestra di dialogo Gestisci crittografia del database confermare che TDE è attivo e specificare la chiave asimmetrica che sta crittografando DEK.
In alternativa, è possibile eseguire lo script Transact-SQL seguente. Uno stato di crittografia 3 indica un database crittografato.
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;Nota
Il database
tempdbviene crittografato automaticamente ogni volta che un database abilita TDE.
Crittografare i backup utilizzando una chiave asimmetrica dal vault delle chiavi
I backup crittografati sono supportati a partire da SQL Server 2014 (12.x). Il seguente esempio crea e ripristina un backup criptato con una chiave di crittografia dati che la chiave asimmetrica nel vault delle chiavi protegge.
Il motore di database utilizza le credenziali dell'applicazione Microsoft Entra per accedere al vault delle chiavi durante il caricamento del database. Per limitare i permessi di archivio delle chiavi che concedi, crea un altro ID client e segreto, come descritto nel Passo 1: Configura il modello di autenticazione, per il motore di database.
Crea una credenziale SQL Server per il motore di database da utilizzare per la crittografia dei backup
Modificare lo script Transact-SQL sottostante nei modi seguenti:
Modificare l'argomento
IDENTITY(ContosoDevKeyVault) in modo che punti all'Azure Key Vault.- Se si usa Azure globale, sostituire l'argomento
IDENTITYcon il nome del proprio Azure Key Vault specificato in Passaggio 2: Creare un insieme di credenziali delle chiavi di Azure. - Se usi un cloud Azure privato, ad esempio Azure per enti pubblici, Microsoft Azure gestito da 21Vianet o Azure Germania, sostituisci l'argomento
IDENTITYcon l'URI del vault restituito in Creare un insieme di credenziali delle chiavi e una chiave con PowerShell. Non includerehttps://nell'URI dell'archivio di chiavi.
- Se si usa Azure globale, sostituire l'argomento
Sostituisci la prima parte dell'argomento
SECRETcon l'ID del client dell'applicazione Microsoft Entra dal Passo 1: Configura il modello di autenticazione. In questo esempio l'ID client èEF5C8E094D2A4A769998D93440D8115D.Importante
È necessario rimuovere i trattini dall' ID Client.
Completa la seconda parte dell'argomento
SECRETcon il Client Secret del passaggio 1. In questo esempio, il Client Secret èReplace-With-AAD-Client-Secret. La stringa finale dell'argomentoSECRETè una lunga sequenza di lettere e numeri, senza trattini.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;
Crea un login SQL Server per il motore di database per la crittografia di backup
Creare un account di accesso di SQL Server da usare dal motore di database per i backup di crittografia e aggiungervi le credenziali del passaggio 1. Questo esempio di Transact-SQL usa la stessa chiave importata in precedenza.
Importante
Non puoi usare la stessa chiave asimmetrica per la crittografia di backup se già l'hai usata per TDE (l'esempio precedente), o per la crittografia a livello di colonna (l'esempio seguente).
Questo esempio utilizza la
CONTOSO_KEY_BACKUPchiave asimmetrica memorizzata nel key vault, che puoi importare o creare in precedenza per il databasemaster, come descritto nel Passo 2: Crea un key vault.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 ; GOFai il backup del database
Fai il backup del database, specificando la crittografia con la chiave asimmetrica archiviata nel key vault.
Nel seguente esempio, si noti che se il database era già criptato con TDE, e la chiave asimmetrica
CONTOSO_KEY_BACKUPè diversa da quella TDE, il backup è criptato sia dalla chiave asimmetrica TDE sia daCONTOSO_KEY_BACKUP. L'istanza di SQL Server di destinazione ha bisogno di entrambe le chiavi per decifrare il 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]); GORipristina il database
Per ripristinare un backup del database criptato con TDE, l'istanza di SQL Server di destinazione deve prima avere una copia della chiave asimmetrica del vault utilizzata per la crittografia. Per fornire quella copia:
Se la chiave asimmetrica originale usata per il TDE non è più nel vault delle chiavi, ripristina il backup della chiave del vault o reimporta la chiave da un HSM locale. Affinché l'impronta digitale della chiave corrisponda a quella registrata nel backup del database, la chiave deve utilizzare il nome della chiave del vault delle chiavi originario.
Applica i passaggi 1 e 2 all'istanza target di SQL Server.
Dopo che l'istanza di SQL Server di destinazione ha accesso alle chiavi asimmetriche usate per criptare il backup, ripristina il database sul server.
Esempio del codice di ripristino:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GOPer altre informazioni sulle opzioni di backup, vedere BACKUP (Transact-SQL).
Crittografia a livello di colonna utilizzando una chiave asimmetrica dal Key Vault
L'esempio seguente crea una chiave simmetrica protetta dalla chiave asimmetrica nel servizio di gestione delle chiavi. La chiave simmetrica quindi cripta i dati nel database.
Importante
Non puoi usare la stessa chiave asimmetrica per la crittografia a livello di colonna se già hai usato quella chiave per la crittografia di backup.
Questo esempio utilizza la CONTOSO_KEY_COLUMNS chiave asimmetrica memorizzata nell'insieme di credenziali delle chiavi, che puoi importare o creare in precedenza, come descritto nel Passo 2: Crea un insieme di credenziali delle chiavi. Per utilizzare questa chiave asimmetrica nel ContosoDatabase database, esegui nuovamente l'istruzione CREATE ASYMMETRIC KEY per dare al ContosoDatabase database un riferimento alla chiave.
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;