Chiavi di crittografia gestite dal cliente (CMEK)

Per impostazione predefinita, tutti i dati at-rest in Cloud Firestore vengono criptati utilizzando la crittografia predefinita di Google. Cloud Firestore gestisce questa crittografia per conto tuo senza che tu debba fare altro.

Se hai requisiti normativi o di conformità specifici relativi alle chiavi che proteggono i tuoi dati, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per Cloud Firestore. Invece di Google, sei tu a gestire le chiavi di crittografia che proteggono i tuoi dati. Il tuo database Cloud Firestore è protetto utilizzando una chiave che controlli e gestisci in Cloud Key Management Service (Cloud KMS).

In questa pagina viene descritto CMEK per Cloud Firestore. Per saperne di più sulle CMEK in generale, incluso quando e perché attivarle, consulta la seguente documentazione di Cloud KMS:

Per istruzioni su come eseguire attività relative alle CMEK con Cloud Firestore, consulta Utilizza CMEK.

Funzionalità

  • Controlli relativi ai dati: CMEK ti consente di gestire la chiave KMS. Puoi ruotare, disattivare e distruggere la chiave utilizzata per criptare i dati at-rest nel tuo database Cloud Firestore.
  • Prestazioni: CMEK non influisce sullo SLA di Cloud Firestore.
  • Controllabilità: se attivi l'audit logging per Cloud KMS, tutte le operazioni sulla chiave vengono registrate e sono visualizzabili in Cloud Logging.
  • Vincoli delle policy dell'organizzazione: puoi utilizzare i vincoli delle policy dell'organizzazione CMEK per specificare i requisiti di conformità della crittografia per i database Cloud Firestore della tua organizzazione.

Prezzi

Cloud KMS addebita il costo della chiave e di tutte le operazioni di crittografia eseguite utilizzando la chiave. Per ulteriori informazioni, consulta Prezzi di Cloud KMS.

Ti vengono addebitati i costi delle operazioni quando Cloud Firestore chiede alla chiave Cloud KMS di eseguire un'operazione di crittografia o decriptazione. L'operazione di crittografia/decrittografia da parte della chiave gestita dal cliente avviene ogni 5 minuti e non è sincronizzata con le richieste al database. I costi sono generalmente bassi, dato il numero previsto di operazioni crittografiche generate da Cloud Firestore. I costi di Cloud Audit Logs rappresentano una spesa aggiuntiva, ma dovrebbero essere generalmente bassi, dato il numero previsto di operazioni di crittografia.

Non sono previsti costi aggiuntivi per Cloud Firestore per l'utilizzo di un database protetto da CMEK e continuano a essere applicati i prezzi di Cloud Firestore.

Se revochi la chiave di un database, il costo di archiviazione verrà addebitato in base alle dimensioni dell'ultimo giorno in cui la chiave era disponibile. Continuerai a sostenere i costi di archiviazione per le dimensioni del database fino a quando il database non verrà eliminato o la chiave non tornerà disponibile.

Cosa è protetto con CMEK

Quando crei un database Cloud Firestore protetto da CMEK, la tua chiave Cloud KMS viene utilizzata per proteggere i dati at-rest. Sono inclusi i dati che memorizzi su un disco o un'unità flash, inclusi indici e backup. Sono previste alcune eccezioni. I seguenti tipi di dati vengono criptati con la crittografia predefinita di Google e non con la chiave CMEK:

  • Dati in transito o in memoria
  • Metadati del database

Come viene gestito lo stato di una chiave non disponibile

Le operazioni di crittografia e decrittografia non vengono eseguite per ogni richiesta di dati. Invece, il sistema Cloud Firestore esegue il polling di Cloud KMS ogni 5 minuti per verificare se la chiave è ancora disponibile, quindi esegue le operazioni di crittografia e decriptazione se la chiave è disponibile.

Se il sistema rileva che la chiave non è disponibile, entro 10 minuti tutte le chiamate successive al database Cloud Firestore, incluse letture, scritture e query, restituiscono un errore FAILED_PRECONDITION con il messaggio The customer-managed encryption key required by the requested resource is not accessible.

