Chiavi di crittografia fornite dal cliente

Configurazione

Questa pagina illustra le chiavi di crittografia fornite dal cliente. Per altre modalità di crittografia vedi Opzioni di crittografia dei dati.

Panoramica

Come livello aggiuntivo, oltre crittografia standard di Cloud Storage, puoi scegliere di fornire possedere una chiave di crittografia AES-256, codificata nello standard Base64. Questo è 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 recuperato da questo hash e non può essere utilizzato per decriptare i dati.

Ti consigliamo di eseguire il backup di ogni token in un luogo sicuro e di prendere precauzioni per assicurati che le tue chiavi non vengano condivise con 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 a un oggetto una chiave di crittografia fornita dal cliente, Cloud Storage utilizza la chiave durante la crittografia:

  • I dati dell'oggetto.
  • Il checksum CRC32C dell'oggetto.
  • L'hash MD5 dell'oggetto.

Cloud Storage utilizza la crittografia at-rest predefinita per criptare i metadati rimanenti per l'oggetto, incluso il nome dell'oggetto. Ciò consente leggere e aggiornare i metadati generali, nonché elencare, sovrascrivere ed eliminare senza bisogno della chiave di crittografia fornita dal cliente. Tuttavia, per eseguire una qualsiasi di queste azioni, devi disporre di autorizzazioni sufficienti.

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 sposti. Se tenti di leggere i metadati dell'oggetto senza specificare chiave, riceverai 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:

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 è richiesta quando fornisci una chiave di crittografia. Se utilizzi per errore il tuo chiave di crittografia su una connessione non criptata (HTTP), è possibile che per intercettare 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.

  • Cloud Storage Transfer Service e Cloud Dataflow non supporta attualmente oggetti criptati 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 predefinita fornita dal cliente per un bucket.

  • Se stai eseguendo un'operazione compose sugli oggetti criptati da di crittografia fornite dal cliente, gli oggetti dei componenti devono essere è criptato dalla stessa chiave, ma devi fornire la chiave richiesta. L'oggetto composito risultante è criptato dalla 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 con Cache-Control impostato su private, max-age=0.

Chiavi di crittografia con le API REST

Quando utilizzi una chiave di crittografia fornita dal cliente e lavori direttamente con JSON o XML, devi fornire sia la chiave AES-256 sia un file SHA256 hash 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 nel metadati dell'oggetto, dove potrai recuperarlo in un secondo momento. Questo hash SHA256 non può essere utilizzati da Cloud Storage (o da chiunque altro) per decriptare i 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 RFC 4648 Base64 della chiave di crittografia AES-256.
x-goog-encryption-key-sha256 string Una stringa codificata in RFC 4648 Base64 dell'hash SHA256 della chiave di crittografia.

Se esegui un'operazione di riscrittura con l'API JSON, il comando le intestazioni elencate sopra sono 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 codificata in RFC 4648 Base64 dell'hash SHA256 della chiave di crittografia dell'oggetto di origine.

Risposta

JSON

Quando si utilizza l'API JSON, i metadati per una crittografia fornita dal cliente chiave viene restituita nel corpo della risposta, che include quanto segue 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 archiviare 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 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 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 eseguire un'altra operazione sull'oggetto (diversa dalla richiesta o dall'aggiornamento la maggior parte dei metadati o eliminare l'oggetto) senza fornire la chiave.
  • Carichi un oggetto utilizzando una chiave di crittografia fornita dal cliente e tenti eseguire un'altra operazione sull'oggetto con una chiave errata.
  • Carichi un oggetto senza fornire una chiave di crittografia fornita dal cliente. provi a eseguire un'altra operazione sull'oggetto con un chiave di crittografia.
  • Devi specificare un algoritmo di crittografia, una chiave o un hash SHA256 non valido.

Chiavi di crittografia con gcloud storage

Google Cloud CLI supporta l'utilizzo di 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 e, se necessario, come chiave di decrittografia.

  • Facoltativamente, puoi specificare fino a 100 chiavi di decriptazione, 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 si aggiunge o ruota una chiave di crittografia fornita dal cliente per un esistente, viene riscritto come parte della richiesta. È vero anche per il comando gcloud storage objects update.

  • Elenca i comandi che possono restituire l'hash MD5 o CRC32C per gli oggetti criptati con una chiave fornita dal cliente, eseguire una richiesta GET di metadati aggiuntivi per ciascuno di questi oggetti. Queste richieste aggiuntive possono rendere la scheda più lento rispetto all'elenco degli oggetti criptati con Cloud Storage standard la crittografia.

  • Nei casi in cui la chiave di crittografia possa cambiare o un'operazione di scrittura o copia parzialmente completata, ad esempio quando esegui una nuova operazione cp dopo la chiusura forzata o un timeout di rete, l'operazione per garantire che l'oggetto di destinazione sia scritto con la nuova chiave.

Rotazione della chiave di crittografia

Se un oggetto è criptato utilizzando una chiave di crittografia fornita dal cliente, puoi: Ruota la chiave dell'oggetto riscrivendolo. Le riscritture sono supportati tramite l'API JSON, ma non l'API XML. Consulta Rotazione di una chiave di crittografia per esempi di rotazione della chiave.

Passaggi successivi