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

  • È disponibile il TDE CMK a livello di database per database SQL di Azure (tutte le edizioni di SQL Database). 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 ulteriori informazioni, vedere Chiavi gestite dal cliente cross-tenant con crittografia dei dati trasparente.

Nota

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

Prerequisiti

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 i tenant con Crittografia Trasparente dei Dati.

Prima di poter configurare TDE per il database SQL di Azure con un CMK cross-tenant, è necessario disporre di un'applicazione Microsoft Entra multi-tenant configurata con un'identità gestita assegnata all'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. Trovi queste informazioni nel portale di Azure>Microsoft Entra ID>applicazioni aziendali e cerca l'applicazione creata.

Risorse necessarie nel secondo tenant

Nota

I moduli Azure AD e MSOnline PowerShell sono deprecati a partire dal 30 marzo 2024. Per maggiori informazioni, consulta l'aggiornamento sulla deprecazione. Dopo questa data, il supporto per questi moduli è limitato all'assistenza alla migrazione a SDK PowerShell di Microsoft Graph 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, consultare le Domande frequenti sulla migrazione. Nota: le versioni 1.0.x di MSOnline potrebbero subire interruzioni dopo il 30 giugno 2024.

  1. Nel secondo tenant dove si trova Azure Key Vault, si crea un principale di servizio (applicazione) utilizzando l'ID dell'applicazione registrata nel primo tenant. Ecco alcuni esempi di come registrare l'applicazione multitenant. Sostituire <TenantID> e <ApplicationID> rispettivamente con l'ID tenant client da Microsoft Entra ID e ID applicazione dall'applicazione multi-tenant:

    • PowerShell:

      Connect-Entra -TenantID <TenantID>
      New-EntraServicePrincipal  -AppId <ApplicationID>
      
    • L’interfaccia della riga di comando di Azure:

      az login --tenant <TenantID>
      az ad sp create --id <ApplicationID>
      
  2. Andare al Azure portal>Microsoft Entra ID>Enterprise applications e cercare l'applicazione che è stata 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 Principal durante la creazione dei criteri di accesso.

    Screenshot del menu dei criteri di accesso di Azure Key Vault nel portale di Azure.

  5. Dopo aver creato la policy di accesso e la chiave, recupera la chiave da Azure Key Vault e registra l'Identificatore della Chiave.

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

I seguenti esempi mostrano come creare un database su database SQL di Azure con un'identità gestita assegnata dall'utente e come impostare una chiave cross-tenant gestita dal cliente a livello di database. È necessaria l'identità gestita assegnata dall'utente per impostare una chiave gestita dal cliente per la crittografia trasparente dei dati durante la fase di creazione del database.

  1. Vai all'hub SQL di Azure su aka.ms/azuresqlhub.

  2. Nel menu delle risorse espandere Database SQL di Azure e selezionare Database SQL.

  3. Dall'elenco a discesa + Crea, seleziona il database SQL.

    Screenshot del portale di Azure che mostra la pagina Database SQL, il pulsante Crea e l'opzione Database SQL.

  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. Utilizzare un nome univoco per il 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 per la chiave a livello di database.

    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, seleziona Configura per abilitare un'identità del database e Aggiungi un'identità gestita assegnata dall'utente alla risorsa se l'identità desiderata non è elencata 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 Cross-tenant CMK 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 Avanti: Impostazioni aggiuntive.

  11. Seleziona Avanti: Tag.

  12. Prendere in considerazione l'uso dei tag di Azure. Ad esempio, il tag "Owner" o "CreatedBy" per identificare chi ha creato la risorsa e il tag Environment per identificare se questa risorsa si trova in Produzione, Sviluppo e così via. Per altre informazioni, vedere Sviluppare la strategia di denominazione e assegnazione di tag per le risorse di Azure.

  13. Selezionare Rivedi e crea.

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

Nota

Non sarà possibile creare il database se l'identità gestita assegnata dall'utente non dispone delle autorizzazioni appropriate abilitate per l'insieme di credenziali. L'identità gestita assegnata dall'utente richiederà le autorizzazioni *Get*, *wrapKey* e *unwrapKey* nell'insieme di credenziali. 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

I seguenti esempi mostrano come aggiornare un database esistente su database SQL di Azure con un'identità gestita assegnata dall'utente e come impostare una chiave cross-tenant gestita dal cliente a livello di database. È necessaria un'identità gestita assegnata dall'utente per configurare una chiave gestita dal cliente per la crittografia trasparente dei dati.

Per informazioni sull'installazione della versione attuale dell’interfaccia della riga di comando di Azure, consultare l’articolo Installare l’interfaccia della riga di comando di Azure.

Aggiornare un database configurato con l'identità gestita assegnata dall'utente e TDE multi-tenant gestito dal cliente usando il comando az sql db create. L'identificatore di chiave del secondo tenant può essere usato nel campo encryption-protector. Il ID applicazione dell'applicazione multi-tenant può essere usato nel campo federated-client-id.

Per ottenere l'ID risorsa dell'identità gestita assegnata dall'utente, cercare Identità gestite nel portale di Azure. Trova la tua identità gestita e vai a Proprietà. Un esempio di ID risorsa UMI è simile a /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. Il parametro --encryption-protector-auto-rotation può essere usato per abilitare la rotazione automatica delle chiavi a livello di database.

az sql db update --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --sample-name AdventureWorksLT --edition GeneralPurpose --compute-model Serverless --family Gen5 --capacity 2 --assign-identity --user-assigned-identity-id $identityid --encryption-protector $keyid --federated-client-id $federatedclientid --keys $keys --keys-to-remove $keysToRemove --encryption-protector-auto-rotation True

L'elenco $keys è un elenco separato da spazi di chiavi che devono essere aggiunte nel database e $keysToRemove è un elenco separato da spazi di chiavi che devono essere rimosse dal database

$keys = '"https://yourvault.vault.azure.net/keys/yourkey1/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey2/ fd021f84a0d94d43b8ef33154bca0000"'

$keysToRemove = '"https://yourvault.vault.azure.net/keys/yourkey3/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey4/fd021f84a0d94d43b8ef33154bca0000"'

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 informazioni sull'installazione della versione attuale dell’interfaccia della riga di comando di Azure, consultare l’articolo Installare l’interfaccia della riga di comando di Azure.

# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase

# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys

# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current

# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015

# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName

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

Se lo strumento di protezione TDE è inaccessibile, come descritto in crittografia trasparente dei dati di Azure SQL con chiave gestita dal cliente, il database diventa inaccessibile. Dopo aver sistemato l'accesso alla chiave, usa l'operazione di rivalidazione della chiave per rendere di nuovo accessibile il database. I seguenti comandi forniscono esempi.

Per informazioni sull'installazione della versione attuale dell’interfaccia della riga di comando di Azure, consultare l’articolo Installare l’interfaccia della riga di comando di Azure.

az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase

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

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

Per informazioni sull'installazione della versione attuale dell’interfaccia della riga di comando di Azure, consultare l’articolo Installare l’interfaccia della riga di comando di Azure.

az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase