Gestione delle identità e delle chiavi per TDE con chiavi gestite dal cliente a livello di database

Si applica a:Database SQL di Azure

Nota

  • Le chiavi gestite dal cliente per il TDE a livello di database sono disponibili per database SQL di Azure (tutte le edizioni database SQL). Non è disponibile per Istanza gestita di SQL di Azure, SQL Server locale, macchine virtuali di Azure e Azure Synapse Analytics (pool SQL dedicati (in precedenza SQL Data Warehouse)).
  • La stessa guida può essere applicata per configurare le chiavi gestite dal cliente a livello di database nello stesso tenant escludendo il parametro ID client federato. Per altre informazioni sulle chiavi gestite dal cliente a livello di database, vedere Transparent Data Encryption (TDE) con chiavi gestite dal cliente a livello di database.

In questa guida vengono illustrati i passaggi per creare, aggiornare e recuperare un database SQL di Azure con Transparent Data Encryption (TDE) e chiavi gestite dal cliente a livello di database, usando un'identità gestita assegnata dall'utente per accedere ad Azure Key Vault. Azure Key Vault si trova in un tenant di Microsoft Entra diverso rispetto al database SQL di Azure. Per altre informazioni, vedere Chiavi gestite dal cliente multi-tenant con Transparent Data Encryption.

Nota

Microsoft Entra ID era noto in precedenza come Azure Active Directory (Azure AD).

Prerequisiti

  • Questa guida presuppone che siano presenti due tenant di Microsoft Entra.
    • Il primo è costituito dalla risorsa database SQL di Azure, da un'applicazione Microsoft Entra multi-tenant e da un'identità gestita assegnata dall'utente.
    • Il secondo tenant ospita Azure Key Vault.
  • Per istruzioni complete sulla configurazione delle chiavi gestite dal cliente tra tenant e le autorizzazioni di controllo degli accessi in base al ruolo necessarie per configurare le applicazioni Microsoft Entra e Azure Key Vault, vedere una delle guide seguenti:
  • Interfaccia della riga di comando di Azure versione 2.52.0 o successiva.
  • Modulo Az PowerShell versione 10.3.0 o successive.
  • Le autorizzazioni di controllo degli accessi in base al ruolo necessarie per le chiavi gestite dal cliente a livello di database sono le stesse autorizzazioni necessarie per le chiavi gestite dal cliente a livello di server. In particolare, le stesse autorizzazioni di controllo degli accessi in base al ruolo applicabili quando si usano Azure Key Vault, identità gestite e chiavi gestite dal cliente tra tenant per TDE a livello di server sono applicabili a livello di database. Per altre informazioni sulla gestione delle chiavi e sui criteri di accesso, vedere Gestione delle chiavi.

Risorse necessarie nel primo tenant

Ai fini di questa esercitazione, si presuppone che il primo tenant appartenga a un fornitore di software indipendente (ISV) e che il secondo tenant provenga dal client. Per altre informazioni su questo scenario, vedere Chiavi gestite dal cliente tra tenant con Transparent Data Encryption.

Prima di poter configurare TDE per database SQL di Azure con una chiave gestita dal cliente tra tenant, è necessario disporre di un'applicazione Microsoft Entra multi-tenant configurata con un'identità gestita assegnata dall'utente assegnata come credenziale di identità federata per l'applicazione. Seguire una delle guide riportate in Prerequisiti.

  1. Nel primo tenant in cui si vuole creare il database SQL di Azure creare e configurare un'applicazione Microsoft Entra multi-tenant.

  2. Creare un'identità gestita assegnata dall'utente.

  3. Configurare l'identità gestita assegnata dall'utente come credenziale di identità federata per l'applicazione multi-tenant.

  4. Registrare il nome dell'applicazione e l'ID applicazione. Per trovarlo, aprire Portale di Azure>Microsoft Entra ID>Applicazioni Enterprise e cercare l'applicazione creata.

Risorse necessarie nel secondo tenant

Nota

I moduli di Azure AD e MSOnline PowerShell sono deprecati dal 30 marzo 2024. Per altre informazioni, leggere l'aggiornamento deprecato. Dopo questa data, il supporto per questi moduli è limitato all'assistenza per la migrazione a Microsoft Graph PowerShell SDK e alle correzioni di sicurezza. I moduli deprecati continueranno a funzionare fino al 30 marzo 2025.

