Configurare Transparent Data Encryption con Azure Key Vault per SQL Server

si applica a:SQL Server

In questo articolo viene installato e configurato SQL Server Connector per Azure Key Vault e quindi viene configurato Transparent Data Encryption (TDE) usando una chiave in Azure Key Vault.

Prerequisiti

Prima di iniziare a usare Azure Key Vault con l'istanza di SQL Server, assicurarsi di soddisfare i prerequisiti seguenti:

Note

In SQL Server 2022 (16.x) CU 12 e versioni successive, SQL Server in Linux supporta TDE Extensible Key Management con Azure Key Vault. I passaggi 3 e 4 di questa guida non sono necessari per SQL Server in Linux.

Flusso rapido

  1. Selezionare un modello di autenticazione nel passaggio 1: Configurare il modello di autenticazione.
  2. Creare un insieme di credenziali delle chiavi e una chiave nel passaggio 2: Creare un insieme di credenziali delle chiavi.
  3. Installare il connettore nel passaggio 3: Installare il connettore SQL Server.
  4. Configurare il prerequisito del Registro di sistema nel passaggio 4: Aggiungere la chiave del Registro di sistema per supportare il provider EKM.
  5. Configurare SQL Server e convalidare la crittografia nel passaggio 5: Configurare SQL Server.

Passaggio 1: Configurare il modello di autenticazione

Importante

Scegliere il modello di autenticazione prima di continuare:

  • Usa la scheda Service principal per SQL Server locale.
  • Usare la scheda Identità gestita per SQL Server nelle macchine virtuali Azure o SQL Server abilitate da Azure Arc, in cui è supportata l'identità gestita.

Matrice di supporto del modello di autenticazione:

Modello di autenticazione Versione di SQL Server Posizione in cui viene eseguito SQL Server Supportato
Service Principal Versioni supportate descritte in questo articolo In locale, VM di Azure, SQL Server abilitato da Azure Arc
Identità gestita SQL Server 2022 CU17 e versioni successive Macchina virtuale di Azure
Identità gestita SQL Server 2025 e versioni successive SQL Server abilitato da Azure Arc
Identità gestita Qualunque On-premises No

Per concedere all’istanza di SQL Server i permessi di accesso al tuo Azure Key Vault, è necessario un account di entità del servizio in Microsoft Entra ID.

  1. Accedere al portale di Azure ed eseguire una delle operazioni seguenti:

    • Selezionare il pulsante Microsoft Entra ID.

      Screenshot del riquadro dei servizi di Azure.

    • Selezionare Altri servizi e quindi nella finestra Tutti i servizi digitare Microsoft Entra ID.

  2. Registrare un'applicazione con Microsoft Entra ID seguendo questa procedura. Per istruzioni dettagliate, vedere la sezione Ottenere un'identità per l'applicazione del post di blog di Azure Key Vault, Azure Key Vault – Procedura dettagliata.

    1. Nella sezione Gestisci della risorsa Microsoft Entra ID selezionare Registrazioni app.

      Screenshot della pagina Panoramica per Microsoft Entra ID nel portale di Azure.

    2. Nella pagina Registrazioni app seleziona Nuova registrazione.

      Screenshot della finestra delle Registrazioni app nel portale di Azure.

    3. Nel riquadro Registra un'applicazione immettere il nome dell'app visualizzato agli utenti e quindi selezionare Registra.

      Screenshot del riquadro Registra un'applicazione.

    4. Nel riquadro sinistro, selezionare Certificati e segreti>Segreti client>Nuovo segreto client.

      Screenshot del riquadro Certificati e segreti per l’App nel portale di Azure.

    5. In Aggiungi un segreto client immettere una descrizione e una scadenza appropriata e quindi selezionare Aggiungi. Non è possibile scegliere un periodo di scadenza maggiore di 24 mesi. Per ulteriori informazioni, vedi Aggiungere un segreto del client.

      Schermata della sezione Aggiungi un segreto client dell'app nel portale di Azure.

    6. Nel riquadro Certificati e segreti, in Valore, selezionare il pulsante Copia accanto al valore del segreto client per usarlo per creare una chiave asimmetrica in SQL Server.

      Screenshot che mostra il valore segreto nel portale di Azure.

    7. Nel riquadro sinistro selezionare Panoramica e quindi, nella casella ID applicazione (client) copiare il valore da usare per creare una chiave asimmetrica in SQL Server.

      Screenshot del valore ID applicazione (client) nel riquadro “Panoramica”.

