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 KMS.

Per impostazione predefinita, Spanner cripta i contenuti dei clienti at-rest. 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 posizione, la pianificazione della rotazione, l'utilizzo e le autorizzazioni di accesso e i limiti crittografici. L'utilizzo di Cloud KMS consente anche di monitorare l'utilizzo delle chiavi, visualizzare i log di controllo e controllare i cicli di vita delle chiavi. Anziché essere di proprietà di Google e gestite da Google, le chiavi di crittografia delle chiavi (KEK) simmetriche che proteggono i tuoi dati sono controllate e gestite da te 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 CMEK manualmente per proteggere le risorse Spanner o utilizzare Cloud KMS Autokey. Con Autokey, le chiavi automatizzate e le chiavi vengono generate on demand durante la creazione delle risorse in Spanner. Gli agenti di servizio che utilizzano le chiavi per le operazioni di crittografia e decrittografia vengono creati se non esistono già e vengono concessi 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 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'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 di Spanner o all'accordo sul livello del servizio 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 di 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 ulteriori informazioni, 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 il 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 della pagina Dettagli policy dell'avviso. Puoi anche configurare canali di notifica facoltativi. Per saperne di più, consulta la pagina Creare e gestire i 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 criterio del "best effort" per un periodo massimo di un'ora, per ridurre al minimo l'impatto di qualsiasi incidente di questo tipo 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 maggiori informazioni, 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 che la versione della chiave utilizzate per criptare il backup. Per ulteriori informazioni, vedi Ripristinare da un backup.

Puoi eseguire operazioni di backup come creazione, copia e ripristino su 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.

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 saperne di più, consulta Policy dell'organizzazione CMEK.

Passaggi successivi