Se il database ha policy di durata (TTL) e se le date di scadenza vengono superate mentre la chiave non è disponibile, l'eliminazione dei dati da parte di TTL verrà ritardata fino al ripristino della chiave. Se nel database sono in corso operazioni a lunga esecuzione, queste verranno interessate come segue:

  • Le operazioni di importazione o esportazione dei dati non verranno più eseguite e verranno contrassegnate come Failed. Le operazioni non riuscite non verranno ritentate se la chiave viene reintegrata.
  • Le operazioni di creazione degli indici e le operazioni di attivazione di nuove policy TTL non faranno progressi. Se la chiave viene reintegrata, verrà eseguito un nuovo tentativo per le operazioni interrotte.

Le chiavi sono considerate non disponibili in qualsiasi situazione che impedisca intenzionalmente a Cloud Firestore di accedere alla chiave. È incluso quanto segue:

Se la chiave viene reintegrata, l'operazione di polling rileva che la chiave è di nuovo disponibile. L'accesso viene riattivato, di solito entro pochi minuti, ma in rari casi possono essere necessarie fino a poche ore. Tieni presente che alcune operazioni sulle chiavi Cloud KMS, come la disattivazione o l'eliminazione di una chiave, possono richiedere fino a 3 ore per la propagazione. Cloud Firestore non rileva alcuna modifica finché non diventa effettiva in Cloud KMS.

La reintegrazione di una chiave prevede quanto segue, a seconda della situazione:

  • Riattivazione di una versione della chiave disattivata.
  • Ripristino di una versione della chiave eliminata. Prima di essere eliminata definitivamente, una versione della chiave viene pianificata per l'eliminazione. Puoi ripristinare una chiave solo durante il periodo in cui è pianificata l'eliminazione di una versione della chiave. Non puoi ripristinare una chiave che è già stata distrutta definitivamente.
  • Concedere nuovamente l'autorizzazione al service agent Cloud Firestore per accedere alla chiave.

Considerazioni sulla rotazione delle chiavi

Quando ruoti la chiave CMEK, Cloud Firestore cripta nuovamente il database con l'ultima versione principale della chiave CMEK. Durante il processo di nuova crittografia, tieni disponibili sia la versione precedente che quella nuova della chiave. Una volta completata la nuova crittografia, la disattivazione o l'eliminazione delle versioni precedenti della chiave CMEK non disattiverà l'accesso al database, poiché è crittografato con la nuova versione della chiave primaria.

Puoi anche visualizzare le versioni delle chiavi utilizzate per proteggere un database. Per saperne di più, consulta Visualizza la chiave in uso.

Considerazioni principali sulle chiavi esterne

Quando utilizzi una chiave Cloud EKM, Google non ha alcun controllo sulla disponibilità della chiave gestita esternamente nel sistema partner di gestione delle chiavi esterne.

Se una chiave gestita esternamente non è disponibile, Cloud Firestore continua a supportare le operazioni complete sul database secondo il criterio del "best effort" per un massimo di un'ora.

Dopo un'ora, se Cloud Firestore non riesce ancora a connettersi a Cloud KMS, Cloud Firestore inizia a portare il database offline come misura di protezione. Le chiamate al database non andranno a buon fine e verrà visualizzato un errore FAILED_PRECONDITION che include ulteriori dettagli.

Per saperne di più sull'utilizzo delle chiavi esterne, consulta la documentazione di Cloud External Key Manager.

Backup e ripristino

Un backup utilizza lo stesso meccanismo di crittografia del database da cui lo hai creato. Quando un database Cloud Firestore protetto da CMEK crea un backup, lo cripta con la versione della chiave primaria utilizzata al momento della creazione del backup.

Cloud Firestore crea il primo backup di un database CMEK 24 ore dopo l'attivazione delle pianificazioni dei backup.

Per saperne di più sui backup di Cloud Firestore, consulta Esegui il backup e il ripristino dei dati.

Per impostazione predefinita, un database ripristinato da un backup utilizza lo stesso meccanismo di crittografia del backup. Quando ripristini un database, puoi specificare un tipo di crittografia diverso in uno dei seguenti modi:

  • Esegui il ripristino in un database CMEK con una chiave appena specificata.
  • Esegui il ripristino in un database non CMEK che utilizza la crittografia predefinita di Google.
  • Esegui il ripristino in un database che utilizza la stessa crittografia del backup.

