Configurare le chiavi gestite dal cliente per l'account Azure Cosmos DB con Azure Key Vault

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella

I dati archiviati nell'account Azure Cosmos DB vengono crittografati automaticamente e facilmente con le chiavi gestite da Microsoft (chiavi gestite dal servizio). Facoltativamente, è possibile scegliere di aggiungere un secondo livello di crittografia con chiavi gestite dal cliente.

Diagramma dei livelli di crittografia relativi ai dati dei clienti.

È necessario archiviare le chiavi gestite dal cliente in Azure Key Vault e fornire una chiave per ogni account Azure Cosmos DB abilitato con chiavi gestite dal cliente. Questa chiave viene usata per crittografare tutti i dati archiviati nell'account.

Nota

Per abilitare le chiavi gestite dal cliente negli account Azure Cosmos DB esistenti, è possibile fare riferimento al collegamento qui per altri dettagli

Avviso

Nelle tabelle dell'API Cassandra i nomi dei campi seguenti sono riservati usando chiavi gestite dal cliente negli account:

  • id
  • ttl
  • _ts
  • _etag
  • _rid
  • _self
  • _attachments
  • _epk

Quando le chiavi gestite dal cliente non sono abilitate, vengono riservati solo i nomi dei campi che iniziano con __sys_.

Prerequisiti

Registrare il provider di risorse Azure Cosmos DB

Se il provider di risorse Microsoft.DocumentDB non è già registrato, come primo passaggio è necessario registrare questo provider.

  1. Accedere al portale di Azure, passare alla sottoscrizione di Azure e selezionare Provider di risorse nella scheda Impostazioni:

    Screenshot dell'opzione Provider di risorse nel menu di spostamento delle risorse.

  2. Cercare il provider di risorse Microsoft.DocumentDB. Verificare che il provider di risorse sia già contrassegnato come registrato. In caso contrario, scegliere il provider di risorse e selezionare Registra:

    Screenshot dell'opzione Registra per il provider di risorse Microsoft.DocumentDB.

Configurare l'istanza di Azure Key Vault

Importante

L'istanza di Azure Key Vault deve essere accessibile tramite l'accesso alla rete pubblica o deve consentire ai servizi Microsoft attendibili di ignorare il firewall. Un'istanza accessibile esclusivamente tramite endpoint privati non può essere usata per ospitare le chiavi gestite dal cliente.

Per usare le chiavi gestite dal cliente con Azure Cosmos DB è necessario impostare due proprietà nell'istanza di Azure Key Vault che si intende usare per ospitare le chiavi di crittografia: Eliminazione temporanea e Protezione dalla rimozione definitiva.

  1. Se si crea una nuova istanza di Azure Key Vault, abilitare queste proprietà durante la creazione:

    Screenshot delle opzioni di Azure Key Vault, tra cui l'eliminazione temporanea e la protezione dall'eliminazione.

  2. Se si usa un'istanza di Azure Key Vault esistente, è possibile verificare che queste proprietà siano abilitate nella sezione Proprietà del portale di Azure. Se una di queste proprietà non è abilitata, vedere le sezioni "Abilitazione della funzione di eliminazione temporanea" e "Abilitazione del flag di protezione dall'eliminazione" in uno degli articoli seguenti:

Scelta del modello di sicurezza preferito

Dopo aver abilitato la protezione dalla rimozione definitiva e l'eliminazione temporanea, nella scheda criteri di accesso è possibile scegliere il modello di autorizzazione preferito da usare. I criteri di accesso vengono settati per impostazione predefinita, ma è supportato anche il controllo degli accessi in base al ruolo di Azure.

Le autorizzazioni necessarie devono essere concesse per permettere a Cosmos DB di usare la chiave di crittografia. Questo passaggio varia a seconda che Azure Key Vault usi criteri di accesso o il controllo degli accessi in base al ruolo.

Nota