Passaggio 2: Creare un Key Vault

Selezionare il metodo che si vuole usare per creare un insieme di credenziali.

Note

Sono supportati solo Azure Key Vault e il modulo di protezione hardware gestito di Azure Key Vault. HSM cloud di Azure non è supportato.

Crea un Key Vault usando il portale di Azure

Per creare un insieme di credenziali delle chiavi usando il portale di Azure, vedere Avvio rapido: Creare un insieme di credenziali delle chiavi usando il portale di Azure.

Controllo dell'accesso basato sui ruoli di Azure

Usa il controllo degli accessi in base al ruolo di Azure (RBAC) per gestire l'accesso ad Azure Key Vault. Non usare i criteri di accesso legacy. I criteri di accesso legacy hanno vulnerabilità di sicurezza note, non supportano Privileged Identity Management (PIM) e non devono essere usati per i dati e i carichi di lavoro critici. Per ulteriori informazioni sulle autorizzazioni RBAC di Azure Key Vault, vedere Ruoli predefiniti di Azure per le operazioni del piano dati di Key Vault.

  1. Passare alla risorsa di Key Vault creata e selezionare l'impostazione Controllo di accesso (IAM).

  2. Selezionare Aggiungi>Aggiungi assegnazione di ruolo.

    Screenshot del pulsante Aggiungi assegnazione di ruolo nel riquadro Controllo di accesso (IAM) nel portale di Azure.

  3. L'applicazione EKM o l'identità gestita necessita del ruolo Key Vault Crypto Service Encryption User per eseguire operazioni di wrapping e unwrapping. Cercare Utente di crittografia del servizio di crittografia di Key Vault e selezionare il ruolo. Seleziona Avanti.

    Screenshot della selezione di un'assegnazione di ruolo nel portale di Azure.

  4. Nella scheda Membri, seleziona l'opzione Seleziona membri e quindi cerca l'applicazione Microsoft Entra o l'identità gestita che hai creato nel Passaggio 1. Selezionare l'applicazione o l'identità gestita e quindi il pulsante Seleziona .

    Screenshot del riquadro Seleziona membri per l'aggiunta di un'assegnazione di ruolo nel portale di Azure.

  5. Selezionare Rivedi e assegna due volte per completare l'assegnazione di ruolo.

Creazione di una chiave

L'utente che crea la chiave richiede il ruolo di Amministratore di Key Vault. Analogamente ai passaggi precedenti, aggiungere il membro che crea la chiave e assegnare il ruolo.

  1. Nel riquadro Key Vault, selezionare Chiavi e poi selezionare l'opzione Genera/Importa. Questa azione apre il riquadro Crea una chiave . Selezionare l’opzione Genera e immettere un nome per la chiave. Connettore SQL Server richiede che il nome della chiave usi solo i caratteri "a-z", "A-Z", "0-9" e "-", con un limite di 26 caratteri.

  2. Usare il tipo di chiave RSA e le dimensioni della chiave RSA pari a 2048. EKM supporta attualmente solo una chiave RSA. Impostare le date di attivazione e di scadenza in base alle esigenze e impostare Abilitato su .

    Screenshot del Riquadro Crea Chiave.

Configurare un HSM gestito di Azure Key Vault (facoltativo)

Azure Key Vault Managed HSM (modulo di protezione hardware) supporta SQL Server e SQL Server in Macchine virtuali di Azure (VMs) quando si utilizza la versione più recente del SQL Server Connector, e Azure SQL. Il Managed HSM è un servizio HSM completamente gestito, altamente disponibile e a tenant singolo. Il modulo di protezione hardware HSM gestito offre una base sicura per le operazioni di crittografia e l'archiviazione delle chiavi. L'HSM gestito è progettato per soddisfare i requisiti di sicurezza e conformità più rigorosi.

