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ù sulla CMEK in generale, incluso quando e perché attivarla, consulta la documentazione di Cloud KMS.

Per impostazione predefinita, Spanner cripta i contenuti inattivi dei clienti. Spanner gestisce la crittografia per conto tuo senza che tu debba fare altro. Questa opzione è denominata Crittografia predefinita di Google.

Se vuoi controllare le tue chiavi di crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) in Cloud KMS con servizi integrati con CMEK, tra cui 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 tue risorse Spanner oppure utilizzare Autokey di Cloud KMS. Con Autokey, le chiavi e le chiavi automatizzate vengono generate on demand durante 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 ulteriori informazioni, consulta la panoramica di Autokey.

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

Per utilizzare le chiavi CMEK create da Autokey di Cloud KMS 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'controllo dell'accesso:gli amministratori possono ruotare, gestire l'accesso e disattivare 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 sono visualizzabili in Cloud Logging. Le chiavi Cloud EKM supportano Key Access Justifications, che aggiunge un campo di giustificazione a tutte le richieste di chiavi. Con alcuni partner esterni per la gestione delle chiavi, puoi approvare o rifiutare automaticamente queste richieste in base alla giustificazione.
  • Rendimento:non vengono apportate modifiche al rendimento o all'accordo sul livello del servizio di Spanner utilizzando CMEK.
  • Supporto di più chiavi regionali:puoi creare più chiavi Cloud KMS regionali (a singola regione) per proteggere un database in una configurazione di istanza personalizzata, a due regioni o multiregionale di Spanner.

Prezzi

Spanner fattura i database abilitati per CMEK come qualsiasi altro database. Non sono previsti costi aggiuntivi per Spanner per l'attivazione di CMEK. Per ulteriori informazioni, consulta la pagina Prezzi di Spanner.

Cloud KMS ti addebita sia il costo della chiave sia le operazioni di crittografia su quella 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 maggiori informazioni, consulta la pagina Prezzi di Cloud KMS.

Cosa viene protetto con CMEK

In un database abilitato a CMEK, Spanner utilizza le chiavi Cloud KMS per proteggere i dati at-rest. Sono inclusi i dati di un database archiviati su disco o 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 principali e log operativi
  • Dati in transito o in memoria
  • Metadati del database

In Spanner, esistono 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). 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 criptate (o sottoposte a wrapping) con una chiave di crittografia della chiave (KEK). Infine, ogni KEK viene criptata con la tua CMEK.

Quando ruoti la chiave CMEK, Spanner ricrittografa solo le KEK intermedie con l'ultima versione principale della chiave CMEK. Al termine della ri-crittografia, la disattivazione 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 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 è 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 service account Spanner gestito da Google. Per istruzioni dettagliate, vedi 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 sia per CMEK che per 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 alla chiave finché non vengono propagate da Cloud KMS. Alcune operazioni, come la disattivazione o l'eliminazione di una chiave, possono richiedere fino a tre ore per la propagazione; le modifiche alle autorizzazioni in genere vengono propagate molto più rapidamente.

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

Se Spanner rileva che la tua chiave Cloud KMS è stata disattivata o eliminata, inizia immediatamente un'operazione per rendere inaccessibile il tuo database. Qualsiasi chiamata successiva al database, incluse sessioni, letture e scritture, restituisce 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 distrutte, 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 per un periodo di tempo entro 12 ore. La disattivazione o l'eliminazione solo di un sottoinsieme di chiavi in un database abilitato per CMEK è fortemente sconsigliata e potrebbe comportare un comportamento incerto. Per evitare che ciò accada, puoi utilizzare la metrica Chiavi CMEK Spanner (instance/replica/cmek/total_keys) per attivare un avviso se un sottoinsieme di chiavi è disattivato o eliminato. Per saperne di più, consulta Creare un avviso per la disattivazione di un sottoinsieme di CMEK.

Crea un avviso per la disattivazione di un sottoinsieme di CMEK

Puoi utilizzare la metrica Chiavi CMEK Spanner (/instance/replica/cmek/total_keys) per attivare un avviso se un sottoinsieme di CMEK sono disabilitate o distrutte. 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.

(The metric.type is 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 avviso Any time series violates
Posizione soglia Above threshold
Soglia 0
Finestra di ripetizione test 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.

(The metric.type is 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 avviso Any time series violates
Posizione soglia Above threshold
Soglia 0
Finestra di ripetizione test 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 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 la pagina Crea e gestisci canali di notifica.

Come viene gestito uno stato della chiave non disponibile

In rari scenari, 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 tuo database Spanner è protetto da una chiave abilitata nel momento in cui Spanner non riesce più a comunicare con Cloud KMS, Spanner continua a supportare le operazioni complete sul database in base al massimo impegno per un periodo massimo di un'ora, per ridurre al minimo l'impatto di qualsiasi incidente sul tuo carico di lavoro. Dopo un'ora, se Spanner non riesce ancora a connettersi a Cloud KMS, inizia a mettere offline il database come misura protettiva. 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 tuo database Spanner è protetto da una chiave disattivata nel momento in cui Spanner non riesce più 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 sul database in base al criterio del "best effort" per un massimo di un'ora. Dopo un'ora, se Spanner non riesce ancora a connettersi a Cloud KMS, inizia a mettere offline il database come misura protettiva. Le chiamate al database non andranno a buon fine e verrà visualizzato un errore FAILED_PRECONDITION: External key error: Could not find a key resource at the key URI.

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

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

Backup e ripristino

Puoi utilizzare CMEK o Google-owned and Google-managed encryption keys 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 configurazione di crittografia diversa 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 ulteriori informazioni, vedi 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 che la versione della chiave utilizzate per criptare il backup. Per ulteriori informazioni, vedi Ripristinare da un backup.

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

Tutti i backup creati dalle pianificazioni di backup possono essere protetti da CMEK o Google-owned and Google-managed encryption keys. Tuttavia, le pianificazioni di backup incrementali possono essere criptate solo utilizzando Google-owned and Google-managed encryption keys.

Partizionamento geografico

Puoi utilizzare CMEK o Google-owned and Google-managed encryption keys per proteggere i database Spanner che utilizzano il partizionamento geografico. Quando utilizzi il partizionamento geografico, devi utilizzare una chiave Cloud KMS regionale per ogni posizione 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 partizione dell'istanza corrispondente.

Ad esempio, se il tuo 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 (posizione della partizione dell'istanza)
  • europe-west2 (posizione della partizione dell'istanza)

Per maggiori informazioni, consulta la pagina Proteggere un database con CMEK.

Logging

Puoi controllare le richieste che Spanner invia a Cloud KMS per tuo conto in Cloud Logging, se hai abilitato il controllo degli audit 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 in merito all'utilizzo della protezione CMEK in vari prodotti, tra cui Spanner. Google Cloud 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 ulteriori informazioni, consulta Policy dell'organizzazione CMEK.

Passaggi successivi