Per saperne di più sul ripristino di un database Cloud Firestore da un backup, consulta Ripristina i dati da un backup del database. Per saperne di più sul ripristino di un database Cloud Firestore protetto da CMEK da un backup, consulta Ripristina un database protetto da CMEK.

Clona

Per impostazione predefinita, un database clonato da un altro database utilizza lo stesso meccanismo di crittografia del database di origine. Quando cloni un database, puoi specificare un tipo di crittografia diverso in uno dei seguenti modi:

  • Clona in un database CMEK con una chiave appena specificata.
  • Clonare in un database non CMEK che utilizza la crittografia predefinita di Google.
  • (Predefinito) Clona in un database che utilizza la stessa crittografia del database di origine.

Per saperne di più sulla clonazione di un database Cloud Firestore, consulta Clona un database. Per saperne di più sulla clonazione di un database Cloud Firestore protetto da CMEK, consulta Clona un database protetto da CMEK.

Monitoraggio delle chiavi

Puoi utilizzare il monitoraggio delle chiavi per visualizzare le risorse, ad esempio i database Cloud Firestore, protette da una chiave. Per saperne di più sul monitoraggio delle chiavi, consulta Visualizza l'utilizzo delle chiavi.

CMEK e disponibilità delle chiavi

Quando le chiavi non sono disponibili o sono disattivate, tieni presente i seguenti comportamenti che possono verificarsi nei database abilitati per CMEK:

  • Puoi modificare le impostazioni di recupero point-in-time (PITR) di Cloud Firestore su un database abilitato per CMEK anche se la chiave non è disponibile, perché le impostazioni PITR sono metadati del database, che non sono criptati da CMEK.
  • Puoi eliminare un database CMEK con chiavi non disponibili.
  • Quando crei un database abilitato per CMEK, le chiavi disabilitate non vengono visualizzate nell'elenco delle chiavi disponibili nella console Google Cloud. Se inserisci manualmente una chiave disattivata, il processo di creazione del database non andrà a buon fine e verrà visualizzato un errore 400 FAILED_PRECONDITION.

Limitazioni

  • Non puoi modificare una chiave per un database protetto da CMEK. Puoi ruotare, attivare e disattivare le chiavi.
  • I database protetti da CMEK supportano Key Visualizer solo per i dati di entità e documenti, non per i dati di indice.
  • Non puoi attivare CMEK sui database esistenti. Puoi attivare CMEK solo sui nuovi database e devi farlo al momento della creazione del database. Per eseguire la migrazione dei dati di un database esistente non CMEK in un database protetto da CMEK, esporta i dati e poi importali in un nuovo database protetto da CMEK. Puoi anche ripristinare o clonare i dati da un database non CMEK a un database CMEK.
  • Cloud Firestore supporta un numero limitato di database protetti da CMEK.
  • Non supportiamo la protezione CMEK con l'integrazione di Cloud Functions (1ª gen.). Se vuoi avere la protezione CMEK, utilizza i trigger di Firestore per le funzioni Cloud Run (2ª gen.).

Come i dati possono uscire dai database protetti da CMEK

  • I dati copiati dalla tua applicazione possono essere archiviati dagli utenti in modi arbitrari. Sono necessari controlli di sicurezza appropriati per qualsiasi applicazione che acceda ai dati di Cloud Firestore per garantire che i dati siano accessibili solo a chi dispone dell'autorizzazione appropriata. Per ulteriori dettagli, consulta le regole di sicurezza e IAM.

  • I dati di un database protetto da CMEK possono essere spostati in un database non CMEK utilizzando Backup e ripristino, Clona o Importa ed Esporta. Utilizza i controlli IAM appropriati per concedere l'autorizzazione per queste azioni solo agli utenti autorizzati. Inoltre, è possibile utilizzare i vincoli delle policy dell'organizzazione CMEK per richiedere che tutti i database creati tramite ripristino o clonazione e tutti i bucket Cloud Storage utilizzati per l'importazione siano protetti da CMEK.

Passaggi successivi