Passaggio 2 illustra come creare un insieme di credenziali e una chiave in Azure Key Vault. Facoltativamente, è possibile usare un modulo di protezione hardware gestito Azure Key Vault per archiviare o creare una chiave per il connettore SQL Server. Segui questi passaggi:

  1. Creare un HSM gestito di Azure Key Vault usando il portale di Azure, interfaccia della riga di comando di Azure, PowerShell o un modello ARM.

  2. Attivare l'HSM gestito. Solo gli amministratori designati assegnati durante la creazione possono attivarlo. Nel portale di Azure, seleziona la risorsa Managed HSM, quindi seleziona Scarica dominio di sicurezza nel menu Panoramica. Segui una delle guide introduttive per attivare il tuo Managed HSM.

  3. Concedi le autorizzazioni all'entità servizio Microsoft Entra o all'identità gestita per accedere al Managed HSM. Il ruolo di Amministratore HSM gestito non concede le autorizzazioni per creare una chiave. Analogamente al passaggio 2, l'applicazione EKM o l'identità gestita necessita del ruolo Managed HSM Crypto User o Managed HSM Crypto Service Encryption User per eseguire operazioni di wrap e unwrap. Per ulteriori informazioni, consultare i ruoli predefiniti RBAC locali per HSM gestito.

  4. Nel menu del servizio HSM gestito di Azure Key Vault, in Impostazioni selezionare Chiavi. Nella finestra Chiavi selezionare Genera/Importa/Ripristina backup per creare una chiave o importare una chiave esistente.

    Note

    Gli algoritmi RSA-HSM_2048 e RSA-HSM_3072 sono supportati a partire dall'aggiornamento cumulativo 13 SQL Server 2022 (16.x).

    Azure Key Vault Managed HSM supporta la rotazione automatica delle chiavi. Per altre informazioni, si veda Configurare la rotazione automatica delle chiavi nel modulo HSM gestito di Azure.

    Gli HSM gestiti supportano le connessioni agli endpoint privati. Per altre informazioni, vedere Integrrare HSM gestito con collegamento privato di Azure. In questa configurazione, è necessario abilitare l'opzione Bypass dei servizi attendibili Microsoft nell'impostazione Rete di Azure Key Vault Managed HSM.

Passaggio 3: Installare SQL Server Connector

Chiedere a un amministratore di SQL Server di scaricare la versione più recente del connettore di SQL Server per Microsoft Azure Key Vault dal Area download Microsoft ed eseguire il programma di installazione.

Screenshot della procedura guidata di installazione del Connettore SQL Server.

Per impostazione predefinita, il Connettore viene installato in C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. È possibile modificare questo percorso durante l'installazione. Se lo modifichi, modifica gli script nella sezione successiva.

Un'installazione riuscita installa Microsoft.AzureKeyVaultService.EKM.dll sul computer. Questo assembly è la DLL del provider di crittografia EKM. Registrarlo con SQL Server usando l'istruzione CREATE CRYPTOGRAPHIC PROVIDER .

Il programma di installazione offre anche script di esempio per la crittografia SQL Server.

Per le spiegazioni del codice di errore, le impostazioni di configurazione o le attività di manutenzione, vedere:

Passaggio 4: Aggiungere la chiave del Registro di sistema per supportare il provider EKM

Avvertimento

Solo un amministratore SQL Server che sa esattamente cosa sta facendo dovrebbe modificare il Registro di sistema. Le modifiche non corrette possono causare gravi problemi. Eseguire il backup del Registro di sistema prima di apportare modifiche in modo da poterlo ripristinare se si verifica un problema.

  1. Eseguire regedit per aprire il Registro di sistema.

  2. Creare una SQL Server Cryptographic Provider chiave del Registro di sistema in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

  3. Fare clic con il pulsante destro del mouse sulla chiave del Registro di sistema, quindi selezionare SQL Server Cryptographic ProviderAutorizzazioni.

  4. Concedere il controllo completo sulla SQL Server Cryptographic Provider chiave all'account utente che esegue il servizio SQL Server.

    Screenshot della chiave del Registro di sistema EKM nell'editor del Registro di sistema.

  5. Selezionare Applica e quindi OK.

  6. Chiudere l'editor del Registro di sistema e riavviare il servizio SQL Server.

    Note

    Se si utilizza TDE con EKM o Azure Key Vault in un'istanza del cluster di failover, aggiungere anche HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider alla routine di Checkpoint del Registro di sistema del cluster, così che il registro venga sincronizzato tra i nodi, agevolando il ripristino del database dopo il failover e la rotazione delle chiavi.

    Eseguire il comando di PowerShell seguente per aggiungere la chiave del Registro di sistema alla routine del checkpoint:

    Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"
    

