Ruotare le chiavi asimmetriche per TDE usando Azure Key Vault su SQL Server

si applica a:SQL Server

Questo articolo illustra come ruotare manualmente la chiave asimmetrica usata da Transparent Data Encryption (TDE) con Extensible Key Management (EKM) e Azure Key Vault.

Usare questa procedura dopo aver configurato TDE con Azure Key Vault. Per istruzioni di configurazione iniziali, vedere Configurare Transparent Data Encryption con Azure Key Vault per SQL Server.

Importante

SQL Server non ruota automaticamente la chiave asimmetrica usata per TDE. La rotazione è un'operazione manuale.

La rotazione della protezione TDE logica è un'operazione online e in genere viene completata rapidamente, perché SQL Server crittografa nuovamente solo la chiave di crittografia del database (DEK), non l'intero database.

Non eliminare le versioni chiave precedenti dopo la rotazione. Le versioni precedenti potrebbero comunque essere necessarie per ripristinare i backup precedenti, i log delle transazioni o altri artefatti di ripristino.

Prima di iniziare

  • Completare la configurazione iniziale di EKM e TDE.
  • Verifica che SQL Server possa attualmente accedere a Key Vault.
  • Assicurarsi di disporre delle autorizzazioni per creare credenziali, account di accesso e chiavi asimmetriche in SQL Server.
  • Verificare che il modello di autenticazione sia ancora valido:
    • Entità servizio: la registrazione dell'app e il segreto client sono validi.
    • Identità gestita: l'identità gestita SQL Server è ancora abilitata e dispone delle autorizzazioni di chiave necessarie.

Ruotare la chiave

Scegliere il modello di autenticazione e seguire i passaggi corrispondenti.

  1. In Azure Key Vault o in Managed HSM, ruotare la chiave:

    • Creare una nuova versione con lo stesso nome di chiave o
    • Creare un nuovo nome di chiave.
  2. In SQL Server creare una credenziale per l'operazione di rotazione, se necessario.

    CREATE CREDENTIAL <new_credential_name>
       WITH IDENTITY = <key_vault_name_or_uri_without_https>,
       SECRET = '<client_id_without_hyphens><client_secret>'
       FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
  3. Aggiungere le credenziali all'entità di installazione che crea la chiave asimmetrica successiva.

    ALTER LOGIN [<domain>\<login>]
       ADD CREDENTIAL [<new_credential_name>];
    
  4. Creare la nuova chiave asimmetrica SQL Server da Azure Key Vault.

    Note

    Per la rotazione manuale, SQL Server supporta sia un nome di chiave senza versione che un riferimento di chiave con controllo delle versioni:

    • Senza versione: usare <key_name> per consentire SQL Server usare la versione della chiave più elevata disponibile in Azure Key Vault.
    • Con versionamento: usare <key_name>/<version> per vincolare le operazioni di crittografia a una versione specifica della chiave.

    Non è necessario creare un nome della chiave AKV diverso per ruotarla. Ruotare le chiavi creando una nuova versione della chiave e quindi creando una nuova chiave asimmetrica SQL Server che fa riferimento al modulo senza versione o con controllo delle versioni.

    Usare un nome di chiave senza versione o una versione della chiave specifica:

    CREATE ASYMMETRIC KEY <new_ekm_key_name>
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = '<key_name_or_key_name/version>',
       CREATION_DISPOSITION = OPEN_EXISTING;
    
  5. Creare un nuovo account di accesso dalla nuova chiave asimmetrica.

    CREATE LOGIN <new_login_name>
       FROM ASYMMETRIC KEY <new_ekm_key_name>;
    
  6. Spostare la mappatura delle credenziali dall'accesso di configurazione al nuovo accesso con chiave asimmetrica.

    ALTER LOGIN [<domain>\<login>]
       DROP CREDENTIAL [<new_credential_name>];
    
    ALTER LOGIN <new_login_name>
       ADD CREDENTIAL [<new_credential_name>];
    
  7. Crittografare nuovamente la chiave dek del database usando la nuova chiave asimmetrica.

    USE [<database_name>];
    GO
    ALTER DATABASE ENCRYPTION KEY
       ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
    

Verificare la rotazione

  1. Verificare i metadati di crittografia per il database.

    SELECT encryptor_type,
           encryption_state_desc,
           encryptor_thumbprint
    FROM sys.dm_database_encryption_keys
    WHERE database_id = DB_ID('<database_name>');
    
  2. Verificare l'impronta digitale della chiave asimmetrica di SQL Server.

    SELECT name,
           algorithm_desc,
           thumbprint
    FROM sys.asymmetric_keys
    WHERE name = '<new_ekm_key_name>';
    
  3. Verificare che le impronte digitali corrispondano.