Utilizzo delle chiavi di crittografia gestite dal cliente

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

  1. 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.

  2. 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.

  3. Nel progetto Google Cloud su cui vuoi eseguire Cloud KMS:

    1. Abilita l'API Cloud KMS.
    2. 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

  1. 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 sostituisca PROJECT_NUMBER con numero di progetto (non l'ID progetto) del tuo progetto Google Cloud che che eseguono le risorse Dataflow.

  2. 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 sostituisca PROJECT_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

  1. Apri l'interfaccia di monitoraggio di Dataflow.
    Vai all'interfaccia web di Dataflow
  2. Seleziona Crea job da modello.
  3. 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.

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.

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

  1. Apri l'interfaccia di monitoraggio di Dataflow.
    Vai all'interfaccia web di Dataflow
  2. Per visualizzare i dettagli del job, seleziona il tuo job Dataflow.
  3. 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"
      Riquadro laterale delle informazioni sul job che elenca i dettagli di un job Dataflow.
      Il tipo di chiave utilizzato dal job è elencato nel campo Tipo di crittografia.
    • Per il tipo di crittografia: "Chiave gestita dal cliente"
      Riquadro laterale delle informazioni sul job che elenca i dettagli di un job Dataflow.
      Il tipo di chiave utilizzato dal job è elencato nel campo Tipo di crittografia.

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:

  1. Revoca Cloud KMS CryptoKey Encrypter/Decrypter role al Account di servizio Dataflow utilizzando Console Google Cloud o gcloud CLI.
  2. Revoca Cloud KMS CryptoKey Encrypter/Decrypter role al Account di servizio Compute Engine utilizzando Console Google Cloud o gcloud CLI.
  3. 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.