Chiavi di crittografia fornite dal cliente

Le chiavi di crittografia fornite dal cliente (CSEK) sono una funzionalità di Google Cloud Storage e Google Compute Engine. Se fornisci chiavi di crittografia personalizzate, Google le utilizza per proteggere le chiavi che genera Google per criptare e decriptare i tuoi dati.

Termini utilizzati in questo argomento:

  • Chiave di crittografia dei dati (DEK): una chiave utilizzata per criptare i dati.

  • Chiave di crittografia della chiave (KEK): una chiave utilizzata per criptare o "sottoporre a wrapping" una chiave di crittografia dei dati.

  • Sistema di gestione dei cluster: una raccolta di processi eseguiti non l'identità di un sistema di gestione dei cluster all'interno dell'infrastruttura di produzione di Google. Implementa la logica per la gestione delle risorse di Compute Engine, ad esempio dischi e istanze VM. Archivia i metadati relativi a queste risorse.

  • Sistema di gestione delle istanze: una raccolta di processi eseguiti con l'identità di un sistema di gestione delle istanze all'interno dell'infrastruttura di produzione di Google. Apporta modifiche alle istanze VM (processi) disponibili, ad esempio avvio/arresto delle VM o collegamento/scollegamento dei dischi. Il sistema di gestione dei cluster specifica quale dovrebbe essere lo stato delle VM in un determinato momento, mentre il sistema di gestione delle istanze le esegue in base allo stato in cui si trovano.

Funzionamento delle chiavi di crittografia fornite dal cliente

Di seguito vengono fornite informazioni su come funzionano le chiavi di crittografia fornite dal cliente con Google Cloud Storage e Google Compute Engine.

Cloud Storage

Se utilizzi chiavi di crittografia fornite dal cliente in Cloud Storage:

  • Devi fornire una CSEK non elaborata all'interno di una chiamata API. Questa chiave viene trasmessa dal front-end di Google alla memoria del sistema di archiviazione e viene utilizzata come chiave di crittografia della chiave in Google Cloud Storage per i tuoi dati.

  • La CSEK non elaborata viene utilizzata per decriptare le chiavi criptate dei blocchi di dati in modo da creare chiavi non elaborate dei blocchi di dati in memoria. Queste vengono utilizzate per decriptare i blocchi di dati memorizzati nei sistemi di archiviazione. Queste chiavi vengono utilizzate come chiavi di crittografia dei dati (DEK) in Google Cloud Storage per i tuoi dati.

    CSEK in Cloud Storage

Chiave Posizione di archiviazione Scopo Accessibile fino a quando
CSEK non elaborata Memoria del sistema di archiviazione Fornita dal cliente.
Chiave di crittografia della chiave (KEK) per chiavi di blocchi di dati.
Esegue il wrapping delle chiavi di blocchi di dati.
L'operazione richiesta dal cliente (ad esempio insertObject o getObject) non viene completata
Chiavi con wrapping di blocchi di dati Dispositivi di archiviazione Proteggono le chiavi di blocchi di dati archiviate inattive. L'oggetto di archiviazione viene eliminato
Chiavi non elaborate di blocchi di dati Memoria dei dispositivi di archiviazione Chiave di crittografia dei dati (DEK) per i dati.
Leggono/scrivono dati sul disco.
L'operazione richiesta dal cliente non viene completata

Compute Engine

Se utilizzi chiavi di crittografia fornite dal cliente in Compute Engine:

  • Devi fornire una CSEK non elaborata all'interno di una chiamata API.

  • Questa chiave viene trasmessa dal front-end di Google al front-end del sistema di gestione dei cluster:

    • Se fornisci una CSEK criptata, viene decriptata mediante una chiave di wrapping asimmetrica di proprietà di Google.
    • La CSEK non elaborata viene combinata con un nonce crittografico per singolo disco permanente in modo da generare una chiave derivata da CSEK. Questa viene utilizzata come chiave di crittografia della chiave in Google Compute Engine per i tuoi dati.

  • Sia la CSEK che la chiave derivata da CSEK vengono mantenute solo nella memoria del front-end del sistema di gestione dei cluster. La chiave derivata da CSEK viene utilizzata nella memoria del sistema di gestione dei cluster per decriptare le chiavi criptate dei dischi memorizzate nei metadati delle istanze del sistema di gestione dei cluster e nei metadati del sistema di gestione delle istanze, dove è abilitato il riavvio automatico (questi non sono i metadati delle istanze).

    • La chiave derivata da CSEK viene utilizzata per decriptare le chiavi non elaborate dei dischi quando viene creato un disco, nonché per decriptare le chiavi non elaborate dei dischi al momento di accedere a un disco.
      • Se è abilitato il riavvio automatico, le chiavi criptate dei dischi vengono rese persistenti dal sistema di gestione dei cluster per tutta la durata della VM, in modo che questa possa essere riavviata in caso di arresto anomalo. Le chiavi criptate dei dischi vengono sottoposte a wrapping con una chiave di wrapping simmetrica di proprietà di Google. Le sue autorizzazioni ne consentono l'utilizzo solo da parte di Google Compute Engine.
      • Se è abilitata la migrazione live, la chiave non elaborata del disco viene passata dalla memoria dell'istanza VM precedente a quella della nuova istanza VM senza che il sistema di gestione dei cluster o delle identità vengano coinvolti nella copia della chiave.

  • Le chiavi non elaborate dei dischi vengono passate alla memoria del sistema di gestione dei cluster, del sistema di gestione delle istanze e della macchina virtuale. Queste chiavi vengono utilizzate come chiavi di crittografia dei dati in Google Compute Engine per i tuoi dati.

    CSEK in Compute Engine

