Panoramica delle chiavi di crittografia gestite dal cliente (CMEK)

Questa pagina descrive le chiavi di crittografia gestite dal cliente (CMEK) per Spanner. Per saperne di più su CMEK in generale, incluso quando e perché abilitarla, consulta la documentazione di Cloud Key Management Service.

Per impostazione predefinita, Spanner cripta i contenuti inattivi dei clienti at rest. Spanner gestisce la crittografia per te senza ulteriori azioni da parte tua. Questa opzione è denominata crittografia predefinita di Google.

Se vuoi controllare le chiavi di crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) in Cloud KMS con i servizi integrati con CMEK, incluso Spanner. L'utilizzo delle chiavi Cloud KMS ti consente di controllare il livello di protezione , la località, la pianificazione della rotazione, le autorizzazioni di utilizzo e di accesso e i limiti crittografici. Con Cloud KMS puoi inoltre monitorare l'utilizzo delle chiavi, visualizzare gli audit log e controllare i cicli di vita delle chiavi. Invece di Google, sei tu ad avere la proprietà e la gestione delle chiavi di crittografia della chiave (KEK) simmetriche che proteggono i tuoi dati. Puoi controllare e gestire queste chiavi in Cloud KMS.

Dopo aver configurato le risorse con le chiavi CMEK, l'esperienza di accesso alle risorse Spanner è simile all'utilizzo della crittografia predefinita di Google. Per saperne di più sulle opzioni di crittografia, consulta Chiavi di crittografia gestite dal cliente (CMEK).

Per scoprire come utilizzare le chiavi CMEK create manualmente per proteggere le risorse Spanner, consulta Proteggere un database con CMEK.

CMEK con Autokey di Cloud KMS

Puoi creare le chiavi CMEK manualmente per proteggere le risorse Spanner oppure utilizzare Cloud KMS Autokey. Con Autokey, le chiavi e le chiavi automatizzate vengono generate on demand per supportare la creazione delle risorse in Spanner. Vengono creati gli agenti di servizio che utilizzano le chiavi per le operazioni di crittografia e decrittografia, se non esistono già, e ricevono i ruoli IAM (Identity and Access Management) richiesti. Per saperne di più, consulta la panoramica di Autokey.

Spanner è compatibile con Cloud KMS Autokey solo quando crei risorse utilizzando Terraform o l'API REST. Non puoi utilizzare Cloud KMS Autokey per creare più chiavi Cloud KMS regionali (a singola regione) per un database Spanner.

Per utilizzare le chiavi CMEK create da Cloud KMS Autokey per proteggere le risorse Spanner, segui i passaggi forniti per Secret Manager in Utilizzo di Autokey con le risorse Secret Manager come esempio.

Funzionalità

  • Controllo dell'accesso ai dati: gli amministratori possono ruotare, gestire l'accesso, disabilitare o eliminare la chiave utilizzata per proteggere i dati at-rest in Spanner.
  • Auditabilità: se abiliti Audit Logging per l'API Cloud KMS nel tuo progetto, tutte le azioni sulla chiave, incluse quelle eseguite da Spanner, vengono registrate e visualizzate in Cloud Logging. Le chiavi Cloud EKM supportano Key Access Justification, che aggiunge un campo di giustificazione a tutte le richieste di chiavi. Con alcuni partner di gestione delle chiavi esterne, puoi approvare o rifiutare automaticamente queste richieste in base alla giustificazione.
  • Prestazioni: l'utilizzo di CMEK non comporta modifiche alle prestazioni di Spanner o all'accordo sul livello del servizio .
  • Supporto di più chiavi regionali: puoi creare più chiavi Cloud KMS regionali (a singola regione) per proteggere un database in una configurazione di istanza Spanner personalizzata, a due regioni o multiregionale.

Prezzi

Spanner fattura i database abilitati per CMEK come qualsiasi altro database. Non sono previsti costi aggiuntivi per Spanner per l'abilitazione di CMEK. Per saperne di più, consulta i prezzi di Spanner.

Cloud KMS ti addebita sia il costo della chiave sia le operazioni di crittografia eseguite sulla chiave (ogni volta che Spanner utilizza la chiave per la crittografia/decrittografia). Prevediamo che questi costi siano minimi in base al numero previsto di operazioni di crittografia generate da Spanner. Per saperne di più, consulta i prezzi di Cloud KMS.

Che cosa è protetto con CMEK

In un database abilitato per CMEK, Spanner utilizza le chiavi Cloud KMS per proteggere i dati at-rest. Sono inclusi i dati di un database archiviati su disco o unità flash.

Sono previste 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 dump di memoria e log operativi
  • Dati in transito o in memoria
  • Metadati del database