È consigliabile eseguire la migrazione a Microsoft Graph PowerShell per interagire con Microsoft Entra ID (in precedenza Azure AD). Per domande comuni sulla migrazione, vedere Domande frequenti sulla migrazione. Nota: le versioni 1.0.x di MSOnline potrebbero subire interruzioni dopo il 30 giugno 2024.

  1. Nel secondo tenant in cui risiede Azure Key Vault creare un'entità servizio (applicazione) usando l'ID applicazione dall'applicazione registrata dal primo tenant. Ecco alcuni esempi di come registrare l'applicazione multi-tenant. Sostituire <TenantID> e <ApplicationID> con l'ID tenant del client da Microsoft Entra ID e ID applicazione rispettivamente dall'applicazione multi-tenant:

    • PowerShell:

      Connect-AzureAD -TenantID <TenantID>
      New-AzADServicePrincipal  -ApplicationId <ApplicationID>
      
    • L’interfaccia della riga di comando di Azure:

      az login --tenant <TenantID>
      az ad sp create --id <ApplicationID>
      
  2. Passare a portale di Azure> Microsoft Entra ID>Applicazioni enterprise e cercare l'applicazione creata.

  3. Se non si ha un account Azure Key Vault, crearne uno e creare una chiave.

  4. Creare o impostare i criteri di accesso.

    1. Selezionare le autorizzazioni Get, Wrap Key, Unwrap Key in Autorizzazioni chiave durante la creazione dei criteri di accesso.
    2. Selezionare l'applicazione multi-tenant creata nel primo passaggio dell'opzione Entità di sicurezza durante la creazione dei criteri di accesso.

    Screenshot del menu dei criteri di accesso di un insieme di credenziali delle chiavi nel portale di Azure.

  5. Dopo aver creato i criteri di accesso e la chiave, recuperare la chiave da Key Vault e registrare l'identificatore della chiave.

Creare una nuova database SQL di Azure con chiavi gestite dal cliente a livello di database

Di seguito sono riportati alcuni esempi per la creazione di un database in database SQL di Azure con un'identità gestita assegnata dall'utente e come impostare una chiave gestita dal cliente tra tenant a livello di database. L'identità gestita assegnata dall'utente è necessaria per configurare una chiave gestita dal cliente per Transparent Data Encryption durante la fase di creazione del database.

  1. Accedere alla pagina di opzione Selezionare la distribuzione SQL nel portale di Azure.

  2. Se non lo si è già fatto, eseguire l’accesso al portale di Azure quando richiesto.

  3. In Database SQL lasciare l'opzione Tipo di risorsa impostata su Database singolo e selezionare Crea.

  4. Nella scheda Informazioni di base del modulo Crea database SQL in Dettagli progetto, selezionare la Sottoscrizione, il Gruppo di risorse e il Server desiderati per il database. Usare un nome univoco come nome del database. Se non è stato creato un server logico per database SQL di Azure, consultare Creare un server configurato con TDE con chiave gestita dal cliente cross-tenant (CMK).

  5. Quando si arriva alla scheda Sicurezza, selezionare Configura Transparent Data Encryption.

    Screenshot del portale di Azure e del menu Sicurezza durante la creazione di un database SQL di Azure.

  6. Nel menu Transparent Data Encryption selezionare Chiave gestita dal cliente a livello di database.

    Screenshot del menu Transparent Data Encryption nel portale di Azure.

  7. Per Identità gestita assegnata dall'utente selezionare Configura per abilitare un'identità del database e Aggiungere un'identità gestita assegnata dall'utente alla risorsa se un'identità desiderata non è presente nel menu Identità. Quindi seleziona Applica.

    Screenshot del menu Identità del portale di Azure.

    Nota

    È possibile configurare l'Identità client federata qui se si configura la chiave gestita dal cliente tra tenant per TDE.

  8. Nel menu Transparent Data Encryption selezionare Cambia chiave. Selezionare la sottoscrizione desiderata, l'insieme di credenziali delle chiavi, la chiave e la versione per la chiave gestita dal cliente da usare per TDE. Fare clic sul pulsante Seleziona. Dopo aver selezionato una chiave, è anche possibile aggiungere chiavi di database aggiuntive in base alle esigenze usando l'URI dell'insieme di Azure Key Vault (identificatore di oggetto) nel menu Transparent Data Encryption .

    La rotazione automatica delle chiavi può essere abilitata anche a livello di database usando la casella di controllo Ruota automaticamente la chiave nel menu Transparent Data Encryption .

    Screenshot del menu Transparent Data Encryption nel portale di Azure che si riferisce all'aggiunta di chiavi supplementari.

  9. Selezionare Applica per continuare a creare il database.

  10. Selezionare Rivedi e crea nella parte inferiore della pagina

  11. Nella pagina Rivedi e crea, dopo aver rivisto le impostazioni, selezionare Crea.

Nota

Non sarà possibile creare il database avrà se l'identità gestita assegnata dall'utente non dispone delle autorizzazioni appropriate abilitate per l'insieme di credenziali delle chiavi. L'identità gestita assegnata dall'utente richiederà le autorizzazioni Get, wrapKey e unwrapKey nell'insieme di credenziali delle chiavi. Per altre informazioni, vedere Identità gestite per Transparent Data Encryption con chiave gestita dal cliente.

Aggiornare un database SQL di Azure esistente con chiavi gestite dal cliente a livello di database

