Panoramica delle chiavi di crittografia gestite dal cliente (CMEK)

Per impostazione predefinita, tutti i dati at-rest in Google Cloud, inclusi quelli in Spanner, sono protetti mediante la crittografia predefinita gestita da Google. Google Cloud gestisce questa crittografia predefinita 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 Spanner. Anziché Google a gestire le chiavi di crittografia che proteggono i tuoi dati, il tuo database Spanner è protetto utilizzando una chiave che puoi controllare e gestire in Cloud Key Management Service (KMS). Può essere una chiave simmetrica, una chiave Cloud HSM o una chiave Cloud External Key Manager.

Le CMEK non supportano le configurazioni delle istanze personalizzate.

Questa pagina descrive la CMEK per Spanner. Per ulteriori informazioni su CMEK in generale, inclusi quando e perché abilitarla, consulta la documentazione di Cloud KMS.

Funzionalità

  • Controllo dell'controllo dell'accesso:gli amministratori possono ruotare, gestire l'accesso e disabilitare o eliminare la chiave utilizzata per proteggere i dati at-rest in Spanner.
  • Auditbilità: se abiliti l'audit logging per l'API Cloud KMS nel tuo progetto, tutte le azioni sulla chiave, incluse quelle eseguite da Spanner, vengono registrate e visibili in Cloud Logging. Le chiavi Cloud EKM supportano il metodo Key Access Justification, che aggiunge un campo di giustificazione a tutte le richieste delle chiavi. Con partner esterni selezionati la gestione delle chiavi puoi approvare o rifiutare automaticamente queste richieste, in base alla giustificazione.
  • Prestazioni: non sono state apportate modifiche alle prestazioni di Spanner o all'accordo sul livello del servizio.

Prezzi

Spanner fattura i database abilitati per CMEK come qualsiasi altro database; non ci sono costi aggiuntivi per Spanner. Per maggiori informazioni, consulta Prezzi di Spanner.

Cloud KMS ti addebita sia il costo della chiave sia le eventuali operazioni di crittografia su quella chiave (ogni volta che Spanner utilizza la chiave per la crittografia/decrittografia). Prevediamo che i costi siano minimi, in base al numero previsto di operazioni crittografiche generate da Spanner. Per ulteriori informazioni, consulta i prezzi di Cloud KMS.

Cosa è protetto con CMEK

In un database abilitato per CMEK, Spanner utilizza la chiave Cloud KMS per proteggere i dati at-rest. Sono inclusi i dati in un database archiviato su disco o flash.

Si applicano alcune eccezioni. I seguenti tipi di dati sono protetti dalla crittografia at-rest predefinita di Google e non dalla chiave CMEK:

  • Un sottoinsieme di chiavi di riga che contrassegnano i limiti dell'intervallo
  • Dati di debug, inclusi core dump e log operativi
  • Dati in transito o in memoria
  • Metadati del database

In Spanner, ci sono tre livelli di crittografia. I dati at-rest vengono suddivisi in blocchi di sottofile per l'archiviazione e ogni blocco viene criptato a livello di archiviazione con una chiave di crittografia individuale. La chiave utilizzata per criptare i dati in un blocco è chiamata chiave di crittografia dei dati (DEK). A causa dell'elevato volume di chiavi utilizzate da Google e della necessità di avere una bassa latenza e una disponibilità elevata, queste chiavi vengono archiviate vicino ai dati che criptano. Le DEK sono criptate (o sottoposte a wrapping) da una chiave di crittografia della chiave (KEK). Infine, ogni KEK è criptata con la chiave di crittografia gestita dal cliente.

Quando ruoti la chiave CMEK, Spanner ricripta solo le KEK intermedie con l'ultima versione primaria della chiave CMEK. Al termine della ricrittografia, la disattivazione o l'eliminazione delle versioni precedenti della chiave CMEK non disattiverà l'accesso al database. Puoi anche visualizzare le versioni della chiave utilizzate per proteggere un database.

Con CMEK

Diagramma che illustra la crittografia con una chiave di crittografia gestita dal cliente

Senza CMEK

Diagramma che illustra la crittografia con una chiave di crittografia gestita da Google

Attivare CMEK

Per utilizzare CMEK per i database Spanner, devi creare un nuovo database e specificare la chiave Cloud KMS al momento della creazione del database.

Spanner è in grado di accedere alla chiave per tuo conto dopo che hai concesso il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) a un account di servizio Spanner gestito da Google.

Per istruzioni dettagliate, consulta Utilizzare CMEK.

Le API di accesso ai dati di Spanner, ad esempio quelle utilizzate per gestire le sessioni ed eseguire transazioni sui dati, sono esattamente le stesse per le chiavi gestite dal cliente e da Google. Le applicazioni non devono specificare chiavi o configurazioni di crittografia durante la lettura o la scrittura di dati. L'intera crittografia viene gestita dal servizio.