In Spanner sono presenti 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 crittografica individuale. La chiave utilizzata per criptare i dati in un blocco è denominata chiave di crittografia dei dati (DEK, Data Encryption Key). A causa dell'elevato volume di chiavi in Google e della necessità di bassa latenza e alta disponibilità, queste chiavi vengono archiviate vicino ai dati che criptano. Le DEK sono criptate a loro volta da una chiave di crittografia della chiave (KEK). Infine, ogni KEK viene criptata con la tua chiave CMEK.

Quando ruoti la chiave CMEK, Spanner cripta nuovamente solo le KEK intermedie con la versione principale più recente della chiave CMEK. Al termine della ricrittografia, la disattivazione o l'eliminazione delle versioni precedenti della chiave CMEK non disabilita l'accesso al database. Puoi anche visualizzare le versioni delle chiavi 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 un Google-owned and Google-managed encryption key

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 può accedere alla chiave per tuo conto dopo aver concesso il ruolo Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) a un service account Spanner gestito da Google. Per istruzioni dettagliate, consulta Proteggere un database con 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 per CMEK e Google-owned and Google-managed encryption keys. Le applicazioni non devono specificare chiavi o configurazioni di crittografia durante la lettura o la scrittura dei dati. Tutta la crittografia viene gestita dal servizio.

Gestisci chiavi

Le operazioni di gestione delle chiavi vengono eseguite utilizzando Cloud KMS. Spanner non può rilevare o agire in base alle modifiche delle 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 tre ore per propagarsi; in genere, le modifiche alle autorizzazioni vengono propagate molto più rapidamente.

Dopo la creazione del database, Spanner chiama Cloud KMS ogni cinque minuti circa per assicurarsi che la chiave sia ancora valida.

Se Spanner rileva che la chiave Cloud KMS è stata disattivata o eliminata, inizia immediatamente un'operazione per rendere inaccessibile il database. Tutte le chiamate successive al database, incluse sessioni, letture, e scritture, restituiscono 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 disattivata è stata riattivata, Cloud KMS ripristina automaticamente l'accesso al database Spanner.

Inoltre, se un database è protetto da più chiavi regionali e tutte le chiavi sono disattivate o eliminate, Spanner inizia immediatamente a rendere inaccessibile il database. Se Spanner rileva che solo un sottoinsieme delle chiavi del database è disattivato o eliminato, disattiva il database in un periodo di tempo massimo di 12 ore. È vivamente sconsigliato disattivare o eliminare solo un sottoinsieme di chiavi in un database abilitato per CMEK, in quanto potrebbe comportare un comportamento incerto. Per evitare che ciò accada, puoi utilizzare la metrica Spanner CMEK Keys (instance/replica/cmek/total_keys) per attivare un avviso se un sottoinsieme di chiavi è disattivato o eliminato. Per saperne di più, consulta Crea un avviso per la disattivazione di un sottoinsieme di chiavi CMEK.

Crea un avviso per la disattivazione di un sottoinsieme di chiavi CMEK

Puoi utilizzare la metrica Spanner CMEK Keys (/instance/replica/cmek/total_keys) per attivare un avviso se un sottoinsieme di chiavi CMEK è disattivato o eliminato. Per creare questo criterio di avviso, espandi i seguenti passaggi e impostazioni:

Impostazioni per la criterio di avviso CMEK.

Nuova condizione
Campo

Valore
Risorsa e metrica Nel menu Risorse, seleziona Istanza Spanner.
Nel menu Categorie di metriche, seleziona Istanza.
Nel menu Metriche, seleziona Chiavi CMEK.

(Il tipo di metrica è spanner.googleapis.com/instance/replica/cmek/total_keys).
Filtro instance_id = INSTANCE_ID
is_key_revoked = TRUE
Tra le serie temporali
Raggruppa serie temporali per
database
Tra le serie temporali
Aggregazione serie temporali
sum
Finestra temporale continua 10 m
Funzione finestra temporale continua mean
Configura trigger di avviso
Campo

Valore
Tipo di condizione Threshold
Trigger di avviso Any time series violates
Posizione soglia Above threshold
Soglia 0
Finestra di ritest 1 hr
Nuova condizione
Campo

Valore
Risorsa e metrica Nel menu Risorse, seleziona Istanza Spanner.
Nel menu Categorie di metriche, seleziona Istanza.
Nel menu Metriche, seleziona Chiavi CMEK.

(Il tipo di metrica è spanner.googleapis.com/instance/replica/cmek/total_keys).
Filtro instance_id = INSTANCE_ID
is_key_revoked = FALSE
Tra le serie temporali
Raggruppa serie temporali per
database
Tra le serie temporali
Aggregazione serie temporali
sum
Finestra temporale continua 10 m
Funzione finestra temporale continua mean
Configura trigger di avviso
Campo

