Chiavi di crittografia gestite dal cliente (CMEK)
Per impostazione predefinita, tutti i dati at-rest in Firestore vengono criptati utilizzando la crittografia predefinita di Google. Firestore gestisce questa crittografia per conto tuo senza che tu debba fare altro.
Se hai requisiti di conformità o normativi specifici relativi alle chiavi che proteggono i tuoi dati, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per Firestore. Invece che da Google, le chiavi di crittografia che proteggono i tuoi dati sono gestite dal database Firestore utilizzando una chiave che puoi controllare e gestire in Cloud Key Management Service (Cloud KMS).
Questa pagina descrive CMEK per Firestore. Per ulteriori informazioni su CMEK in generale, incluso quando e perché attivarlo, consulta la seguente documentazione di Cloud KMS:
Per istruzioni su come eseguire attività correlate a CMEK con Firestore, consulta Utilizzare CMEK.
Funzionalità
- Controllo dei dati: CMEK ti consente di gestire la chiave KMS. Puoi girare, disattivare ed eliminare la chiave utilizzata per criptare i dati at-rest nel tuo database Firestore.
- Rendimento: CMEK non influisce sul contratto di servizio di Firestore.
- Auditabilità: se attivi il logging degli audit per Cloud KMS, tutte le operazioni sulla chiave vengono registrate e sono visibili in Cloud Logging.
- Limitazioni delle norme dell'organizzazione: puoi utilizzare limitazioni delle norme dell'organizzazione CMEK per specificare i requisiti di conformità alla crittografia per i database Firestore nella tua organizzazione.
Prezzi
Cloud KMS addebita il costo della chiave e di eventuali operazioni di crittografia eseguite utilizzando la chiave. Per ulteriori informazioni, consulta la pagina Prezzi di Cloud KMS.
Ti vengono addebitati i costi dell'operazione quando Firestore chiede alla chiave Cloud KMS di eseguire un'operazione di crittografia o decrittografia. L'operazione di crittografia/decrittografia tramite la chiave gestita dal cliente viene eseguita ogni 5 minuti e non è sincronizzata con le richieste del database. I costi sono generalmente ridotti, dato il numero previsto di operazioni crittografiche generate da Firestore. I costi per Cloud Audit Logs rappresentano una spesa aggiuntiva, ma dovrebbero essere anche generalmente bassi, dato il numero previsto di operazioni di crittografia.
Non sono previsti costi aggiuntivi per l'utilizzo di Firestore per i database protetti da CMEK e continuano a essere applicati i prezzi di Firestore.
Se revochi la chiave di un database, il costo dello spazio di archiviazione verrà addebitato in base alle dimensioni dell'ultimo giorno in cui la chiave era disponibile. Continuerai a sostenere costi di archiviazione per le dimensioni del database finché il database non verrà eliminato o la chiave non sarà di nuovo disponibile.
Che cosa viene protetto con CMEK
Quando crei un database Firestore protetto da CMEK, la chiave Cloud KMS viene utilizzata per proteggere i dati at-rest. Sono inclusi i dati che memorizzi su un disco o una chiavetta USB, 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. Al contrario, il sistema Firestore esegue un polling di Cloud KMS ogni 5 minuti per verificare se la chiave è ancora disponibile ed esegue le operazioni di crittografia e decrittografia se è disponibile.
Se il sistema rileva che la chiave non è disponibile, entro 10 minuti tutte le chiamate successive al database Firestore, incluse letture, scritture e query, restituiranno un errore FAILED_PRECONDITION
con il messaggio The customer-managed encryption key required by the requested
resource is not accessible
.
Se il database ha criteri di durata (TTL) e se vengono superati i tempi di scadenza mentre la chiave non è disponibile, l'eliminazione dei dati per TTL verrà ritardata fino al reintegro della chiave. Se nel database sono in corso operazioni a lunga esecuzione, queste verranno interessate come segue:
- Le operazioni di import o esportazione dei dati non faranno più progressi e verranno contrassegnate come
Failed
. Le operazioni non riuscite non verranno rieseguite se la chiave viene reintegrata. - Le operazioni di costruzione dell'indice e quelle di attivazione di nuovi criteri TTL non faranno più progressi. Le operazioni interrotte verranno ripetute se la chiave viene reintegrata.
Le chiavi sono considerate non disponibili in qualsiasi situazione che impedisca intenzionalmente a Firestore di accedervi. È incluso quanto segue:
- Disattivando o eliminando la versione della chiave in uso. Fai attenzione quando elimini una versione della chiave, perché questa operazione può causare una perdita di dati non recuperabile.
- Rimuovi l'autorizzazione per accedere alla chiave dall'account di servizio Firestore.
Se la chiave viene reintegrata, l'operazione di polling rileva che la chiave è nuovamente disponibile. L'accesso viene riattivato, in genere entro pochi minuti, ma in rari casi possono essere necessarie fino a alcune 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. Firestore non rileva alcuna modifica finché non vengono applicate in Cloud KMS.
Il reintegro di una chiave prevede quanto segue, a seconda della situazione:
- Riabilitare 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 di nuovo all'agente di servizio Firestore l'autorizzazione per accedere alla chiave.
Considerazioni sulla rotazione delle chiavi
Quando ruoti la chiave CMEK, Firestore cripta nuovamente il database con la versione primaria più recente della chiave CMEK. Durante la procedura di nuova crittografia, mantieni disponibili sia la vecchia che la nuova versione della chiave. Al termine della nuova crittografia, la disattivazione o l'eliminazione delle vecchie versioni della chiave CMEK non disattiva l'accesso al database, poiché è criptato con la nuova versione della chiave primaria.
Puoi anche visualizzare le versioni delle chiavi utilizzate per proteggere un database. Per ulteriori informazioni, consulta Visualizzare la chiave in uso.
Considerazioni sulle chiavi esterne
Quando utilizzi una chiave Cloud EKM, Google non ha alcun controllo sulla disponibilità della chiave gestita esternamente nel sistema del partner di gestione delle chiavi esterne.
Se una chiave gestita esternamente non è disponibile, Firestore continua a supportare le operazioni complete del database utilizzando una versione memorizzata nella cache della chiave per un massimo di un'ora.
Dopo un'ora, se Firestore non riesce ancora a connettersi a Cloud KMS, inizia a mettere offline il database come misura di protezione. Le chiamate al database non andranno a buon fine con un errore FAILED_PRECONDITION
che include ulteriori dettagli.
Consulta la documentazione di Cloud External Key Manager per ulteriori considerazioni sull'utilizzo delle chiavi esterne.
Backup e ripristino
Un backup utilizza lo stesso meccanismo di crittografia del database da cui è stato creato. Quando un database Firestore protetto da CMEK crea un backup, lo cripta con la versione della chiave primaria utilizzata al momento della creazione del backup.
Firestore crea il primo backup di un database CMEK dopo 24 ore dal momento in cui attivi le pianificazioni dei backup.
Per ulteriori informazioni sui backup di Firestore, consulta Eseguire il backup e il recupero 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:
- Ripristina in un database CMEK con una chiave appena specificata.
- Ripristina in un database non CMEK che utilizza la crittografia predefinita di Google.
- Ripristina in un database che utilizza la stessa crittografia del backup.
Per ulteriori informazioni sul ripristino di un database Firestore da un backup, consulta Ripristinare i dati da un backup del database. Per ulteriori informazioni sul ripristino di un database Firestore protetto da CMEK da un backup, consulta Ripristinare un database protetto da CMEK.
Monitoraggio delle chiavi
Puoi utilizzare il monitoraggio delle chiavi per visualizzare le risorse, ad esempio i database Firestore, protette da una chiave. Per saperne di più sul monitoraggio delle chiavi, consulta Visualizzare 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 con CMEK abilitato:
- Puoi modificare le impostazioni di recupero point-in-time (PITR) di Firestore in un database abilitato per CMEK anche se la chiave non è disponibile perché le impostazioni PITR sono metadati del database che non vengono criptati da CMEK.
- Puoi eliminare un database CMEK con chiavi non disponibili.
- Quando crei un database abilitato per le chiavi CMEK, le chiavi disattivate 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 con un errore
FAILED_PRECONDITION
400.
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 delle entità e dei documenti, non per i dati dell'indice.
- Non puoi attivare CMEK sui database esistenti. Puoi attivare CMEK solo sui nuovi database e devi farlo al momento della creazione. Per eseguire la migrazione dei dati da un database non CMEK esistente a un database protetto da CMEK, esporta i dati e poi importali in un nuovo database protetto da CMEK. Puoi anche ripristinare i dati da un database non CMEK a un database CMEK.
- Firestore supporta un numero limitato di database protetti da CMEK.
- La protezione CMEK non è supportata con l'integrazione di Cloud Functions (1ª generazione.). Se vuoi usufruire della protezione CMEK, utilizza gli trigger Firestore di Cloud Run Functions (2ª generazione.).