Gestisci chiavi

Le operazioni di gestione delle chiavi vengono eseguite utilizzando Cloud KMS. Spanner non può rilevare o agire su modifiche alle chiavi finché non vengono propagate da Cloud KMS. La propagazione di alcune operazioni, come la disattivazione o l'eliminazione di una chiave, può richiedere fino a 3 ore. Le modifiche alle autorizzazioni di solito si propagano molto più rapidamente.

Una volta creato il database, Spanner chiama Cloud KMS circa ogni 5 minuti per assicurarsi che la chiave sia ancora valida.

Se Spanner rileva che la chiave Cloud KMS è stata disabilitata o eliminata, un'operazione per rendere il database inaccessibile inizia immediatamente. Qualsiasi chiamata successiva al database, incluse sessioni, letture e scritture, restituirà un errore FAILED_PRECONDITION: KMS key required by the Spanner resource is not accessible.

Se le chiamate di Spanner a Cloud KMS rilevano che una chiave precedentemente disabilitata è stata riattivata, Cloud KMS ripristina automaticamente l'accesso al database Spanner.

Come viene gestito uno stato di una chiave non disponibile

In rari casi, ad esempio in periodi in cui Cloud KMS non è disponibile, Spanner potrebbe non essere in grado di recuperare lo stato della chiave da Cloud KMS.

Se il database Spanner è protetto da una chiave abilitata nel momento in cui Spanner non è in grado di comunicare per la prima volta con Cloud KMS, Spanner continua a supportare le operazioni del database complete secondo il criterio del "best effort" per un periodo fino a un'ora, per ridurre al minimo l'impatto di qualsiasi incidente di questo tipo sul carico di lavoro.

Dopo un'ora, se Spanner non è ancora in grado di connettersi a Cloud KMS, Spanner inizia a portare il database offline come misura protettiva. I dati nel tuo database Spanner rimangono inaccessibili fino a quando il database non si riconnette con Cloud KMS e Cloud KMS risponde che la chiave è attiva.

Al contrario, se il database Spanner è protetto da una chiave disabilitata nel momento in cui Spanner non è in grado di comunicare inizialmente con Cloud KMS, il database rimane inaccessibile finché non riesce a riconnettersi a Cloud KMS e non ha riattivato la chiave.

Considerazioni sulle chiavi esterne

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

Se non è disponibile una chiave gestita esternamente, Spanner continua a supportare le operazioni di database complete utilizzando una versione della chiave memorizzata nella cache, per un massimo di un'ora.

Dopo un'ora, se Spanner non è ancora in grado di connettersi a Cloud KMS, Spanner inizia a mettere offline il database come misura protettiva. Le chiamate al database non andranno a buon fine con un errore FAILED_PRECONDITION: External key error: Could not find a key resource at the key URI.

Per ulteriori considerazioni sull'utilizzo di chiavi esterne, consulta la documentazione di Cloud External Key Manager.

Backup e ripristino

I backup di Spanner, come i database, possono essere protetti tramite CMEK o crittografia gestita da Google. Per impostazione predefinita, un backup utilizza la stessa configurazione di crittografia del database, ma puoi ignorare questo comportamento specificando una configurazione di crittografia diversa durante la creazione del backup. Se il backup è abilitato per CMEK, viene criptato utilizzando la versione primaria della chiave KMS al momento della creazione del backup. Una volta creato il backup, la chiave e la versione della chiave non possono essere modificate, anche se la chiave KMS viene ruotata. Per ulteriori informazioni, consulta Backup di un database.

Quando ripristini un database da un backup, per impostazione predefinita il database ripristinato utilizza la stessa configurazione di crittografia del backup. Puoi ignorare questo comportamento specificando una configurazione di crittografia diversa durante il ripristino del database. Per ripristinare un backup abilitato per CMEK, devono essere disponibili sia la versione della chiave che la versione della chiave utilizzata per criptare il backup. Per ulteriori informazioni, consulta la sezione Ripristino da un backup.

Logging

Puoi controllare le richieste che Spanner invia a Cloud KMS per tuo conto in Cloud Logging, se hai abilitato l'audit logging per l'API Cloud KMS nel tuo progetto. Queste voci di log di Cloud KMS sono visibili in Cloud Logging.

Richiedere o limitare CMEK all'interno dell'organizzazione

Puoi impostare criteri a livello di organizzazione relativi all'utilizzo della protezione tramite CMEK in vari prodotti Google Cloud, tra cui Spanner. Con questi criteri puoi:

  • Richiedi che i nuovi database Spanner creati dalla tua organizzazione utilizzino la protezione CMEK.

  • Limita le chiavi Cloud KMS della tua organizzazione disponibili per la protezione CMEK.

Per saperne di più, consulta i criteri dell'organizzazione CMEK.