Panoramica delle chiavi di crittografia gestite dal cliente (CMEK)

Per impostazione predefinita, tutti i dati at-rest in Google Cloud, inclusi i dati in Spanner, sono protetti tramite la crittografia predefinita di Google. Google Cloud gestisce questa crittografia predefinita per te 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é lasciare che sia Google a possedere e gestire le chiavi di crittografia che proteggono i tuoi dati, il database Spanner viene protetto tramite 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 di istanze personalizzate.

In questa pagina viene descritta la CMEK per Spanner. Per ulteriori informazioni su CMEK in generale, tra cui quando e perché abilitarla, consulta la documentazione di Cloud KMS.

Funzionalità

  • Controllo dellcontrollo dell'accesso: gli amministratori possono ruotare, gestire l'accesso e disabilitare o eliminare la chiave utilizzata per proteggere i dati at-rest in Spanner.
  • Verificabilità: 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 sono visibili in Cloud Logging. Le chiavi Cloud EKM supportano Key Access Justification, che aggiunge un campo di giustificazione a tutte le richieste chiave. Con alcuni partner esterni per la gestione delle chiavi, puoi approvare o rifiutare automaticamente queste richieste, in base alla giustificazione.
  • Prestazioni: non sono previste 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 sono previsti costi aggiuntivi per Spanner. Per ulteriori informazioni, consulta i prezzi di Spanner.

Cloud KMS ti viene addebitato sia per il costo della chiave sia per eventuali operazioni di crittografia su quella chiave (quando Spanner utilizza la chiave per la crittografia/decrittografia). Prevediamo che questi 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 tua chiave Cloud KMS per proteggere i dati at-rest. Ciò include i dati di 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 log operativi e dump principali
  • Dati in transito o in memoria
  • Metadati del database

In Spanner ci sono tre livelli di crittografia. I dati at-rest sono suddivisi in blocchi di sottofile per l'archiviazione e ogni singolo 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, Data Encryption Key). A causa dell'elevato volume di chiavi utilizzate da Google e della necessità di mantenere una bassa latenza e un'alta disponibilità, queste chiavi vengono archiviate vicino ai dati che devono criptare. Le DEK sono a loro volta criptate (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 disabilitazione o l'eliminazione delle versioni precedenti della chiave CMEK non disabiliterà l'accesso al database. Puoi anche visualizzare le versioni della chiave utilizzate per proteggere un database.

Con CMEK

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

Senza CMEK

Diagramma che mostra la crittografia con una chiave di proprietà di Google e gestita da Google

Attiva CMEK

Per utilizzare CMEK per 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 Utilizzo di CMEK.

Le API di accesso ai dati di Spanner, come quelle utilizzate per gestire le sessioni ed eseguire transazioni sui dati, sono esattamente le stesse sia per le chiavi gestite dal cliente sia per le chiavi di proprietà di Google e gestite da Google. Le applicazioni non devono specificare chiavi o configurazioni di crittografia durante la lettura o la scrittura dei dati. Tutta la crittografia è gestita dal servizio.

Gestisci chiavi

Le operazioni di gestione delle chiavi vengono eseguite utilizzando Cloud KMS. Spanner non può rilevare o agire su eventuali modifiche alla chiave 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 tre ore; le modifiche alle autorizzazioni in genere si propagano molto più velocemente.

Dopo aver creato il database, Spanner chiama Cloud KMS ogni 5 minuti circa 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. Tutte le chiamate successive al database, incluse sessioni, letture e scritture, restituiranno 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 scenari, 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 riesce a comunicare per la prima volta con Cloud KMS, Spanner continua a supportare le operazioni complete del database secondo il criterio del "best effort" per un periodo massimo di un'ora, per ridurre al minimo l'impatto di qualsiasi incidente sul carico di lavoro.

Dopo un'ora, se Spanner non è ancora in grado di connettersi con Cloud KMS, Spanner inizia a rendere offline il database come misura protettiva. I dati nel database Spanner rimangono inaccessibili finché il database non riesce a riconnettersi con Cloud KMS e Cloud KMS risponde che la chiave è attiva.

Al contrario, se il database Spanner è protetto da una chiave che è disabilitata nel momento in cui Spanner non riesce a comunicare per la prima volta con Cloud KMS, il database rimane inaccessibile finché non riesce a riconnettersi a Cloud KMS e non viene riattivata la chiave.

Considerazioni chiave esterne

Quando utilizzi una chiave Cloud EKM, Google non ha alcun controllo sulla disponibilità della 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 riesce ancora a connettersi con Cloud KMS, Spanner inizia a mettere offline il database come misura protettiva. Le chiamate al database non riusciranno e verrà restituito un errore FAILED_PRECONDITION: External key error: Could not find a key resource at the key URI.

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

Backup e ripristino

I backup di Spanner, come i database, possono essere protetti da CMEK o chiavi di proprietà di Google e gestite 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 quando crei il 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 relativa chiave e 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 chiave che la versione della chiave utilizzata per criptare il backup. Per maggiori informazioni, consulta 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.

Richiedi o limita 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 queste norme puoi:

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

  • Limita le chiavi Cloud KMS dell'organizzazione disponibili per la protezione CMEK.

Per maggiori informazioni, vedi Criteri dell'organizzazione CMEK.