È importante notare che può essere attivo un solo modello di sicurezza alla volta, quindi non è necessario eseguire il seeding del controllo degli accessi in base al ruolo se Azure Key Vault è impostato per l’utilizzo dei criteri di accesso e viceversa.

Aggiungere un criterio di accesso

In questa variante usare l'entità di sicurezza di Azure Cosmos DB per creare criteri di accesso con le autorizzazioni appropriate.

  1. Dal portale di Azure passare all'istanza di Azure Key Vault che si intende usare per ospitare le chiavi di crittografia. Selezionare Criteri di accesso nel menu a sinistra:

    Screenshot dell'opzione Criteri di accesso nel menu di spostamento delle risorse.

  2. Selezionare + Aggiungi un criterio di accesso.

  3. Nel menu a discesa Autorizzazioni chiave selezionare le autorizzazioni Recupera, Annulla il wrapping della chiave e Esegui il wrapping della chiave:

    Screenshot delle autorizzazioni dei criteri di accesso, tra cui Get, Unwrap key e Wrap key.

  4. In Selezionare un'entità selezionare Nessuna selezione.

  5. Cercare quindi l'entità di sicurezza Azure Cosmos DB e selezionarla (per facilitarne l'individuazione, è anche possibile eseguire la ricerca in base all'ID applicazione: a232010e-820c-4083-83bb-3ace5fc29d0b per tutte le aree di Azure ad eccezione delle aree di Azure per enti pubblici in cui l'ID applicazione è 57506a73-e302-42a9-b869-6f12d9ec29e9).

    Suggerimento

    In questo modo viene registrata l'identità di prima parte di Azure Cosmos DB nei criteri di accesso di Azure Key Vault. Se l'entità di sicurezza Azure Cosmos DB non è presente nell'elenco, potrebbe essere necessario registrare nuovamente il provider di risorse Microsoft.DocumentDB.

  6. Scegliere Seleziona nella parte inferiore della schermata.

    Screenshot dell'opzione Seleziona entità nella pagina Aggiungi criteri di accesso.

  7. Selezionare Aggiungi per aggiungere il nuovo criterio di accesso.

  8. Selezionare Salva nell'istanza di Key Vault per salvare tutte le modifiche.

Aggiunta di ruoli di controllo degli accessi in base al ruolo

  1. Dal portale di Azure passare all'istanza di Azure Key Vault che si intende usare per ospitare le chiavi di crittografia. Selezionare Controllo di accesso (IAM) dal menu a sinistra e scegliere Concedi accesso a questa risorsa.

    Screenshot dell'opzione Controllo di accesso nel menu di spostamento delle risorse.

    Screenshot dell'opzione Concedi accesso a questa risorsa nella pagina Controllo di accesso.

  2. Cercare il "ruolo di amministratore Key Vault" e assegnarlo a se stessi. Questa assegnazione viene eseguita cercando prima il nome del ruolo dall'elenco e quindi facendo clic sulla scheda "Membri". Nella scheda, selezionare l'opzione "Utente, gruppo o entità servizio", quindi cercare l'account Azure. Dopo aver selezionato l'account, è possibile assegnare il ruolo.

    Screenshot del ruolo di amministratore dell'insieme di credenziali delle chiavi nei risultati della ricerca.

    Screenshot di un'assegnazione di ruolo nella pagina Controllo di accesso.

  3. Le autorizzazioni necessarie devono quindi essere assegnate all'entità di sicurezza di Cosmos DB. Analogamente all'ultima assegnazione di ruolo, passare alla pagina di assegnazione, ma questa volta cercare il ruolo "Utente crittografia Crypto Service Key Vault" e nella scheda membri cercare l'entità di sicurezza di Cosmos DB. Per trovare l'entità di sicurezza, cercare l'entità di sicurezza di Azure Cosmos DB e selezionarla.

    Screenshot dell'entità di sicurezza di Azure Cosmos DB assegnata a un'autorizzazione.

    Importante

    Nell'area di Azure per enti pubblici l'ID applicazione è 57506a73-e302-42a9-b869-6f12d9ec29e9.

  4. Selezionare Rivedi e assegna e il ruolo verrà assegnato a Cosmos DB.