Passaggio 5: Configurazione di SQL Server

Per visualizzare una nota sui livelli minimi di autorizzazione necessari per ogni azione in questa sezione, vedere B. Domande frequenti.

Fase 1: Configurare il provider di crittografia e le credenziali in master

Scegliere il modello di autenticazione e seguire i passaggi corrispondenti.

  1. Eseguire sqlcmd o aprire SQL Server Management Studio.

  2. Configurare SQL Server per usare EKM eseguendo lo script Transact-SQL seguente:

    -- Enable advanced options.
    USE master;
    GO
    
    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXEC sp_configure 'EKM provider enabled', 1;
    GO
    RECONFIGURE;
    
  3. Registrare il Connettore SQL Server come provider EKM con SQL Server.

    Creare un provider di crittografia usando il Connettore SQL Server che rappresenta un provider EKM per Azure Key Vault. In questo esempio il nome del provider è AzureKeyVault_EKM.

    CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM
    FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll';
    GO
    

    Note

    La lunghezza del percorso file non può superare i 256 caratteri.

  4. Impostare una credenziale SQL Server per un nome utente di SQL Server per utilizzare il Key Vault.

    Aggiungere una credenziale a ogni accesso che esegue la crittografia utilizzando una chiave dell'insieme di credenziali. Esiste un mapping uno-a-uno tra le credenziali e gli account di accesso. Ogni account di accesso deve avere credenziali univoche.

    Modificare lo script Transact-SQL nei modi seguenti:

    • Modificare l'argomento IDENTITY (DocsSampleEKMKeyVault) in modo che punti all'Azure Key Vault.

    • Sostituire la prima parte dell'argomento SECRET con l'ID client di Microsoft Entra indicato in Passaggio 1: Configurare il modello di autenticazione. In questo esempio l'ID client è d956f6b9xxxxxxx.

      Importante

      Rimuovere i trattini dall'ID app (client).

    • Completare la seconda parte dell'argomento SECRET con il segreto client del passaggio 1. La stringa finale è una lunga sequenza di lettere e numeri senza trattini (ad eccezione di tutti i trattini nel segreto client stesso).

    USE master;
    CREATE CREDENTIAL sysadmin_ekm_cred
       -- Set IDENTITY to the vault name (public Azure) or full vault hostname without https:// (sovereign clouds / Managed HSM)
       -- See https://dotnet.territoriali.olinfo.it/azure/key-vault/general/about-keys-secrets-certificates#dns-suffixes-for-base-url
       WITH IDENTITY = 'DocsSampleEKMKeyVault',
             --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret-->
       SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
    -- Add the credential to the SQL Server administrator's domain login
    ALTER LOGIN [<domain>\<login>]
        ADD CREDENTIAL sysadmin_ekm_cred;
    

    Per un esempio di uso di variabili e rimozione di trattini a livello di codice dall'ID client, vedere CREATE CREDENTIAL.

  5. Aprire la chiave Azure Key Vault nell'istanza di SQL Server.

    Indipendentemente dal fatto che sia stata creata una nuova chiave o importata una chiave asimmetrica nel passaggio 2: Creare un insieme di credenziali delle chiavi, aprire la chiave in SQL Server usando CREATE ASYMMETRIC KEY.

    Importante

    Completare i prerequisiti del Registro di sistema prima di eseguire questo passaggio.

    Negli esempi seguenti:

    • Sostituire EKMSampleASYKey con il nome da usare in SQL Server.
    • Sostituire ContosoRSAKey0 con il nome della chiave in Azure Key Vault o in Managed HSM.

    Usare un nome di chiave senza versione (consigliato per la maggior parte degli scenari):

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    Usa una versione specifica della chiave quando devi vincolare le operazioni a una versione:

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    In questo esempio è 1a4d3b9b393c4678831ccc60def75379 la versione chiave specifica usata SQL Server per le operazioni del database.

  6. Creare un nuovo account di accesso usando la chiave asimmetrica in SQL Server creata nel passaggio precedente.

    -- Create a login that associates the asymmetric key with this login
    CREATE LOGIN TDE_Login
        FROM ASYMMETRIC KEY EKMSampleASYKey;
    
  7. Spostare la mappatura delle credenziali dal login amministratore originale al login creato dalla chiave asimmetrica.

    SQL Server usa l'account di accesso creato dalla chiave asimmetrica (TDE_Login) per le operazioni EKM. Per assicurarsi che SQL Server possa accedere ad Azure Key Vault durante le operazioni di crittografia e ripristino, associare la credenziale a TDE_Login anziché all'accesso di configurazione originale.

    -- Remove the service principal credential from the original setup login
    ALTER LOGIN [<domain>\<login>]
       DROP CREDENTIAL sysadmin_ekm_cred;
    
    -- Map the service principal credential to the login created from the asymmetric key
    ALTER LOGIN TDE_Login
       ADD CREDENTIAL sysadmin_ekm_cred;
    