Chiave Posizione Scopo Accessibile fino a quando
CSEK non elaborata Front-end del sistema di gestione dei cluster Fornita dal cliente.
Utilizzata per generare la chiave derivata da CSEK mediante l'aggiunta di un nonce crittografico.
L'operazione richiesta dal cliente (ad esempio instances.insert, instances.attachDisk) non viene completata
CSEK con wrapping a chiave pubblica
(facoltativa; se è utilizzato il wrapping delle chiavi RSA)
Front-end del sistema di gestione dei cluster Fornita facoltativamente dal cliente.
Utilizzata per generare la chiave derivata da CSEK mediante l'annullamento del wrapping con una chiave asimmetrica di proprietà di Google.
L'operazione richiesta dal cliente non viene completata
Chiave di wrapping asimmetrica
(se è utilizzato il wrapping delle chiavi RSA)
Servizio interno di Google per la gestione delle chiavi Utilizzata per annullare il wrapping di una chiave con wrapping RSA fornita dal cliente Sempre
Chiave derivata da CSEK Front-end del sistema di gestione dei cluster Chiave di crittografia della chiave (KEK) per le chiavi dei dischi.
Esegue il wrapping delle chiavi dei dischi.
L'operazione per eseguire o annullare il wrapping della chiave viene completata
Chiavi dei dischi con wrapping Google
(facoltative; se è utilizzato il riavvio automatico)
Front-end del sistema di gestione dei cluster Proteggono le chiavi dei dischi archiviate inattive per i dischi collegati a istanze in esecuzione.
Riavviano l'istanza in caso di perdita della memoria della VM (ad es. arresto anomalo dell'host).
La VM non viene arrestata o eliminata
Chiavi non elaborate dei dischi Memoria del monitor delle macchine virtuali (VMM),
memoria del sistema di gestione dei cluster
Chiave di crittografia dei dati (DEK) per i dati.
Leggono/scrivono dati sul disco, eseguono la migrazione live della VM ed effettuano upgrade sul posto.
La VM non viene arrestata o eliminata
Chiave derivata da CSEK con wrapping Google Database del sistema di gestione dei cluster Riavvia l'operazione in caso di errore. L'operazione richiesta dal cliente non viene completata

.

Modalità di protezione delle chiavi di crittografia fornite dal cliente

Di seguito vengono fornite informazioni su come vengono protette le chiavi di crittografia fornite dal cliente su disco, quando vengono spostate all'interno dell'infrastruttura di Google Cloud Platform e in memoria.

Su disco

La CSEK non elaborata, le chiavi derivate da CSEK e le chiavi non elaborate di blocchi di dati/dischi non vengono mai archiviate su disco senza essere criptate. Le chiavi non elaborate di blocchi di dati/dischi vengono archiviate dopo essere state criptate con chiavi derivate da CSEK e con chiavi Google qualora sia abilitato il riavvio automatico. Google non archivia permanentemente le chiavi sui suoi server.

Quando vengono spostate all'interno dell'infrastruttura

Ogni servizio utilizza le funzionalità di gestione degli accessi offerte dall'infrastruttura per specificare esattamente quali altri servizi possono comunicare con tale servizio. Questo servizio è configurato con la whitelist delle identità degli account di servizio consentite e la relativa restrizione dell'accesso viene quindi applicata automaticamente dall'infrastruttura. Leggi ulteriori informazioni su identità, integrità e isolamento dei servizi.

Oltre alle capacità di autorizzazione e autenticazione RPC discusse nelle precedenti sezioni, l'infrastruttura offre anche privacy crittografica e integrità per i dati RPC presenti nella rete. I servizi possono configurare il livello di protezione crittografica desiderato per ogni RPC dell'infrastruttura e sono abilitati per le chiavi di crittografia fornite dal cliente. Leggi ulteriori informazioni sulla crittografia delle comunicazioni tra i servizi.

In memoria

Come descritto in precedenza, il materiale delle chiavi si trova nella memoria di vari sistemi, comprese quella del sistema di gestione dei cluster e quella del monitor delle macchine virtuali. L'accesso alla memoria di questi sistemi avviene per eccezione, ad esempio in caso di incidente, ed è gestito da liste di controllo degli accessi. In questi sistemi, il dump della memoria è disabilitato o viene eseguita la scansione automatica del materiale delle chiavi nei dump della memoria. L'accesso ai job stessi è limitato a un numero ristretto di tecnici di Site Reliability Engineering, in base al rispettivo ruolo per gestire il servizio. Anche l'accesso ai log è consentito a un numero limitato di tecnici software che lavorano su queste funzionalità per le attività di debug.

Ulteriori informazioni