Verificare che i ruoli siano stati impostati correttamente

Usare quindi la pagina di controllo di accesso per verificare che tutti i ruoli siano stati configurati correttamente.

  1. Dopo aver assegnato i ruoli, selezionare "Visualizza accesso a questa risorsa" nella pagina IAM di controllo di accesso per verificare che sia stato tutto impostato correttamente.

    Screenshot dell'opzione Visualizza accesso alla risorsa nella pagina Controllo di accesso.

  2. Nella pagina, impostare l'ambito su "questa risorsa" e verificare di avere il ruolo di amministratore Key Vault e che l'entità di sicurezza Cosmos DB abbia il ruolo Utente crittografia Crypto Key Vault.

    Screenshot dell'opzione di regolazione dell'ambito per una query di assegnazione di ruolo.

Generare una chiave in Azure Key Vault

In questo caso, creare una nuova chiave usando Azure Key Vault e recuperare l'identificatore univoco.

  1. Dal portale di Azure passare all'istanza di Azure Key Vault che si intende usare per ospitare le chiavi di crittografia. Scegliere quindi Chiavi nel menu a sinistra:

    Screenshot dell'opzione Chiavi nel menu di spostamento delle risorse.

  2. Selezionare Genera/Importa, specificare un nome per la nuova chiave e selezionare le dimensioni della chiave RSA. Si consiglia di usare minimo 3072 per motivi di sicurezza. quindi selezionare Crea:

    Screenshot della finestra di dialogo per creare una nuova chiave.

    Suggerimento

    In alternativa, è possibile usare l'interfaccia della riga di comando di Azure per generare una chiave con:

    az keyvault key create \
        --vault-name <name-of-key-vault> \
        --name <name-of-key>
    

    Per altre informazioni sulla gestione di un insieme di credenziali delle chiavi con l'interfaccia della riga di comando di Azure, vedere Gestire Azure Key Vault con l'interfaccia della riga di comando di Azure.

  3. Dopo aver creato la chiave, selezionare la chiave appena creata e quindi la relativa versione corrente.

  4. Copiare l'Identificatore chiave della chiave, ad eccezione della parte dopo l'ultima barra:

    Screenshot del campo dell'identificatore di chiave e dell'azione di copia.

Creare un nuovo account Azure Cosmos DB

Creare un nuovo account Azure Cosmos DB usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Quando si crea un nuovo account Azure Cosmos DB dal portale di Azure, scegliere Chiave gestita dal cliente nel passaggio Crittografia. Nel campo URI della chiave incollare l'URI/identificatore chiave della chiave di Azure Key Vault copiata nel passaggio precedente:

Screenshot della pagina Crittografia con un URI di chiave gestita personalizzato configurato.

Uso di un'identità gestita nei criteri di accesso di Azure Key Vault

Questi criteri di accesso garantiscono l’accesso alle chiavi di crittografia da parte dell'account Azure Cosmos DB. I criteri di accesso vengono implementati concedendo l'accesso a un'identità di Microsoft Entra specifica. Sono supportati due tipi di identità:

  • L'identità di prima parte di Azure Cosmos DB può essere usata per concedere l'accesso al servizio Azure Cosmos DB.
  • L'identità gestita dell'account Azure Cosmos DB può essere usata per concedere l'accesso all'account in modo specifico.

Non disponibile

Usare chiavi gestite dal cliente con il backup continuo

È possibile creare un account di backup continuo usando l'interfaccia della riga di comando di Azure o un modello di Azure Resource Manager.

Attualmente, per la creazione di account di backup continui è supportata solo l'identità gestita assegnata dall'utente.

Dopo aver creato l'account, è possibile aggiornare l'identità in identità gestita assegnata dal sistema.

In alternativa, l'utente può anche creare prima un'identità di sistema con modalità di backup periodica, quindi eseguire la migrazione dell'account alla modalità di backup continuo seguendo queste istruzioni Eseguire la migrazione di un account Azure Cosmos DB dalla modalità di backup periodico a quello continuo

Non disponibile

Ripristinare un account continuo configurato con l'identità gestita

Nella richiesta di ripristino è necessaria un'identità assegnata dall'utente perché l'identità gestita dell'account di origine (identità assegnate dall'utente e assegnate dal sistema) non può essere trasferita automaticamente nell’account del database di destinazione.

Non disponibile

Chiavi gestite dal cliente e doppia crittografia

I dati archiviati nell'account Azure Cosmos DB quando si usano chiavi gestite dal cliente vengono crittografati due volte:

  • Una volta eseguita la crittografia predefinita con chiavi gestite da Microsoft.
  • Una volta eseguita la crittografia aggiuntiva con chiavi gestite dal cliente.

La doppia crittografia si applica solo all'archiviazione transazionale principale di Azure Cosmos DB. Alcune funzionalità implicano la replica interna dei dati in un secondo livello di archiviazione in cui non viene fornita la doppia crittografia, nemmeno con chiavi gestite dal cliente. Queste funzionalità sono:

Rotazione delle chiavi

La rotazione della chiave gestita dal cliente usata dall'account Azure Cosmos DB può essere eseguita in due modi.

  • Creare una nuova versione della chiave attualmente usata da Azure Key Vault:

    Screenshot dell'opzione Nuova versione nella pagina Versioni del portale di Azure.

  • Scambiare la chiave attualmente usata con un'altra aggiornando l'URI della chiave nell'account. Nel portale di Azure, accedere all'account Azure Cosmos DB e selezionare Crittografia dati dal menu a sinistra:

    Screenshot dell'opzione Crittografia dati nel menu di spostamento delle risorse.

    Sostituire quindi l'URI della chiave con la nuova chiave da usare e selezionare Salva:

    Screenshot dell'opzione Salva nella pagina Chiave.

    Ecco come ottenere lo stesso risultato in PowerShell:

    # Variable for resource group name
    $RESOURCE_GROUP_NAME = "<resource-group-name>"
    
    # Variable for account name
    $ACCOUNT_NAME = "<globally-unique-account-name>"
    
    # Variable for new key URI in the key vault
    $NEW_KEY_VAULT_KEY_URI="https://<key-vault-name>.vault.azure.net/keys/<new-key-name>"
    
    $parameters = @{
        ResourceGroupName = $RESOURCE_GROUP_NAME 
        Name = $ACCOUNT_NAME
        ResourceType = "Microsoft.DocumentDb/databaseAccounts"
    }
    $ACCOUNT = Get-AzResource @parameters
    
    $ACCOUNT.Properties.keyVaultKeyUri = $NEW_KEY_VAULT_KEY_URI
    
    $ACCOUNT | Set-AzResource -Force
    

La versione della chiave o la chiave precedente può essere disabilitata dopo che i log di controllo di Azure Key Vault non mostrano più l'attività di Azure Cosmos DB su tale versione della chiave o su tale chiave. Non dovrebbero essere eseguite altre attività sulla chiave o sulla versione della chiave precedente dopo 24 ore dalla rotazione delle chiavi.

Gestione degli errori

Se sono presenti errori con chiavi gestite dal cliente in Azure Cosmos DB, Azure Cosmos DB restituisce i dettagli dell'errore insieme a un codice di stato secondario HTTP nella risposta. È possibile usare il codice di stato secondario HTTP per eseguire il debug della causa radice del problema. Per ottenere l'elenco dei codici di stato HTTP supportati, vedere l'articolo Codici di stato HTTP per Azure Cosmos DB.

Domande frequenti

Di seguito sono riportate le domande frequenti sulla configurazione delle chiavi gestite dal cliente in Azure Cosmos DB.

Sono previsti altri addebiti per abilitare le chiavi gestite dal cliente?

No, non è previsto alcun addebito per abilitare questa funzionalità.

In che modo le chiavi gestite dal cliente influiscono sulla pianificazione della capacità?

Quando si usano le chiavi gestite dal cliente, le Unità richiesta utilizzate dalle operazioni del database registrano un aumento per riflettere l'elaborazione aggiuntiva necessaria per eseguire la crittografia e la decrittografia dei dati. Il consumo extra di UR può portare a un utilizzo leggermente superiore della capacità di cui è stato effettuato il provisioning. Utilizzare questa tabella come guida:

Tipo di operazione Aumento delle unità richiesta
Letture punto (recupero di elementi in base al relativo ID) + 5% per operazione
Qualsiasi operazione di scrittura + 6% per operazione | Circa + 0,06 UR per proprietà indicizzata
Query, lettura del feed di modifiche o feed di conflitti + 15% per operazione

Quali dati vengono crittografati con le chiavi gestite dal cliente?

Con le chiavi gestite dal cliente vengono crittografati tutti i dati archiviati nell'account Azure Cosmos DB tranne i metadati seguenti:

Le chiavi gestite dal cliente sono supportate per gli account Azure Cosmos DB esistenti?

Questa funzionalità è attualmente disponibile solo per i nuovi account.

È possibile usare chiavi gestite dal cliente con l'archivio analitico di Azure Cosmos DB?

Sì, Collegamento ad Azure Synapse supporta solo la configurazione delle chiavi gestite dal cliente usando l'identità gestita dell'account Azure Cosmos DB. È necessario usare l'identità gestita dell'account Azure Cosmos DB nei criteri di accesso di Azure Key Vault prima di abilitare Collegamento ad Azure Synapse nell'account. Per una guida pratica su come abilitare l'identità gestita e usarla in criteri di accesso, vedere Accedere ad Azure Key Vault da Azure Cosmos DB usando un'identità gestita.

È previsto un piano per supportare una maggiore granularità rispetto alle chiavi a livello di account?

Non attualmente, ma vengono prese in considerazione le chiavi a livello di contenitore.

Come è possibile stabilire se le chiavi gestite dal cliente sono abilitate nell'account Azure Cosmos DB usato?

Dal portale di Azure, accedere all'account Azure Cosmos DB e controllare la voce Crittografia dati nel menu a sinistra. Se questa voce è presente, le chiavi gestite dal cliente sono abilitate nell'account:

Screenshot dell'opzione Crittografia dati nel menu di spostamento delle risorse.

È possibile recuperare i dettagli dell'account Azure Cosmos DB anche a livello di codice e cercare la presenza della proprietà keyVaultKeyUri.

In che modo le chiavi gestite dal cliente influiscono sui backup periodici?

Azure Cosmos DB esegue backup regolari e automatici dei dati archiviati nell'account. Questa operazione esegue il backup dei dati crittografati.

Per ripristinare correttamente un backup periodico sono necessarie le condizioni seguenti:

  • La chiave di crittografia usata al momento del backup è necessaria e deve essere disponibile in Azure Key Vault. Questa condizione richiede che non sia stata effettuata alcuna revoca e che la versione della chiave usata al momento del backup sia ancora abilitata.
  • Se è stata usata un'identità gestita assegnata dal sistema nei criteri di accesso, concedere temporaneamente l'accesso all'identità di prima parte di Azure Cosmos DB prima di ripristinare i dati. Questo requisito dipende dal fatto che un'identità gestita assegnata dal sistema è specifica di un account e non può essere riutilizzata nell'account di destinazione. Dopo aver ripristinato completamente i dati nell'account di destinazione, è possibile impostare la configurazione dell'identità desiderata e rimuovere l'identità di prima parte dai criteri di accesso di Key Vault.

In che modo le chiavi gestite dal cliente influiscono sui backup continui?

Azure Cosmos DB offre la possibilità di configurare backup continui nell'account. Con i backup continui è possibile ripristinare i dati a qualsiasi momento entro gli ultimi 30 giorni. Per usare i backup continui in un account in cui sono abilitate le chiavi gestite dal cliente, è necessario usare un'identità gestita assegnata dal sistema o assegnata dall'utente nei criteri di accesso di Key Vault. Le identità proprietarie di Azure Cosmos DB non sono attualmente supportate negli account che usano backup continui.

Passaggi preliminari per gli account abilitati alle chiavi gestite dal cliente per aggiornare l'identità assegnata dall'utente.

  • Aggiungere un'identità assegnata dall'utente all'account Cosmos DB e concedere le autorizzazioni nei criteri di accesso dell'insieme di credenziali delle chiavi.
  • Impostare come predefinita l'identità assegnata dall'utente tramite l'interfaccia della riga di comando di Azure o ARM.
az cosmosdb update --resource-group MyResourceGroup --name MyAccountName --default-identity UserAssignedIdentity=/subscriptions/MySubscriptionId/resourcegroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyUserAssignedIdentity

Per eseguire correttamente un ripristino temporizzato sono necessarie le condizioni seguenti:

  • La chiave di crittografia usata al momento del backup è necessaria e deve essere disponibile in Azure Key Vault. Questo requisito si deve al fatto che non è stata effettuata alcuna revoca e che la versione della chiave usata al momento del backup sarà ancora abilitata.
  • È necessario assicurarsi che l'identità gestita assegnata dall'utente usata originariamente nell'account di origine sia ancora dichiarata nei criteri di accesso di Key Vault.

Importante

Se si revoca la chiave di crittografia prima di eliminare l'account, il backup dell'account potrebbe perdere i dati scritti fino a 1 ora prima della revoca.

Come si revoca una chiave di crittografia?

La revoca della chiave viene eseguita disabilitando la versione più recente della chiave:

Screenshot di una versione della chiave personalizzata disabilitata.

In alternativa, per revocare tutte le chiavi da un'istanza di Azure Key Vault, è possibile eliminare i criteri di accesso concessi all'entità di sicurezza di Azure Cosmos DB:

Screenshot dell'opzione Elimina per un criterio di accesso.

Quali operazioni sono disponibili dopo la revoca di una chiave gestita dal cliente?

L'unica operazione possibile quando la chiave di crittografia è stata revocata è l'eliminazione dell'account.

Assegnare una nuova identità gestita all'account del database ripristinato per continuare ad accedere o ripristinare l'accesso all'account del database

L'identità assegnata dall'utente è associata a un account Cosmos DB specificato, ogni volta che si assegna a un account un'identità assegnata dall'utente, ARM inoltra la richiesta alle identità del servizio gestite per stabilire questa connessione. Attualmente vengono fornite informazioni sull'identità utente dall'account del database di origine all'account del database di destinazione durante il ripristino (sia per il ripristino di backup continuo che periodico) della chiave gestita dal cliente e dell’identità assegnata dall'utente.

Questo perché i metadati di identità sono associati all'account del database di origine e il flusso di lavoro di ripristino non rientra nell'ambito dell'identità per l'account del database di destinazione. Perciò gli account di database ripristinati saranno in uno stato non valido e diventeranno inaccessibili dopo l'eliminazione dell'account di origine e la scadenza del tempo di rinnovo dell'identità.

Passaggi per assegnare una nuova identità gestita:

  1. Creare una nuova identità gestita assegnata dall'utente.
  2. Concedere a questa identità l'accesso alla chiave KeyVault.
  3. Assegnare questa nuova identità all'account del database ripristinato.

Passaggi successivi