Per impostazione predefinita, Google Cloud cripta automaticamente i dati inattivi utilizzando chiavi di crittografia gestite da Google. Se hai requisiti specifici di conformità o normativi relativi alle chiavi che proteggono i dati, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per i repository Dataform.
Questa guida descrive l'utilizzo di CMEK per Dataform e illustra come abilitare la crittografia CMEK dei repository Dataform.
Per saperne di più su CMEK in generale, inclusi quando e perché abilitarla, consulta la documentazione di CMEK.
Crittografia CMEK dei dati del repository
Quando applichi la crittografia CMEK a un repository Dataform, tutti i dati dei clienti gestiti da Dataform nel repository vengono criptati at-rest utilizzando il set di chiavi di protezione CMEK per il repository. Questi dati includono quanto segue:
- Contenuti del repository Git del repository Dataform e delle sue aree di lavoro
- Query SQL compilate ed errori di compilazione
- Query SQL archiviate delle azioni del flusso di lavoro
- Dettagli errore delle azioni del flusso di lavoro eseguite
Dataform utilizza chiavi di protezione CMEK nei seguenti scenari:
- Durante ogni operazione che richiede la decrittografia dei dati dei clienti archiviati at-rest.
Queste operazioni includono, a titolo esemplificativo:
- Risposte alla query di un utente, ad esempio
compilationResults.query
. - Creazione di risorse Dataform che richiedono dati del repository criptati creati in precedenza, ad esempio chiamate dei flussi di lavoro.
- Operazioni Git per aggiornare il repository remoto, ad esempio push di un commit Git.
- Risposte alla query di un utente, ad esempio
- Durante ogni operazione che richiede l'archiviazione dei dati at-rest dei clienti.
Queste operazioni includono, a titolo esemplificativo:
- Risposte alla query di un utente, ad esempio
compilationResults.create
. - Operazioni Git in un'area di lavoro, ad esempio il pull di un commit Git.
- Risposte alla query di un utente, ad esempio
Dataform gestisce la crittografia dei dati dei clienti associati solo alle risorse Dataform. Dataform non gestisce la crittografia dei dati dei clienti creati in BigQuery tramite l'esecuzione dei flussi di lavoro Dataform. Per criptare i dati creati e archiviati in BigQuery, configura CMEK per BigQuery.
Chiavi supportate
Dataform supporta i seguenti tipi di chiavi CMEK:
La disponibilità delle chiavi varia in base al tipo di chiave e alla regione. Per saperne di più sulla disponibilità geografica delle chiavi CMEK, vedi Località di Cloud KMS.
Limitazioni
Dataform supporta CMEK con le seguenti limitazioni:
- Non puoi applicare una chiave di protezione CMEK a un repository dopo la creazione del repository. Puoi applicare la crittografia CMEK solo durante la creazione del repository.
- Non puoi rimuovere una chiave di protezione CMEK da un repository.
- Non puoi modificare una chiave di protezione CMEK per un repository.
- I criteri dell'organizzazione CMEK non sono disponibili.
- L'utilizzo delle chiavi Cloud HSM è soggetto a disponibilità. Per ulteriori informazioni sulla disponibilità delle chiavi in tutte le località, consulta le località di Cloud KMS.
Quote di Cloud KMS e Dataform
Puoi utilizzare le chiavi Cloud HSM con Dataform. Quando utilizzi CMEK in Dataform, i tuoi progetti possono consumare quote per le richieste crittografiche di Cloud KMS. Ad esempio, i repository Dataform criptati con CMEK possono consumare queste quote per ogni modifica ai contenuti del repository. Le operazioni di crittografia e decriptazione mediante chiavi CMEK influiscono sulle quote di Cloud KMS solo se utilizzi chiavi hardware (Cloud HSM) o esterne (Cloud EKM). Per ulteriori informazioni, consulta Quote di Cloud KMS.
Gestione delle chiavi
Utilizzare Cloud KMS per tutte le operazioni di gestione delle chiavi. Dataform non può rilevare o intervenire su modifiche alle chiavi 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 di solito si propagano molto più velocemente.
Dopo la creazione del repository, Dataform chiama Cloud KMS per assicurarsi che la chiave sia ancora valida durante ogni operazione sui dati del repository criptati.
Se Dataform rileva che la chiave Cloud KMS è stata disabilitata o eliminata, tutti i dati archiviati nel repository corrispondente diventano inaccessibili.
Se le chiamate da Dataform a Cloud KMS rilevano che una chiave precedentemente disabilitata è stata riattivata, Dataform ripristina automaticamente l'accesso.
Come viene gestito uno stato di una chiave non disponibile
In rari casi, ad esempio in periodi in cui Cloud KMS non è disponibile, Dataform potrebbe non essere in grado di recuperare lo stato della chiave da Cloud KMS.
Se il repository Dataform è protetto da una chiave abilitata nel momento in cui Dataform non è in grado di comunicare con Cloud KMS, i dati del repository criptati diventano inaccessibili.
I dati del repository criptati rimangono inaccessibili finché Dataform non riesce a riconnettersi con Cloud KMS e Cloud KMS risponde che la chiave è attiva.
Al contrario, se il repository Dataform è protetto da una chiave disabilitata nel momento in cui Dataform non riesce a comunicare per la prima volta con Cloud KMS, i dati del repository criptati rimangono inaccessibili fino a quando non sarà in grado di riconnettersi a Cloud KMS e non avrai riabilitato la chiave.
Logging
Puoi controllare le richieste che Dataform invia a Cloud KMS per tuo conto in Cloud Logging, se hai abilitato l'audit logging per l'API Cloud KMS nel tuo progetto. Queste voci di log di Cloud KMS sono visibili in Cloud Logging. Per ulteriori informazioni, consulta Visualizzare i log.
Prima di iniziare
Decidi se eseguire Dataform e Cloud KMS in progetti diversi o nello stesso progetto. Ti consigliamo di utilizzare progetti separati per un maggiore controllo sulle autorizzazioni. Per informazioni sugli ID e sui numeri di progetto di Google Cloud, consulta Identificazione dei progetti.
Per il progetto Google Cloud che esegue Cloud KMS:
- Abilita l'API Cloud Key Management Service.
- Crea un keyring e una chiave come descritto nella sezione Creazione di keyring e chiavi. Crea il keyring in una località che corrisponda alla località del tuo repository Dataform:
-
I repository devono utilizzare chiavi a livello di regione corrispondenti. Ad esempio,
un repository nella regione
asia-northeast3
deve essere protetto con una chiave di un keyring situato inasia-northeast3
. -
La regione
global
non può essere utilizzata con Dataform.
-
I repository devono utilizzare chiavi a livello di regione corrispondenti. Ad esempio,
un repository nella regione
Attivare CMEK
Dataform può accedere alla chiave per tuo conto dopo che avrai concesso il ruolo Autore crittografia/decrittografia CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter
) di Cloud KMS all'account di servizio Dataform predefinito.
Il tuo ID account di servizio Dataform predefinito è nel seguente formato:
service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Per concedere il ruolo Autore crittografia/decrittografia CryptoKey all'account di servizio Dataform predefinito, segui questi passaggi:
Console
Apri la pagina Gestione delle chiavi nella console Google Cloud.
Fai clic sul nome del keyring che contiene la chiave.
Fai clic sulla casella di controllo della chiave di crittografia a cui vuoi aggiungere il ruolo. Si apre la scheda Autorizzazioni.
Fai clic su Aggiungi membro.
Inserisci l'indirizzo email dell'account di servizio
- Se l'account di servizio è già presente nell'elenco dei membri, significa che dispone di ruoli esistenti. Fai clic sull'elenco a discesa del ruolo attuale per l'account di servizio.
Fai clic sull'elenco a discesa per Seleziona un ruolo, fai clic su Cloud KMS e poi sul ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS.
Fai clic su Salva per applicare il ruolo all'account di servizio.
gcloud
Puoi utilizzare Google Cloud CLI per assegnare il ruolo:
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY
Sostituisci quanto segue:
KMS_PROJECT_ID
: l'ID del progetto Google Cloud che esegue Cloud KMSSERVICE_ACCOUNT
: l'indirizzo email del tuo account di servizio Dataform predefinitoKMS_KEY_LOCATION
: nome della località della chiave Cloud KMSKMS_KEY_RING
: nome del keyring della chiave Cloud KMSKMS_KEY
: nome della chiave Cloud KMS
Applica CMEK a un repository
Puoi applicare la protezione CMEK a un repository Dataform durante la creazione.
Per applicare la crittografia CMEK a un repository Dataform, specifica una chiave Cloud KMS quando crei il repository. Per le istruzioni, vedi Creare un repository.
Non puoi modificare il meccanismo di crittografia di un repository Dataform dopo la creazione del repository.
Per ulteriori informazioni, consulta la sezione Restrizioni.
Passaggi successivi
- Per saperne di più su CMEK, vedi Panoramica di CMEK.
- Per saperne di più sulle quote di Cloud KMS, consulta Quote di Cloud KMS.
- Per scoprire di più sui prezzi di Cloud KMS, consulta la pagina relativa ai prezzi di Cloud KMS.
- Per scoprire di più sui repository Dataform, consulta Introduzione ai repository.