Fase 2: Crittografare e convalidare il database utente

Configurare il database utente da crittografare

  1. Creare un database di test per crittografare usando la chiave Azure Key Vault.

    -- Create a test database for the TDE example.
    CREATE DATABASE TestTDE;
    
  2. Creare una chiave di crittografia del database usando la chiave asimmetrica del server (EKMSampleASYKey).

    USE TestTDE;
    -- Create a DEK protected by the EKM asymmetric key.
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_256
    ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
    
  3. Abilitare TDE nel database impostando ENCRYPTION ON.

    -- Enable TDE for the database.
    ALTER DATABASE TestTDE
        SET ENCRYPTION ON;
    

Verificare l'utilizzo della chiave e lo stato di crittografia

  1. Nel database master, eseguire la query Transact-SQL seguente per verificare che la chiave asimmetrica EKM esista e acquisirne l'impronta digitale.

    SELECT name,
           algorithm_desc,
           thumbprint
    FROM sys.asymmetric_keys;
    

    L'istruzione restituisce un output simile al seguente:

    name            algorithm_desc    thumbprint
    EKMSampleASYKey RSA_2048          <key thumbprint>
    
  2. Nel database utente (TestTDE) eseguire la query seguente Transact-SQL per verificare che TDE sia abilitato e che la chiave di crittografia del database sia protetta da una chiave asimmetrica.

    SELECT encryptor_type,
           encryption_state_desc,
           encryptor_thumbprint
    FROM sys.dm_database_encryption_keys
    WHERE database_id = DB_ID('TestTDE');
    

    L'istruzione restituisce un output simile al seguente:

    encryptor_type encryption_state_desc encryptor_thumbprint
    ASYMMETRIC KEY ENCRYPTED             <key thumbprint>
    

    Confermare che encryptor_thumbprint corrisponda all'impronta digitale restituita da sys.asymmetric_keys. Una mancata corrispondenza indica in genere che la chiave di crittografia del database è protetta da una chiave diversa rispetto al previsto.

Pulizia

Usare i passaggi di pulizia che corrispondono al modello di autenticazione configurato.

  1. Pulire gli oggetti di test creati in questa procedura.

    -- CLEAN UP: shared objects + service principal credential
    USE master;
    GO
    ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DROP DATABASE [TestTDE];
    GO
    
    DROP LOGIN [TDE_Login];
    GO
    
    DROP ASYMMETRIC KEY [EKMSampleASYKey];
    DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM];
    GO
    
    DROP CREDENTIAL [sysadmin_ekm_cred];
    GO
    
  2. Verificare se è necessario rimuovere la chiave di registro SQL Server Cryptographic Provider.

    Importante

    La SQL Server Cryptographic Provider chiave del Registro di sistema non viene rimossa automaticamente dopo l'eliminazione delle chiavi EKM.

    Eliminare questa chiave del Registro di sistema solo quando EKM non è più necessario nell'istanza. Eliminarlo troppo presto può compromettere la funzionalità di EKM e le operazioni di ripristino.

    Percorso del Registro di sistema: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider

Ruotare le chiavi asimmetriche per TDE con Azure Key Vault

Utilizzare una guida operativa dedicata per le fasi della rotazione delle chiavi, inclusi script specifici per l'autenticazione, la verifica e i controlli di sicurezza:

Importante

Non eliminare le versioni precedenti della chiave dopo la rotazione. Le versioni precedenti potrebbero essere ancora necessarie per il ripristino di backup, file di log e artefatti di ripristino meno recenti.