Di seguito sono riportati esempi di aggiornamento di un database esistente in database SQL di Azure con un'identità gestita assegnata dall'utente e come impostare una chiave gestita dal cliente tra tenant a livello di database. L'identità gestita assegnata dall'utente è necessaria per configurare una chiave gestita dal cliente per Transparent Data Encryption durante la fase di creazione del database.

  1. Nel portale di Azure passare alla risorsa del database SQL che si vuole aggiornare con una chiave gestita dal cliente a livello di database.

  2. In Sicurezza selezionare Identità. Aggiungere un'identità gestita assegnata dall'utente per questo database e quindi selezionare Salva

  3. Passare ora al menu Crittografia dati in Sicurezza per il database. Selezionare Chiave gestita dal cliente a livello di database. L'identità del database per il database deve essere già abilitata perché l'identità è stata configurata nell'ultimo passaggio.

  4. Selezionare Cambia chiave. Selezionare la sottoscrizione desiderata, l'insieme di credenziali delle chiavi, la chiave e la versione per la chiave gestita dal cliente da usare per TDE. Fare clic sul pulsante Seleziona. Dopo aver selezionato una chiave, è anche possibile aggiungere chiavi di database aggiuntive in base alle esigenze usando l'URI di Azure Key Vault (identificatore di oggetto) nel menu Crittografia dati.

    Selezionare la casella di controllo Rotazione automatica della chiave se si vuole abilitare la rotazione automatica delle chiavi a livello di database.

    Screenshot del menu Transparent Data Encryption nel portale di Azure durante l’aggiornamento del database esistente.

  5. Seleziona Salva.

Visualizzare le impostazioni della chiave gestita dal cliente a livello di database in un database SQL di Azure

Di seguito sono riportati esempi di recupero delle chiavi gestite dal cliente a livello di database per un database. Per impostazione predefinita, la risorsa ARM Microsoft.Sql/servers/databases mostra solo la protezione TDE e l'identità gestita configurata nel database. Per espandere l'elenco completo delle chiavi, usare il parametro -ExpandKeyList. Inoltre, è possibile usare filtri come -KeysFilter "current" e un valore temporizzato (ad esempio 2023-01-01,) per recuperare le chiavi correnti usate e le chiavi usate in passato in un momento specifico. Questi filtri sono supportati solo per le singole query di database e non per le query a livello di server.

Per visualizzare le chiavi gestite dal cliente a livello di database nel portale di Azure, passare al menu Crittografia dei dati della risorsa del database SQL.

Elencare tutte le chiavi in un server logico

Per recuperare l'elenco di tutte le chiavi (e non solo la protezione primaria) usata da ogni database nel server, è necessario eseguire query singolarmente con i filtri delle chiavi. Di seguito è riportato un esempio di query di PowerShell per elencare ogni chiave nel server logico.

Usare il cmdlet Get-AzSqlDatabase.

$dbs = Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName>
foreach ($db in $dbs)
{
Get-AzSqlDatabase -DatabaseName $db.DatabaseName -ServerName $db.ServerName -ResourceGroupName $db.ResourceGroupName -ExpandKeyList
}

Riconvalidare la chiave gestita dal cliente a livello di database in un database SQL di Azure

In caso di protezione TDE inaccessibile, come descritto in Transparent Data Encryption (TDE) con chiave gestita dal cliente, una volta corretto l'accesso alla chiave, è possibile usare un'operazione di riconvalida della chiave per rendere accessibile il database. Per esempi, vedere le istruzioni o i comandi seguenti.

Trovare la risorsa Database SQL nel portale di Azure. Dopo aver selezionato la risorsa del database SQL, passare alla scheda Transparent Data Encryption del menu Crittografia dati nelle impostazioni di Sicurezza. Se il database ha perso l'accesso all’Azure Key Vault, verrà visualizzato il pulsante Convalida nuovamente la chiave e sarà possibile riconvalidare la chiave esistente selezionando Riprova chiave esistente o un'altra chiave selezionando Seleziona chiave di backup.

Ripristinare la chiave gestita dal cliente a livello di database in un database SQL di Azure

Un database configurato con chiave gestita dal cliente a livello di database può essere ripristinato alla crittografia a livello di server se il server è configurato con una chiave gestita dal servizio usando i comandi seguenti.

Per ripristinare l'impostazione della chiave gestita dal cliente a livello di database sulla chiave di crittografia a livello di server nel portale di Azure, passare alla scheda Transparent Data Encryption del menu Crittografia dati della risorsa del database SQL. Selezionare Chiave di crittografia a livello di server e selezionare Salva per salvare le impostazioni.

Nota

Per usare l'impostazione chiave di crittografia a livello di server per singoli database, il server logico per il database SQL di Azure deve essere configurato per l'uso della chiave gestita dal servizio per TDE.

Passaggi successivi

Vedere la documentazione seguente su varie operazioni della chiave gestita dal cliente a livello di database: