Rimuovere una protezione TDE (Transparent Data Encryption) tramite PowerShell

Si applica a:Database SQL di AzureIstanza gestita di SQL di Azure Synapse Analytics (solo pool SQL dedicate)

Questo articolo descrive come gestire una protezione TDE potenzialmente compromessa per un database SQL di Azure o Azure Synapse Analytics che usa TDE con chiavi gestite dal cliente in Azure Key Vault e supporto Bring Your Own Key (BYOK). Per altre informazioni sul supporto BYOK per TDE, vedere la pagina di panoramica.

Attenzione

Le procedure delineate in questo articolo devono essere eseguite solo in casi estremi o in ambienti di test. Leggere attentamente la guida pratica poiché l'eliminazione di protezioni TDE in uso da Azure Key Vault potrebbe rendere il database non disponibile.

Se si ha il sospetto che una chiave sia compromessa, ad esempio per un accesso non autorizzato alla chiave da parte di un utente o un servizio, è consigliabile eliminarla.

Tenere presente che una volta eliminata la protezione TDE nell’insieme di credenziali delle chiavi, in un massimo di 10 minuti, tutti i database crittografati inizieranno a negare tutte le connessioni con il messaggio di errore corrispondente e ne cambieranno lo stato in Inaccessibile.

Questa guida pratica illustra l'approccio per rendere inaccessibili i database dopo una risposta agli incidenti compromessi.

Nota

Questo articolo riguarda Database SQL di Azure, Istanza gestita di SQL di Azure e Azure Synapse Analytics (pool SQL dedicati (in precedenza SQL DW)). Per la documentazione su Transparent Data Encryption per pool SQL dedicati all'interno delle aree di lavoro di Synapse, vedere Crittografia di Azure Synapse Analytics.

Prerequisiti

  • È necessario disporre di una sottoscrizione di Azure e avere il ruolo di amministratore di tale sottoscrizione.
  • È necessario che sia installato e sia esecuzione Azure PowerShell.
  • Questa guida pratica presuppone che una chiave di Azure Key Vault sia già in uso come protezione TDE per un database SQL di Azure o Azure Synapse. Per altre informazioni, vedere Transparent Data Encryption with BYOK Support (Transparent Data Encryption con supporto BYOK).

Per istruzioni sull'installazione del modulo Az, vedere Installare Azure PowerShell. Per i cmdlet specifici, vedere AzureRM.Sql. Usare il nuovo modulo Az di Azure PowerShell.

Controllare le identificazioni personali della protezione TDE

I passaggi seguenti illustrano come controllare le identificazioni personali della protezione TDE ancora in uso da File di log virtuali (VLF) di un determinato database. L'identificazione personale della protezione TDE corrente del database e l'ID del database sono disponibili eseguendo:

SELECT [database_id],
       [encryption_state],
       [encryptor_type], /*asymmetric key means AKV, certificate means service-managed keys*/
       [encryptor_thumbprint]
 FROM [sys].[dm_database_encryption_keys]

La query seguente restituisce i VLF e le rispettive identificazioni personali della protezione TDE in uso. Ogni identificazione personale diversa fa riferimento a una chiave diversa in Azure Key Vault (AKV):

SELECT * FROM sys.dm_db_log_info (database_id)

In alternativa, è possibile usare l'interfaccia della riga di comando di Azure o PowerShell:

Il comando Get-AzureRmSqlServerKeyVaultKey di PowerShell fornisce l'identificazione personale della protezione TDE usata nella query, in modo da visualizzare quali chiavi conservare e quali chiavi eliminare in Azure Key Vault. Solo le chiavi non usate dal database possono essere eliminate in modo sicuro da Azure Key Vault.

Mantenere le risorse crittografate accessibili

  1. Creare una nuova chiave in Key Vault. Assicurarsi che la nuova chiave venga creata in un insieme di credenziali delle chiavi separato dalla protezione TDE potenzialmente compromessa, poiché il provisioning del controllo di accesso viene eseguito a livello di insieme di credenziali.

  2. Aggiungere la nuova chiave al server usando i cmdlet Add-AzSqlServerKeyVaultKey e Set-AzSqlServerTransparentDataEncryptionProtector e aggiornarla come nuova protezione TDE del server.

    # add the key from Key Vault to the server  
    Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>
    
    # set the key as the TDE protector for all resources under the server
    Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -ServerName <LogicalServerName> -Type AzureKeyVault -KeyId <KeyVaultKeyId>
    
  3. Assicurarsi che il server e le repliche siano stati aggiornati alla nuova protezione TDE usando il cmdlet Get-AzSqlServerTransparentDataEncryptionProtector .

    Nota

    La propagazione della nuova protezione TDE a tutti i database e ai database secondari nel server può richiedere alcuni minuti.

    Get-AzSqlServerTransparentDataEncryptionProtector -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  4. Eseguire un copia di backup della nuova chiave in Key Vault.

    # -OutputFile parameter is optional; if removed, a file name is automatically generated.
    Backup-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName> -OutputFile <DesiredBackupFilePath>
    
  5. Eliminare la chiave compromessa da Key Vault usando il cmdlet Remove-AzKeyVaultKey.

    Remove-AzKeyVaultKey -VaultName <KeyVaultName> -Name <KeyVaultKeyName>
    
  6. Per ripristinare una chiave in Key Vault in futuro usando il cmdlet Restore-AzKeyVaultKey.

    Restore-AzKeyVaultKey -VaultName <KeyVaultName> -InputFile <BackupFilePath>
    

Rendere inaccessibili le risorse crittografate

  1. Rilasciare i database crittografati dalla chiave potenzialmente compromessa.

    Il backup dei file di database e log viene eseguito automaticamente. È quindi possibile eseguire un ripristino temporizzato del database in qualsiasi momento, purché si specifichi la chiave. I database devono essere rilasciati prima dell'eliminazione di una protezione TDE attiva per evitare possibili perdite di dati, per un intervallo massimo di 10 minuti, dalle transazioni più recenti.

  2. Eseguire il backup del materiale della chiave della protezione TDE in Key Vault.

  3. Rimuovere la chiave potenzialmente compromessa da Key Vault.

Nota

Potrebbero essere necessari circa 10 minuti per rendere effettive le modifiche alle autorizzazioni per l'insieme di credenziali delle chiavi. Ciò include la revoca delle autorizzazioni di accesso alla protezione TDE in Azure Key Vault e gli utenti entro questo intervallo di tempo potrebbero comunque avere autorizzazioni di accesso.