Questa pagina descrive le chiavi di crittografia gestite dal cliente (CMEK) per Spanner. Per ulteriori informazioni su CMEK in generale, incluso quando e perché attivarlo, 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 i servizi integrati con CMEK, tra cui Spanner. L'utilizzo delle chiavi Cloud KMS ti consente di controllare il loro livello di protezione, la posizione, la pianificazione della rotazione, le autorizzazioni di utilizzo e di accesso e i confini di crittografia. L'utilizzo di Cloud KMS ti consente inoltre di monitorare l'utilizzo delle chiavi, visualizzare i log di controllo e controllare i cicli di vita delle chiavi. Invece che essere di proprietà e gestite da Google, le chiavi di crittografia della chiave (KEK) simmetriche che proteggono i tuoi dati sono sotto il tuo controllo e vengono gestite 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 normali e automatizzate vengono generate on demand nell'ambito della 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 Autokey di Cloud KMS 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 CMEK create da Cloud KMS Autokey per proteggere le risorse Spanner, segui come esempio i passaggi forniti per Secret Manager in Utilizzare Autokey con le risorse Secret Manager.
Funzionalità
- Controllo dell'accesso ai dati:gli amministratori possono ruotare, gestire l'accesso e disattivare o distruggere la chiave utilizzata per proteggere i dati at-rest in Spanner.
- Auditabilità: se attivi la registrazione degli audit 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 la giustificazione dell'accesso alle chiavi, 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.
- 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 istanze 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'attivazione di CMEK. Per ulteriori informazioni, consulta la sezione Prezzi di Spanner.
Cloud KMS ti addebita sia il costo della chiave sia eventuali 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 ulteriori informazioni, consulta la pagina Prezzi di Cloud KMS.
Che cosa viene protetto con CMEK
In un database compatibile con CMEK, Spanner utilizza le tue 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 confini dell'intervallo
- Dati di debug, inclusi dump del core 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 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 a loro volta da una chiave di crittografia della chiave (KEK). Infine, ogni KEK viene criptato con il tuo CMEK.
Quando ruoti la chiave CMEK, Spanner riecripta solo le KEK intermedie con la versione principale più recente della chiave CMEK. Al termine della nuova crittografia, la disattivazione o l'eliminazione delle versioni precedenti della chiave CMEK non disattiva l'accesso al database. Puoi anche visualizzare le versioni delle chiavi utilizzate per difendere un database.
Con CMEK
Senza CMEK
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 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, 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 sia 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 è gestita dal servizio.
Gestisci chiavi
Le operazioni di gestione delle chiavi vengono eseguite utilizzando Cloud KMS. Spanner non può rilevare o applicare modifiche alle chiavi finché non vengono propagate da Cloud KMS. Per alcune operazioni, come la disattivazione o la distruzione di una chiave, possono essere necessarie fino a tre ore per la propagazione; le modifiche alle autorizzazioni di solito vengono propagate molto più rapidamente.
Dopo aver creato il database, Spanner chiama Cloud KMS circa ogni cinque minuti per assicurarsi che la chiave sia ancora valida.
Se Spanner rileva che la chiave Cloud KMS è stata disabilitata o distrutta, viene avviata immediatamente un'operazione per rendere inaccessibile il database. Eventuali 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 vengono disattivate o distrutte, Spanner inizia immediatamente a rendere il database inaccessibile. Se Spanner rileva che solo un sottoinsieme delle chiavi del database è disabilitato o distrutto, disattiva il database per un periodo di tempo entro 12 ore. La disattivazione o l'eliminazione di solo un sottoinsieme di chiavi in un database compatibile con CMEK è vivamente sconsigliata e potrebbe comportare un comportamento incerto. Per evitare che ciò accada, puoi utilizzare la metrica Chiave CMEK di Spanner (instance/replica/cmek/total_keys
) per attivare un avviso se un sottoinsieme di chiavi viene disattivato o distrutto. Per ulteriori informazioni, consulta
Creare un avviso per la disattivazione di un sottoinsieme di CMEK.
Creare 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 viene disattivato o distrutto. Per creare questo criterio di avviso, espandi i seguenti passaggi e le seguenti impostazioni:
Impostazioni per il criterio di avviso CMEK.
Campo Nuova condizione |
Valore |
---|---|
Risorsa e metrica | Nel menu Risorse, seleziona Istanza Spanner. Nel menu Categorie di metriche, seleziona Istanza. Nel menu Metriche, seleziona Chiavi CMK. (metric.type è spanner.googleapis.com/instance/replica/cmek/total_keys ).
|
Filtro | instance_id = INSTANCE_ID is_key_revoked = TRUE |
Tra serie temporali Raggruppa serie temporali per |
database |
Tra serie temporali Aggregazione di serie temporali |
sum |
Finestra temporale continua | 10 m |
Funzione finestra temporale continua | mean |
Campo Configura trigger di avviso |
Valore |
---|---|
Tipo di condizione | Threshold |
Trigger di avviso | Any time series violates |
Posizione soglia | Above threshold |
Soglia | 0
|
Finestra di ripetizione test | 1 hr |
Campo Nuova condizione |
Valore |
---|---|
Risorsa e metrica | Nel menu Risorse, seleziona Istanza Spanner. Nel menu Categorie di metriche, seleziona Istanza. Nel menu Metriche, seleziona Chiavi CMK. (metric.type è spanner.googleapis.com/instance/replica/cmek/total_keys ).
|
Filtro | instance_id = INSTANCE_ID is_key_revoked = FALSE |
Tra serie temporali Raggruppa serie temporali per |
database |
Tra serie temporali Aggregazione di serie temporali |
sum |
Finestra temporale continua | 10 m |
Funzione finestra temporale continua | mean |
Campo Configura trigger di avviso |
Valore |
---|---|
Tipo di condizione | Threshold |
Trigger di avviso | Any time series violates |
Posizione soglia | Above threshold |
Soglia | 0
|
Finestra di ripetizione test | 1 hr |
Campo Configura trigger di avviso |
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 degli incidenti nella tabella Incidenti della pagina Dettagli criteri 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 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 è in grado di 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 questo tipo di incidente sul tuo carico di lavoro. Dopo un'ora, se Spanner non è ancora in grado di connettersi a Cloud KMS, inizia a mettere offline il database come misura di protezione. I dati nel database Spanner rimangono inaccessibili fino a quando il database non riesce a ricollegarsi a Cloud KMS e Cloud KMS risponde che la chiave è attiva.
Al contrario, se il database Spanner è protetto da una chiave disattivata nel momento in cui Spanner non è in grado di comunicare con Cloud KMS, il database rimane inaccessibile finché non riesce a ricollegarsi 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 nel 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 utilizzando una versione memorizzata nella cache della chiave 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 di protezione. Le chiamate al database non andranno a buon fine con 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 tuo 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 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, consulta la pagina Eseguire il backup di un database.
Quando ripristina 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 sia la versione della chiave utilizzata per criptare il backup. Per ulteriori informazioni, consulta 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 dei backup possono essere protetti da CMEK o Google-owned and Google-managed encryption keys. Tuttavia, le pianificazioni dei backup incrementali possono essere criptate solo utilizzando Google-owned and Google-managed encryption keys.
Logging
Puoi controllare le richieste inviate da Spanner a Cloud KMS per tuo conto in Cloud Logging, se hai abilitato la registrazione degli audit per l'API Cloud KMS nel tuo progetto. Queste entrate dei log di Cloud KMS sono visibili in Cloud Logging.
Richiedere o limitare il CMEK all'interno dell'organizzazione
Puoi impostare criteri a livello di organizzazione per l'utilizzo della protezione CMEK su vari Google Cloud prodotti, 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 ulteriori informazioni, consulta le policy dell'organizzazione CMEK.
Passaggi successivi
- Scopri come proteggere un database con CMEK.