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à di crittografia di SQL Server comuni che usano una chiave asimmetrica protetta da Azure Key Vault includono le tre aree seguenti.
Transparent Data Encryption utilizzando una chiave asimmetrica da Azure Key Vault
Crittografia dei backup utilizzando una chiave asimmetrica dall'Archivio Chiavi
Crittografia a livello di colonna usando una chiave asimmetrica dall'archivio chiavi
Completare le parti dalla 1 alla 4 dell'argomento Procedura di installazione di Extensible Key Management con l'insieme di credenziali delle chiavi di Azureprima di seguire la procedura di questo argomento.
Nota
Le versioni 1.0.0.440 e precedenti sono state sostituite e non sono più supportate negli ambienti di produzione. Eseguire l'aggiornamento alla versione 1.0.1.0 o successiva visitando l'Area download Microsoft e seguendo le istruzioni nella pagina Manutenzione e risoluzione dei problemi di Connettore SQL Server in "Aggiornamento del Connettore SQL Server".
Nota
Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).
Transparent Data Encryption utilizzando una chiave asimmetrica del Key Vault di Azure
Dopo aver completato le parti dalla 1 alla 4 dell'argomento Procedura di installazione di Extensible Key Management con l'insieme di credenziali delle chiavi di Azure, usare la chiave dell'insieme di credenziali delle chiavi di Azure per crittografare la chiave di crittografia del database con TDE. Per altre informazioni sulla rotazione delle chiavi con PowerShell, vedere Ruotare la protezione TDE (Transparent Data Encryption) con PowerShell.
Importante
Non eliminare le versioni precedenti della chiave dopo il rollover. Quando viene eseguito il rollover delle chiavi, alcuni dati rimangono crittografati con le chiavi precedenti, ad esempio backup di database precedenti, file di log sottoposti a backup e file di log delle transazioni.
È necessario creare le credenziali e un account di accesso, nonché una chiave di crittografia del database che consente di crittografare i dati e i log nel database. Per crittografare un database è necessaria l'autorizzazione CONTROL per il database. L'immagine 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 usa le credenziali dell'applicazione di Microsoft Entra per accedere a Key Vault durante il caricamento del database. Si consiglia di creare un altro ID client e un altro Segreto, come descritto nel Passaggio 1 per il motore di database, per limitare le autorizzazioni concesse per Key Vault.
Modificare lo script Transact-SQL sottostante nei modi seguenti:
Modificare l'argomento
IDENTITY
(ContosoDevKeyVault
) in modo che punti all'Azure Key Vault.- Se si utilizza Azure globale, sostituire l'argomento
IDENTITY
con il nome del proprio Azure Key Vault dalla Parte II. - Se stai utilizzando un cloud di Azure privato (ad esempio, Azure per enti pubblici, Azure operato da 21Vianet o Azure Germania), sostituisci l'argomento
IDENTITY
con l'URI del Vault fornito nella Parte II, passaggio 3. Non includere "https://" nell'URI Vault.
- Se si utilizza Azure globale, sostituire l'argomento
Sostituire la prima parte dell'argomento
SECRET
con l'ID client dell'applicazione Microsoft Entra del Passaggio 1. In questo esempio l'ID client èEF5C8E094D2A4A769998D93440D8115D
.Importante
È necessario rimuovere i trattini dall' ID Client.
Completare la seconda parte dell'argomento
SECRET
con il segreto client della parte I. In questo esempio il segreto client della parte 1 èReplaceWithAADClientSecret
.La stringa finale dell'argomento SECRET sarà 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 ; GO
Creare la chiave di crittografia del database (DEK)
Il DEK (Data Encryption Key) crittografa i tuoi file di dati e di log nell'istanza del database e viene a sua volta crittografato dalla chiave asimmetrica dell'Azure Key Vault. La chiave DEK può essere creata usando qualsiasi algoritmo supportato da SQL Server o la lunghezza della chiave.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO
Attivare TDE
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GO
Con Management Studio, verificare che TDE sia attivato connettendo il database con Esplora oggetti. Fare clic con il pulsante destro del mouse sul database, scegliere Attivitàe quindi fare clic su Gestisci 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
tempdb
viene crittografato automaticamente ogni volta che un database abilita TDE.
Crittografia dei backup utilizzando una chiave asimmetrica dal Key Vault
I backup crittografati sono supportati a partire da SQL Server 2014 (12.x). L'esempio seguente crea e ripristina un backup crittografato di una chiave di crittografia dei dati (DEK) protetta da una chiave asimmetrica nell'archivio di chiavi.
Il motore di database usa le credenziali dell'applicazione di Microsoft Entra per accedere a Key Vault durante il caricamento del database. Si consiglia di creare un altro ID client e un altro Segreto, come descritto nel Passaggio 1 per il motore di database, per limitare le autorizzazioni concesse per Key Vault.
Creare credenziali di SQL Server per il motore di database da usare per la crittografia dei backup
Modificare lo script Transact-SQL sottostante nei modi seguenti:
Modificare l'argomento
IDENTITY
(ContosoDevKeyVault
) in modo che punti al Azure Key Vault.- Se stai utilizzando Azure globale, sostituisci l'argomento
IDENTITY
con il nome del tuo Azure Key Vault dalla Parte II. - Se si utilizza un cloud Azure privato (ad esempio, Azure Governo, Microsoft Azure operato da 21Vianet o Azure Germania), sostituire l'argomento
IDENTITY
con l'URI del Vault restituito nella parte II, passaggio 3. Non includere "https://" nell'URI del Vault.
- Se stai utilizzando Azure globale, sostituisci l'argomento
Sostituire la prima parte dell'argomento
SECRET
con l'ID client dell'applicazione Microsoft Entra del Passaggio 1. In questo esempio l'ID client èEF5C8E094D2A4A769998D93440D8115D
.Importante
È necessario rimuovere i trattini dall' ID Client.
Completare la seconda parte dell'argomento
SECRET
con il segreto client della parte I. In questo esempio il segreto client della parte I èReplace-With-AAD-Client-Secret
. La stringa finale dell'argomentoSECRET
sarà 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;
Creare un account di accesso di SQL Server per il motore di database per la crittografia di backup
Creare un account di accesso di SQL Server che può essere usato dal motore di database per i backup della crittografia, quindi aggiungere le credenziali del passaggio 1. Questo esempio di Transact-SQL usa la stessa chiave importata in precedenza.
Importante
Non è possibile usare la stessa chiave asimmetrica per la crittografia di backup se è già stata usata per la crittografia TDE (esempio precedente) o per la crittografia a livello di colonna (esempio successivo).
Questo esempio utilizza la chiave asimmetrica
CONTOSO_KEY_BACKUP
archiviata nel key vault, che può essere importata o creata in precedenza per il database master, come descritto nella Parte IV, Passaggio 5 precedente.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
Eseguire il backup del database
Eseguire il backup del database specificando la crittografia con la chiave asimmetrica archiviata nel key vault.
Nell'esempio seguente si noti che se il database è stato già crittografato con TDE e la chiave asimmetrica
CONTOSO_KEY_BACKUP
è diversa dalla chiave asimmetrica TDE, il backup verrà crittografato sia con la chiave asimmetrica TDE che conCONTOSO_KEY_BACKUP
. L'istanza di SQL Server di destinazione dovrà disporre di entrambe le chiavi per decriptare 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]); GO
Ripristinare il database
Per ripristinare un backup del database crittografato con TDE, l'istanza di SQL Server di destinazione deve prima di tutto disporre di una copia della chiave asimmetrica di Key Vault usata per la crittografia. Ecco come si ottiene questo risultato:
Se la chiave asimmetrica originale utilizzata per TDE non è più nel Key Vault di Azure, ripristinare il backup della chiave dal Key Vault oppure reimportare la chiave da un HSM locale. Importante: affinché l'impronta digitale della chiave corrisponda all'impronta digitale registrata nel backup del database, la chiave deve mantenere lo stesso nome del Key Vault che aveva originariamente.
Applicare i passaggi 1 e 2 nell'istanza SQL Server di destinazione.
Quando l'istanza di SQL Server di destinazione ha accesso alle chiavi asimmetriche usate per crittografare il backup, ripristinare il database nel server.
Esempio del codice di ripristino:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GO
Per altre informazioni sulle opzioni di backup, vedere BACKUP (Transact-SQL).
Crittografia a livello di colonna tramite una chiave asimmetrica dall'Archivio delle Chiavi
L'esempio seguente crea una chiave simmetrica protetta dalla chiave asimmetrica nel servizio di gestione delle chiavi. La chiave simmetrica viene quindi usata per crittografare i dati nel database.
Importante
Non è possibile usare la stessa chiave asimmetrica per la crittografia a livello di colonna se è già stata usata per la crittografia di backup.
Questo esempio usa la chiave asimmetrica CONTOSO_KEY_COLUMNS
archiviata nell'insieme di credenziali delle chiavi che può essere importata o creata in precedenza, come descritto nel passaggio 3 della sezione 3 di Procedura di installazione di Extensible Key Management con l'insieme di credenziali delle chiavi di Azure. Per usare questa chiave asimmetrica nel database ContosoDatabase
, è necessario eseguire nuovamente l'istruzione CREATE ASYMMETRIC KEY
in modo da fornire al database ContosoDatabase
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;
Vedi anche
Passaggi di configurazione per la gestione estensibile delle chiavi utilizzando Azure Key Vault
Gestione delle Chiavi Estendibile con Azure Key Vault
Opzione di configurazione del server abilitata con EKM provider
Manutenzione e risoluzione dei problemi di Connettore SQL Server