Questa pagina illustra le chiavi di crittografia fornite dal cliente. Per altre opzioni di crittografia, consulta Opzioni di crittografia dei dati.
Panoramica
Come livello aggiuntivo rispetto alla crittografia standard di Cloud Storage, puoi scegliere di fornire la tua chiave di crittografia AES-256, codificata in Base64 standard. Questa chiave è nota come chiave di crittografia fornita dal cliente. Se fornisci un parametro chiave di crittografia fornita dal cliente, Cloud Storage non la chiave nei suoi server o gestirla in altro modo.
Devi invece fornire la chiave per ogni operazione di Cloud Storage e la chiave viene eliminata definitivamente dai server Cloud Storage dopo che l'operazione completato. Cloud Storage archivia solo un hash di crittografia della chiave che le richieste future possano essere convalidate in base all'hash. La chiave non può essere recuperata da questo hash e l'hash non può essere utilizzato per decriptare i dati.
Ti consigliamo di eseguire il backup di ogni chiave in una posizione sicura e di prendere precauzioni per assicurarti che le chiavi non vengano condivise con terze parti non attendibili. Se esiste un file o computer contenente la tua chiave di crittografia è compromesso, devi immediatamente esegui la rotazione della chiave per tutti gli oggetti criptati con la chiave compromessa.
Quando viene utilizzata la chiave?
Quando applichi una chiave di crittografia fornita dal cliente a un oggetto, Cloud Storage la utilizza per criptare:
- I dati dell'oggetto.
- Il checksum CRC32C dell'oggetto.
- L'hash MD5 dell'oggetto.
La crittografia standard di Cloud Storage viene utilizzata metadati rimanenti per l'oggetto, incluso il nome. In questo modo puoi leggere e aggiornare i metadati generali, nonché elencare, sovrascrivere ed eliminare gli oggetti, senza dover utilizzare la chiave di crittografia fornita dal cliente. Tuttavia, per eseguire una di queste azioni, devi disporre dell'autorizzazione sufficiente.
Ad esempio, se un oggetto è criptato con una chiave di crittografia fornita dal cliente,
la chiave deve essere utilizzata per eseguire operazioni sull'oggetto, come il download o
lo spostamento. Se provi a leggere i metadati dell'oggetto senza fornire la chiave, ricevi metadati come il nome dell'oggetto e Content-Type
, ma non il checksum CRC32C o l'hash MD5 dell'oggetto. Se fornisci la chiave con
richiesta per i metadati dell'oggetto, il checksum CRC32C dell'oggetto e l'hash MD5 sono
inclusi nei metadati.
Comportamento di riscrittura
Se riscrivi un oggetto criptato con una chiave di crittografia fornita dal cliente senza fornire una chiave per criptare l'oggetto riscritto, quanto segue: si verifica quanto segue:
Se includi una chiave di decrittografia appropriata nella richiesta, l'oggetto riscritto viene criptato utilizzando la chiave di crittografia predefinita di Cloud Key Management Service del bucket di destinazione o, in assenza di una chiave di questo tipo, dalla crittografia standard di Cloud Storage.
Se nella richiesta non includi una chiave di decrittografia appropriata, ricevi un errore.
Controllo HTTPS
Per proteggere i dati mentre vengono trasferiti su internet durante la lettura e la scrittura utilizzano Transport Layer Security, comunemente noto come TLS o HTTPS. TLS è obbligatorio quando fornisci una chiave di crittografia. Se utilizzi accidentalmente la chiave di crittografia su una connessione non criptata (HTTP), è possibile che un malintenzionato intercetti la chiave. A causa di questa possibilità, L'API Cloud Storage restituisce un messaggio di errore che ti avvisa che la chiave potrebbe essere è stato compromesso. In questo caso, devi ruotare le chiavi immediatamente.
Limitazioni
Quando si utilizzano chiavi di crittografia fornite dal cliente, si applicano le seguenti limitazioni:
Non puoi utilizzare la console Google Cloud per scaricare oggetti criptati con una chiave di crittografia fornita dal cliente. Analogamente, quando utilizzi nella console Google Cloud per caricare un oggetto, non puoi criptarlo con un chiave di crittografia fornita dal cliente.
Storage Transfer Service e Cloud Dataflow non supportano gli oggetti è criptato con chiavi di crittografia fornite dal cliente.
Puoi impostare chiavi di crittografia fornite dal cliente solo su singoli oggetti. Non puoi impostare una chiave di crittografia fornita dal cliente predefinita per un bucket.
Se stai eseguendo un'operazione
compose
su oggetti criptati con chiavi di crittografia fornite dal cliente, gli oggetti componenti devono essere criptati con la stessa chiave e devi fornire la chiave con la richiesta di composizione. L'oggetto composito risultante viene criptato con la stessa chiave.Quando gestisci un oggetto criptato con una chiave di crittografia fornita dal cliente, Cloud Storage ignora
Cache-Control
metadati associati con l'oggetto e lo pubblica conCache-Control
impostato suprivate, max-age=0
.
Chiavi di crittografia con le API REST
Quando utilizzi una chiave di crittografia fornita dal cliente e lavori direttamente con l'API JSON o XML, devi fornire sia la chiave AES-256 sia un hash SHA256 della chiave. Devi archiviare sia la chiave AES-256 sia l'hash SHA256 di la chiave in modo sicuro. Cloud Storage archivia l'hash SHA256 della chiave nei metadati dell'oggetto, dove puoi recuperarla in un secondo momento. Questo hash SHA256 non può essere utilizzato da Cloud Storage (o da chiunque altro) per decriptare i tuoi dati. È archiviata per identificare in modo univoco la chiave AES-256 utilizzata per crittografare oggetto specifico.
Intestazioni delle richieste
Includi le seguenti intestazioni HTTP nella richiesta JSON o XML:
Nome intestazione | Valore | Descrizione |
---|---|---|
x-goog-encryption-algorithm |
string | L'algoritmo di crittografia da utilizzare. Devi utilizzare il valore AES256 . |
x-goog-encryption-key |
string | Una stringa con codifica Base64 RFC 4648 della chiave di crittografia AES-256. |
x-goog-encryption-key-sha256 |
string | Una stringa con codifica Base64 RFC 4648 dell'hash SHA256 della chiave di crittografia. |
Se stai eseguendo un'operazione di riscrittura con l'API JSON, gli intestazioni elencate sopra vengono utilizzate per criptare l'oggetto di destinazione e le seguenti intestazioni vengono utilizzate per decriptare l'oggetto di origine:
Nome intestazione | Valore | Descrizione |
---|---|---|
x-goog-copy-source-encryption-algorithm |
string | L'algoritmo di crittografia da utilizzare. Devi utilizzare il valore AES256 . |
x-goog-copy-source-encryption-key |
string | Una stringa con codifica Base64 RFC 4648 della chiave di crittografia AES-256 dell'oggetto di origine. |
x-goog-copy-source-encryption-key-sha256 |
string | Una stringa con codifica Base64 RFC 4648 dell'hash SHA256 della chiave di crittografia dell'oggetto di origine. |
Risposta
JSON
Quando utilizzi l'API JSON, i metadati per una chiave di crittografia fornita dal cliente vengono restituiti nel corpo della risposta, che include le seguenti proprietà:
Nome proprietà | Valore | Descrizione |
---|---|---|
customerEncryption |
oggetto | Informazioni sulla crittografia utilizzata per la richiesta. |
customerEncryption.encryptionAlgorithm |
string | L'algoritmo di crittografia utilizzato. Contiene sempre il valore AES256 . |
customerEncryption.keySha256 |
string | Una stringa codificata in RFC 4648 Base64 dell'hash SHA256 della chiave di crittografia. Puoi utilizzare questo hash SHA256 per identificare in modo univoco la chiave di crittografia AES-256 necessaria per decriptare l'oggetto, che devi memorizzare in modo sicuro. |
XML
Quando utilizzi l'API XML, la risposta include le seguenti intestazioni:
Nome intestazione | Valore | Descrizione |
---|---|---|
x-goog-encryption-algorithm |
string | L'algoritmo di crittografia utilizzato. Contiene sempre il valore AES256 . |
x-goog-encryption-key-sha256 |
string | Una stringa con codifica Base64 RFC 4648 dell'hash SHA256 della chiave di crittografia. Puoi utilizzare questo hash SHA256 per identificare in modo univoco la chiave di crittografia AES-256 necessaria per decriptare l'oggetto, che devi archiviare in modo sicuro. |
Ricevi un errore HTTP 400 nei seguenti casi:
- Carichi un oggetto utilizzando una chiave di crittografia fornita dal cliente e tenti di eseguire un'altra operazione sull'oggetto (diversa dalla richiesta o dall'aggiornamento della maggior parte dei metadati o dall'eliminazione dell'oggetto) senza fornire la chiave.
- Carichi un oggetto utilizzando una chiave di crittografia fornita dal cliente e provi a eseguire un'altra operazione sull'oggetto con una chiave errata.
- Carichi un oggetto senza fornire una chiave di crittografia fornita dal cliente e provi a eseguire un'altra operazione sull'oggetto con una chiave di crittografia fornita dal cliente.
- Hai specificato un algoritmo di crittografia, una chiave o un hash SHA256 non valido.
Chiavi di crittografia con gcloud storage
Google Cloud CLI supporta l'utilizzo delle chiavi di crittografia fornite dal cliente. Quando utilizzi gcloud CLI con chiavi di crittografia fornite dal cliente, tieni presente quanto segue:
La chiave specificata come chiave di crittografia viene utilizzata nei comandi sia come chiave di crittografia sia, se necessario, come chiave di decrittografia.
Facoltativamente, puoi specificare fino a 100 chiavi di decriptazione, che vengono utilizzate solo per decriptare gli oggetti.
Durante la decrittografia, l'hash SHA256 di qualsiasi crittografia e decriptazione fornite viene calcolata e la chiave corretta da usare per un particolare oggetto selezionandolo abbinando l'hash SHA256 nei metadati dell'oggetto.
Quando aggiungi o rotazioni una chiave di crittografia fornita dal cliente per un oggetto esistente, l'oggetto viene riscritto nell'ambito della richiesta. Questo vale anche per il comando
gcloud storage objects update
.I comandi di elenco che possono restituire l'hash MD5 o CRC32C per gli oggetti criptati con una chiave fornita dal cliente eseguono un'ulteriore richiesta di metadati
GET
per ciascun oggetto. Queste richieste aggiuntive possono rendere la scheda più lento rispetto alla creazione di un elenco di oggetti criptati con Cloud Storage standard la crittografia.Nelle situazioni in cui la chiave di crittografia può o cambia durante un'operazione di scrittura o copia parzialmente completata, ad esempio quando esegui di nuovo un caricamento
cp
dopo l'interruzione forzata o dopo aver riscontrato un timeout di rete, l'operazione viene riavviata per garantire che l'oggetto di destinazione venga scritto con la nuova chiave.
Rotazione della chiave di crittografia
Se un oggetto è criptato utilizzando una chiave di crittografia fornita dal cliente, puoi girare la chiave dell'oggetto riscrivendo l'oggetto. Le riscritture sono supportati tramite l'API JSON, ma non l'API XML. Consulta Rotazione di una chiave di crittografia per esempi di rotazione delle chiavi.