Questa pagina descrive come utilizzare la crittografia di Cloud Key Management Service (Cloud KMS) con Dataflow. Una chiave di crittografia gestita dal cliente (CMEK) abilita crittografia dei dati at-rest con una chiave che puoi controllare di Cloud KMS. Puoi creare una pipeline in modalità batch o flusso protetti con CMEK o accedi a dati protetti da CMEK in origini e sink.
Puoi anche utilizzare Cloud EKM. o Cloud HSM. Quando usi CMEK in Dataflow, i tuoi progetti possono consumare richieste crittografiche di Cloud KMS quotas. Ad esempio, le pipeline Dataflow possono utilizzare questi quando la pipeline accede a dati protetti da CMEK in origini e sink o quando viene recuperato lo stato di una pipeline criptata con CMEK. Per ulteriori informazioni, consulta Crittografia delle località degli stati delle pipeline in questa pagina. Le operazioni di crittografia e decriptazione utilizzando Le chiavi CMEK influiscono sulle quote di Cloud KMS solo se utilizzi hardware (Cloud HSM) o chiavi esterne (Cloud EKM). Per ulteriori informazioni, vedi Quote di Cloud KMS.
Con Cloud External Key Manager (Cloud EKM), puoi utilizzare le chiavi che gestisci all'interno partner esterno per la gestione delle chiavi supportato e proteggere i dati in Google Cloud. Puoi proteggere i dati at-rest in servizi di integrazione CMEK supportati oppure tramite di chiamare direttamente l'API Dataflow.
Per ulteriori informazioni, vedi opzioni di crittografia su Google Cloud.
Supporto e limitazioni
Cloud KMS è supportato nelle seguenti versioni dell'SDK Apache Beam:
- SDK Java versioni 2.13.0 e successive
- SDK Python 2.13.0 e versioni successive
- SDK Go 2.40.0 e versioni successive
Cloud KMS con Dataflow supporta chiavi regionali. Se sostituire la regione o la zona del worker della pipeline per utilizzare una regione diversa da quella associata alle tue chiavi, le chiavi regionali non funzionano.
La regione per la tua CMEK e region [regione] per il job Dataflow deve essere lo stesso.
Le località multiregionali e globali non sono supportate. Non puoi utilizzare le metriche globali chiavi multiregionali con le pipeline Dataflow.
Crittografia degli artefatti dello stato della pipeline
Dati che una pipeline Dataflow legge da dati specificati dall'utente le origini dati sono criptate, ad eccezione delle chiavi dei dati specificate da te. trasformazioni basate su chiavi in job di flussi di dati.
Per i job batch, tutti i dati, incluse le chiavi dei dati specificate per i job basati su chiave ed è sempre protetto dalla crittografia CMEK.
Per i job di flussi di dati creati dopo il 7 marzo 2024, tutti i dati utente vengono criptati con CMEK.
Per i job di flussi di dati creati prima del 7 marzo 2024, le chiavi dei dati vengono utilizzate nelle come windowing, raggruppamento e unione, non sono protette da CMEK la crittografia. Per abilitare questa crittografia per i tuoi job, scarica o annulla il job, quindi riavvialo.
I metadati del job non sono criptati con chiavi Cloud KMS. Metadati job include:
- Dati forniti dall'utente, ad esempio nomi dei job, valori dei parametri dei job e grafico della pipeline
- Dati generati dal sistema, come gli ID job e gli indirizzi IP dei worker
Crittografia delle località degli stati delle pipeline
Le seguenti località di archiviazione sono protette con chiavi Cloud KMS:
- Dischi permanenti collegati ai worker Dataflow e utilizzati per archiviazione dello stato di shuffling e flussi di dati.
- Dataflow Riproduzione casuale per le pipeline in modalità batch.
- Bucket Cloud Storage in cui vengono archiviati dati di esportazione o importazione temporanei. Dataflow supporta solo le chiavi predefinite impostate dall'utente nella a livello di bucket.
- nei bucket Cloud Storage utilizzati per archiviare i file binari contenenti del codice della pipeline. Dataflow supporta solo le chiavi predefinite impostate dal a livello di bucket.
- I bucket Cloud Storage utilizzati per archiviare i dati della pipeline campionati, quando il campionamento dei dati sia abilitato.
- Stato di Dataflow Streaming Engine per pipeline in modalità flusso.
Chiavi esterne
Puoi utilizzare Cloud External Key Manager (Cloud EKM) per criptare i dati all'interno di a Google Cloud utilizzando chiavi esterne che gestisci.
Quando utilizzi una chiave Cloud EKM, Google non ha alcun controllo sulle la disponibilità della chiave gestita esternamente. Se la chiave non è più disponibile durante il periodo di creazione del job o della pipeline, il job o la pipeline vengono annullati.
Per ulteriori considerazioni sull'uso di chiavi esterne, consulta Gestore di chiavi esterne Cloud.
Prima di iniziare
Verifica di disporre dell'SDK Apache Beam per Java 2.13.0 o versioni successive. l'SDK Apache Beam per Python 2.13.0 o successivo oppure l'SDK Apache Beam SDK per Go 2.40.0 o versioni successive.
Per ulteriori informazioni, vedi Installazione dell'SDK Apache Beam.
Decidi se eseguire Dataflow Cloud KMS nello stesso progetto Google Cloud oppure in progetti diversi. In questa pagina viene utilizzata la seguente convenzione:
PROJECT_ID
è l'ID del progetto che che esegue Dataflow.PROJECT_NUMBER
è il numero del progetto che esegue Dataflow.KMS_PROJECT_ID
è l'ID progetto del che esegue Cloud KMS.
Per informazioni sugli ID e sui numeri di progetto Google Cloud, consulta Identificazione dei progetti.
Nel progetto Google Cloud su cui vuoi eseguire Cloud KMS:
- Abilita l'API Cloud KMS.
- Crea un keyring e una chiave come descritto in Creazione di chiavi simmetriche. Cloud KMS e Dataflow sono entrambi servizi regionalizzati. La regione per la tua CMEK e la regione del job Dataflow deve essere lo stesso. Non utilizzare le opzioni globali o e chiavi multiregionali con le tue pipeline Dataflow. Utilizza invece chiave regionali.
Concedi le autorizzazioni di criptatore/decriptatore
Assegna il
Cloud KMS CryptoKey Encrypter/Decrypter
role al Account di servizio Dataflow. Questa autorizzazione concede i tuoi Account di servizio Dataflow: l'autorizzazione per criptare e decriptare con la CMEK specificata. Se utilizzi Console Google Cloud e la pagina Crea job da modello, questa autorizzazione viene concessa automaticamente e puoi saltare passaggio.Utilizza Google Cloud CLI per assegnare il ruolo:
gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataflow-service-producer-prod.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Sostituisci
KMS_PROJECT_ID
con l'ID del tuo progetto Google Cloud che che esegue Cloud KMS e sostituiscaPROJECT_NUMBER
con numero di progetto (non l'ID progetto) del tuo progetto Google Cloud che che eseguono le risorse Dataflow.Assegna il
Cloud KMS CryptoKey Encrypter/Decrypter
role al Account di servizio Compute Engine. Questa autorizzazione concede i tuoi all'account di servizio Compute Engine, per criptare e decriptare con la CMEK specificata.Utilizza Google Cloud CLI per assegnare il ruolo:
gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Sostituisci
KMS_PROJECT_ID
con l'ID del tuo progetto Google Cloud che che esegue Cloud KMS e sostituiscaPROJECT_NUMBER
con numero di progetto (non l'ID progetto) del tuo progetto Google Cloud che che eseguono le risorse Compute Engine.
Crea una pipeline protetta da Cloud KMS
Quando crei una pipeline in modalità flusso o batch, puoi selezionare Chiave Cloud KMS per criptare lo stato della pipeline. Lo stato della pipeline archiviati da Dataflow in archiviazione temporanea.
Interfaccia a riga di comando
Per creare una nuova pipeline con stato della pipeline protetta da un Cloud KMS. aggiungi il flag pertinente ai parametri della pipeline. Nell'esempio che segue dimostra eseguendo una pipeline di conteggio delle parole con Cloud KMS.
Java
Dataflow non supporta la creazione di valori predefiniti
i percorsi Cloud Storage per i file temporanei quando si utilizza un
Chiave Cloud KMS. È obbligatorio specificare gcpTempLocation
.
mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--inputFile=gs://dataflow-samples/shakespeare/kinglear.txt \ --output=gs://STORAGE_BUCKET/counts \ --runner=DataflowRunner --project=PROJECT_ID \ --gcpTempLocation=gs://STORAGE_BUCKET/tmp \ --dataflowKmsKey=KMS_KEY" -Pdataflow-runner
Python
Dataflow non supporta la creazione di valori predefiniti
i percorsi Cloud Storage per i file temporanei quando si utilizza un
Chiave Cloud KMS. È obbligatorio specificare gcpTempLocation
.
python -m apache_beam.examples.wordcount \ --input gs://dataflow-samples/shakespeare/kinglear.txt \ --output gs://STORAGE_BUCKET/counts \ --runner DataflowRunner \ --region HOST_GCP_REGION \ --project PROJECT_ID \ --temp_location gs://STORAGE_BUCKET/tmp/ \ --dataflow_kms_key=KMS_KEY
Vai
Dataflow non supporta la creazione di valori predefiniti
i percorsi Cloud Storage per i file temporanei quando si utilizza un
Chiave Cloud KMS. È obbligatorio specificare gcpTempLocation
.
wordcount --project HOST_PROJECT_ID \ --region HOST_GCP_REGION \ --runner dataflow \ --staging_location gs://STORAGE_BUCKET/staging \ --temp_location gs://STORAGE_BUCKET/temp \ --input gs://dataflow-samples/shakespeare/kinglear.txt \ --output gs://STORAGE_BUCKET/output \ --dataflow_kms_key=KMS_KEY
Console Google Cloud
- Apri l'interfaccia di monitoraggio di Dataflow.
Vai all'interfaccia web di Dataflow - Seleziona Crea job da modello.
- Nella sezione Crittografia, seleziona Chiave gestita dal cliente.
![Le opzioni di crittografia nella pagina Crea job da modello da utilizzare
una chiave di proprietà e gestita da Google o chiavi gestite dal cliente.](https://cloud.google.com/static/dataflow/images/CMEK-warning1.png?authuser=2&hl=it)
La prima volta che tenti di eseguire un job con un determinato Cloud KMS chiave, il tuo account di servizio Compute Engine Potrebbe non essere stato concesso l'account di servizio Dataflow le autorizzazioni per criptare e decriptare utilizzando quella chiave. In questo caso, viene visualizzato che ti chiede di concedere l'autorizzazione al tuo account di servizio.
![Prompt per concedere le autorizzazioni per criptare e decriptare i messaggi sul tuo
agli account di servizio Compute Engine e Dataflow,
una particolare CMEK.](https://cloud.google.com/static/dataflow/images/CMEK-warning2.png?authuser=2&hl=it)
Verifica l'utilizzo della chiave Cloud KMS
Puoi verificare se la pipeline utilizza una chiave Cloud KMS utilizzando il metodo console Google Cloud o Google Cloud CLI.
Console
- Apri l'interfaccia di monitoraggio di Dataflow.
Vai all'interfaccia web di Dataflow - Per visualizzare i dettagli del job, seleziona il tuo job Dataflow.
- Nel riquadro laterale Informazioni job, per vedere il tipo di chiave, seleziona la
Campo Tipo di crittografia.
- Per il tipo di crittografia: "Chiave gestita da Google"
- Per il tipo di crittografia: "Chiave gestita dal cliente"
- Per il tipo di crittografia: "Chiave gestita da Google"
interfaccia a riga di comando
Esegui il comando describe
utilizzando
gcloud CLI:
gcloud dataflow jobs describe JOB_ID
Cerca la riga che contiene serviceKmsKeyName
. Queste informazioni
mostra che è stata utilizzata una chiave Cloud KMS
Crittografia dello stato della pipeline Dataflow.
Puoi verificare l'utilizzo delle chiavi Cloud KMS per la crittografia di origini e sink usando le pagine e gli strumenti della console Google Cloud di tali origini e sink, tra cui Pub/Sub, Cloud Storage e BigQuery. Puoi anche verificare l'utilizzo della chiave Cloud KMS tramite la visualizzazione Audit log di Cloud KMS.
Disabilita o elimina la chiave
Se per qualsiasi motivo potresti aver bisogno di disabilitare o eliminare la chiave, puoi utilizzare il nella console Google Cloud. Le operazioni di disabilitazione e di eliminazione annullano i job utilizzando quella chiave. Questa operazione è definitiva.
Se utilizzi Cloud EKM, disattiva o elimina la chiave nel gestore di chiavi esterno.
Se utilizzi l'opzione Streaming Engine, snapshot dello è consigliabile eseguire il job prima di disabilitare la chiave.
Rimuovi l'accesso a Dataflow per la chiave Cloud KMS
Puoi rimuovere l'accesso di Dataflow alla chiave Cloud KMS seguendo questi passaggi:
- Revoca
Cloud KMS CryptoKey Encrypter/Decrypter
role al Account di servizio Dataflow utilizzando Console Google Cloud o gcloud CLI. - Revoca
Cloud KMS CryptoKey Encrypter/Decrypter
role al Account di servizio Compute Engine utilizzando Console Google Cloud o gcloud CLI. - Facoltativamente, puoi anche eliminare il materiale della versione della chiave per impedire a Dataflow e ad altri servizi di accedere alla pipeline stato.
Sebbene sia possibile eliminare il materiale della versione della chiave, non può eliminare chiavi e keyring. Poiché i keyring e le chiavi non hanno costi fatturabili o limitazioni di quota, la continuità della propria esistenza non influisce sui costi o sui limiti di produzione.
I job Dataflow convalidano periodicamente se L'account di servizio Dataflow può utilizzare correttamente Chiave Cloud KMS. Se una richiesta di crittografia o decriptazione non va a buon fine, Il servizio Dataflow interrompe tutte le operazioni di importazione ed elaborazione dei dati non appena il più possibile. Dataflow inizia immediatamente la pulizia delle risorse Google Cloud collegati al tuo job.
Utilizza origini e sink protetti con chiavi Cloud KMS
Dataflow può accedere a origini e sink di Google Cloud protetti da Chiavi Cloud KMS. Se non crei nuovi oggetti, non è necessario e specificare la chiave Cloud KMS di queste origini e sink. Se le tue La pipeline Dataflow potrebbe creare nuovi oggetti in un sink, devi per definire i parametri della pipeline. Questi parametri specificano le chiavi Cloud KMS corrispondenti sink e passa questa chiave Cloud KMS ai metodi del connettore I/O appropriati.
Per origini e sink delle pipeline Dataflow che non supportano CMEK gestite da Cloud KMS, le impostazioni CMEK di Dataflow irrilevante.
Autorizzazioni per le chiavi Cloud KMS
Quando accedi ai servizi protetti con chiavi Cloud KMS, verifica
che hai assegnato a Cloud KMS CryptoKey Encrypter/Decrypter
role
completamente gestito di Google Cloud. Gli account hanno il seguente formato:
- Cloud Storage
service-{project_number}@gs-project-accounts.iam.gserviceaccount.com
- BigQuery:
bq-{project_number}@bigquery-encryption.iam.gserviceaccount.com
- Pub/Sub:
service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com
Cloud Storage
Se vuoi proteggere i bucket temporanei e di gestione temporanea che
specificato con i TempLocation
/temp_location
e
stagingLocation
/staging_location
parametri della pipeline, consulta
configurando i bucket Cloud Storage protetti da CMEK.
BigQuery
Java
Utilizza il metodo with_kms_key()
per i valori restituiti da
BigQueryIO.readTableRows()
, BigQueryIO.read()
BigQueryIO.writeTableRows()
e BigQueryIO.write()
.
Puoi trovare un esempio nella Repository GitHub di Apache Beam.
Python
Utilizza l'argomento kms_key
in
BigQuerySource
e BigQuerySink.
Puoi trovare un esempio nella Repository GitHub di Apache Beam.
Vai
Gli IO di BigQuery non supportano l'utilizzo della chiave kms in Go.
Pub/Sub
Dataflow gestisce l'accesso agli argomenti protetti da CMEK utilizzando il tuo configurazione CMEK per argomento.
Per leggere e scrivere negli argomenti Pub/Sub protetti da CMEK, vedi Istruzioni di Pub/Sub per l'utilizzo di CMEK.
Audit logging per l'utilizzo della chiave Cloud KMS
Dataflow consente a Cloud KMS di utilizzare Cloud Audit Logs per operazioni chiave di logging, come la crittografia e la decriptazione. Dataflow fornisce l'ID job il contesto a un chiamante Cloud KMS. Questo ID ti consente di monitorare ogni istanza per un job Dataflow viene usata una chiave Cloud KMS specifica.
Cloud Audit Logs gestisce gli audit log per ciascun servizio Google Cloud progetto, cartella e organizzazione. Hai a disposizione diverse opzioni per visualizzare Audit log di Cloud KMS.
Cloud KMS scrive gli audit log per le attività di amministrazione Job Dataflow con crittografia CMEK. Questi log registrano le operazioni che modificano la configurazione o i metadati di una risorsa. Non puoi disattivare l'amministratore Audit log delle attività.
Se abilitato esplicitamente, Cloud KMS scrive gli audit log di accesso ai dati per dei tuoi job Dataflow con la crittografia CMEK. Audit log degli accessi ai dati contengono chiamate API che leggono la configurazione o i metadati delle risorse. Questi i log contengono anche chiamate API basate sull'utente che creano, modificano o leggono la risorsa fornita dall'utente e i dati di Google Cloud. Per istruzioni su come attivare l'accesso ai dati in parte o interamente log di controllo, vai a Configurazione dei log di accesso ai dati.
Prezzi
Puoi utilizzare le chiavi di crittografia di Cloud KMS con Dataflow in tutti Regioni di Dataflow in cui è disponibile Cloud KMS.
Questa integrazione non comporta oltre alle operazioni chiave, che vengono fatturate al tuo account Google Cloud progetto. Ogni volta che l'account di servizio Dataflow utilizza la tua chiave Cloud KMS, l'operazione viene fatturata alla tariffa Operazioni con le chiavi Cloud KMS.
Per ulteriori informazioni, vedi Dettagli dei prezzi di Cloud KMS.
Risoluzione dei problemi
Utilizza i suggerimenti in questa sezione per risolvere gli errori.
Impossibile convalidare Cloud KMS
Il flusso di lavoro potrebbe non riuscire con il seguente errore:
Workflow failed. Causes: Cloud KMS key <key-name> cannot be validated.
Per risolvere il problema, verifica di aver trasmesso il percorso completo della chiave. Sembra projects/<project-id>/locations/<gcp-region>/keyRings/<key-ring-name>/cryptoKeys/<key-name>
. Cerca possibili errori di battitura nel percorso della chiave.
Autorizzazione per la chiave Cloud KMS negata
Il flusso di lavoro potrebbe non riuscire con il seguente errore:
Workflow failed. Causes: Cloud KMS key Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource
'projects/<project-id>/locations/<gcp-region>/keyRings/<key-ring-name>/cryptoKeys/<key-name>' (or it may not exist). cannot be validated.
Per risolvere il problema, verifica che l'ID progetto menzionato nel percorso della chiave sia corretto. Inoltre, verifica di disporre dell'autorizzazione per utilizzare la chiave.
La località della chiave Cloud KMS non corrisponde alla località del job Dataflow
Il flusso di lavoro potrebbe non riuscire con il seguente errore:
Workflow failed. Causes: Cloud KMS key projects/<project-id>/locations/<gcp-region>/keyRings/<key-ring-name>/cryptoKeys/<key-name>
can't protect resources for this job. Make sure the region of the KMS key matches the Dataflow region.
Per risolvere il problema, se utilizzi una chiave regionale, verifica che la chiave Cloud KMS si trovi nella stessa regione come job Dataflow.