Valore
Tipo di condizione Threshold
Trigger di avviso Any time series violates
Posizione soglia Above threshold
Soglia 0
Finestra di ritest 1 hr
Configura trigger di avviso
Campo

Valore
Trigger per più condizioni All conditions are met

Dopo aver creato l'avviso, se Spanner rileva che un sottoinsieme di chiavi CMEK è stato disattivato, viene visualizzato un elemento di riepilogo dell'incidente nella tabella Incidenti nella pagina Dettagli policy dell'avviso. Puoi anche configurare canali di notifica facoltativi. Per saperne di più, consulta Crea e gestisci canali di notifica.

Come viene gestito lo stato di una chiave non disponibile

In rari casi, ad esempio durante i 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 al momento in cui Spanner non riesce a comunicare con Cloud KMS, Spanner continua a supportare le operazioni complete del database con il massimo impegno per un periodo massimo di un'ora, per ridurre al minimo l'impatto di eventuali incidenti di questo tipo sul carico di lavoro. Dopo un'ora, se Spanner non riesce ancora a connettersi a Cloud KMS, Spanner inizia a mettere offline il database come misura di protezione. I dati nel database Spanner rimangono inaccessibili finché il database non riesce a riconnettersi a Cloud KMS e Cloud KMS non risponde che la chiave è attiva.

Al contrario, se il database Spanner è protetto da una chiave disattivata al momento in cui Spanner non riesce a comunicare con Cloud KMS, il database rimane inaccessibile finché non riesce a riconnettersi a Cloud KMS e non hai riattivato la chiave.

Se utilizzi più chiavi regionali per proteggere un database Spanner, solo le repliche protette da una chiave che si trova in Cloud KMS regionale non disponibile sono interessate dalla mancata disponibilità.

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, Spanner continua a supportare le operazioni complete del database con il massimo impegno per un massimo di un'ora. Dopo un'ora, se Spanner non riesce ancora a connettersi a Cloud KMS, Spanner inizia a mettere offline il database come misura di protezione. Le chiamate al database non andranno a buon fine e verrà restituito un FAILED_PRECONDITION errore: External key error: Could not find a key resource at the key URI.

Se utilizzi più chiavi Cloud EKM per proteggere il database Spanner, solo le repliche protette dalla chiave non disponibile sono interessate dalla mancata disponibilità.

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

Backup e ripristino

Puoi utilizzare CMEK or Google-owned and Google-managed encryption keys to per proteggere i backup di Spanner . Per impostazione predefinita, un backup utilizza la stessa configurazione di crittografia del database, ma puoi sostituire questo comportamento specificando una diversa configurazione di crittografia durante la creazione del backup. Se il backup è abilitato per CMEK, viene criptato utilizzando la versione principale della chiave KMS al momento della creazione del backup. Una volta creato il backup, la chiave e la relativa versione non possono essere modificate, anche se la chiave KMS viene ruotata. Per saperne di più, consulta Eseguire il 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 sostituire 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 sia la versione della chiave utilizzate per criptare il backup. Per saperne di più, consulta Ripristinare da un backup.

Puoi eseguire operazioni di backup come la creazione, la copia e il ripristino su un database criptato con più chiavi regionali.

Tutti i backup creati da pianificazioni dei backup possono essere protetti da CMEK o Google-owned and Google-managed encryption keys.

Partizionamento geografico

Puoi utilizzare CMEK or Google-owned and Google-managed encryption keys to per proteggere i database Spanner che utilizzano il partizionamento geografico. Quando utilizzi il partizionamento geografico, devi utilizzare una chiave Cloud KMS regionale per ogni località di replica dell'istanza, incluse quelle nella configurazione della partizione dell'istanza. Le chiavi multiregionali non sono supportate. Ogni chiave Cloud KMS regionale deve trovarsi nella stessa regione della replica dell'istanza Spanner o della località della partizione dell'istanza corrispondente.

Ad esempio, se il database Spanner si trova nella configurazione dell'istanza multiregionale nam3, con partizioni dell'istanza situate in europe-west1 e europe-west2, devi creare chiavi Cloud KMS nelle seguenti regioni:

  • us-east4 (parte di nam3)
  • us-east1 (parte di nam3)
  • us-central1 (parte di nam3)
  • europe-west1 (località della partizione dell'istanza)
  • europe-west2 (località della partizione dell'istanza)

Per saperne di più, consulta Proteggere un database con CMEK.

Logging

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

Richiedere o limitare CMEK all'interno dell'organizzazione

Puoi impostare policy a livello di organizzazione relative all'utilizzo della protezione CMEK in vari Google Cloud prodotti, tra cui Spanner. Con queste policy puoi:

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

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

Per saperne di più, consulta Policy dell'organizzazione per le chiavi CMEK.

Passaggi successivi