Rimuovere una protezione TDE (Transparent Data Encryption) tramite PowerShell

Si applica a: Azure SQL Database Azure Synapse Analytics

Questo argomento descrive come rispondere a una protezione TDE potenzialmente compromessa per Azure SQL Database o Azure Synapse Analytics che usa TDE con chiavi gestite dal cliente in Azure Key Vault - Supporto BYOK (Bring Your Own Key). Per altre informazioni sul supporto BYOK per TDE, vedere la pagina di panoramica.

Attenzione

Le procedure descritte in questo articolo devono essere eseguite solo in casi estremi o in ambienti di test. Esaminare attentamente i passaggi, perché l'eliminazione di protezioni TDE usate attivamente da Azure Key Vault comporterà la mancata disponibilità del database.

Se si sospetta che una chiave venga compromessa, in modo che un servizio o un utente abbia avuto accesso non autorizzato alla chiave, è consigliabile eliminare la chiave.

Tenere presente che una volta eliminata la protezione TDE in Key Vault, in un massimo di 10 minuti, tutti i database crittografati inizieranno a negare tutte le connessioni con il messaggio di errore corrispondente e ne modificheranno lo stato in Inaccessibile.

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

Nota

Questo articolo si applica a Azure SQL database, Istanza gestita di SQL di Azure e Azure Synapse Analytics (pool SQL dedicati (in precedenza SQL Data Warehouse)). 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 avere Azure PowerShell installato e in esecuzione.
  • Questa guida pratica presuppone che si stia già usando una chiave di Azure Key Vault come protezione TDE per un database Azure SQL o un 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 cmdlet specifici, vedere AzureRM.Sql.

Importante

Il modulo Azure Resource Manager (RM) di PowerShell è ancora supportato, ma tutto lo sviluppo futuro è destinato al modulo Az.Sql. Il modulo AzureRM continuerà a ricevere correzioni di bug almeno fino a dicembre 2020. Gli argomenti per i comandi nei moduli Az e AzureRm sono sostanzialmente identici. Per altre informazioni sulla compatibilità, vedere Introduzione del 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 VLF (Virtual Log Files) di un determinato database. L'identificazione personale della protezione TDE corrente del database e l'ID del database è reperibile 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 le VLFs 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 PowerShell o l'interfaccia della riga di comando di Azure:

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

Mantenere accessibili le risorse crittografate

  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 state aggiornate 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 per 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 AKV e gli utenti entro questo intervallo di tempo potrebbero comunque avere le autorizzazioni di accesso.

Passaggi successivi