Sicurezza e autorizzazioni di Dataflow

Puoi eseguire pipeline Dataflow in locale o su risorse Google Cloud gestite utilizzando il servizio gestito Dataflow. Sia in esecuzione in locale che nel cloud, la pipeline e i suoi worker utilizzano un sistema di autorizzazioni per mantenere sicuro l'accesso ai file e alle risorse della pipeline. Le autorizzazioni di Dataflow vengono assegnate in base al ruolo utilizzato per accedere alle risorse della pipeline. Questo documento illustra i seguenti concetti:

  • Upgrade delle VM di Dataflow
  • Ruoli e autorizzazioni necessari per eseguire pipeline locali e Google Cloud
  • Ruoli e autorizzazioni necessari per accedere alle risorse della pipeline
  • Tipi di dati utilizzati in un servizio Dataflow e nella sicurezza dei dati

Prima di iniziare

Per ulteriori informazioni sugli identificatori di progetto Google Cloud, consulta la panoramica di Google Cloud. Questi identificatori includono il nome del progetto, l'ID e il numero del progetto.

Esegui l'upgrade e le patch delle VM Dataflow

Dataflow utilizza Container-Optimized OS. Pertanto, i processi di sicurezza di Container-Optimized OS si applicano anche a Dataflow.

Le pipeline in modalità batch sono vincolate al tempo e non richiedono manutenzione. Quando viene avviata una nuova pipeline batch, viene utilizzata l'immagine Dataflow più recente.

Per le pipeline in modalità flusso, se è immediatamente richiesta una patch di sicurezza, Google Cloud ti invia una notifica utilizzando i bollettini sulla sicurezza. Per le pipeline in modalità flusso, ti consigliamo di utilizzare l'opzione --update per riavviare il job con l'immagine Dataflow più recente.

Le immagini container Dataflow sono disponibili nella console Google Cloud.

Sicurezza e autorizzazioni per le pipeline locali

Quando esegui in locale, la pipeline Apache Beam viene eseguita come l'account Google Cloud che hai configurato con l'eseguibile Google Cloud CLI. Di conseguenza, esegui localmente le operazioni dell'SDK Apache Beam e il tuo account Google Cloud avrà accesso agli stessi file e alle stesse risorse.

Per elencare l'account Google Cloud selezionato come predefinito, esegui il comando gcloud config list.

Le pipeline locali possono inviare dati a destinazioni locali, come file locali, oppure a destinazioni cloud, come Cloud Storage o BigQuery. Se la tua pipeline eseguita localmente scrive file in risorse basate su cloud come Cloud Storage, utilizza le credenziali del tuo account Google Cloud e il progetto Google Cloud che hai configurato come impostazione predefinita di Google Cloud CLI. Per istruzioni su come eseguire l'autenticazione con le credenziali del tuo account Google Cloud, consulta la guida rapida per il linguaggio che stai utilizzando: guida rapida di Java, guida rapida di Python o guida rapida di Go.

Sicurezza e autorizzazioni per le pipeline su Google Cloud

Quando esegui la pipeline, Dataflow utilizza due account di servizio per gestire la sicurezza e le autorizzazioni:

  • L'account di servizio Dataflow. Il servizio Dataflow utilizza l'account di servizio Dataflow come parte della richiesta di creazione del job, ad esempio per controllare la quota del progetto e creare istanze worker per tuo conto. Per gestire il job, Dataflow usa l'account di servizio Dataflow anche durante l'esecuzione. Questo account è anche noto come agente di servizio Dataflow.

  • L'account di servizio del worker. Le istanze worker utilizzano l'account di servizio worker per accedere alle risorse di input e output dopo che hai inviato il job. Per impostazione predefinita, i worker utilizzano l'account di servizio predefinito di Compute Engine associato al progetto come account di servizio worker. Come best practice, ti consigliamo di specificare un account di servizio gestito dall'utente anziché utilizzare l'account di servizio predefinito per i worker.

Per impersonare l'account di servizio, l'account che avvia la pipeline deve avere il seguente ruolo: iam.serviceAccounts.actAs.

A seconda delle altre autorizzazioni del progetto, il tuo account utente potrebbe richiedere anche il ruolo roles/dataflow.developer. Se sei un proprietario o un editor del progetto, hai già le autorizzazioni contenute nel ruolo roles/dataflow.developer.

Best practice

  • Se possibile, per l'account di servizio worker, specifica un account di servizio gestito dall'utente invece di utilizzare l'account di servizio predefinito per i worker.
  • Quando concedi le autorizzazioni sulle risorse, concedi il ruolo che contiene le autorizzazioni minime richieste per l'attività. Puoi creare un ruolo personalizzato che includa solo le autorizzazioni richieste.
  • Quando concedi ruoli per accedere alle risorse, utilizza il livello di risorsa più basso possibile. Ad esempio, invece di concedere il ruolo roles/bigquery.dataEditor su un progetto o una cartella, concedi il ruolo nella tabella BigQuery.
  • Crea un bucket di proprietà del tuo progetto da usare come bucket di gestione temporanea per Dataflow. Le autorizzazioni del bucket predefinite consentono a Dataflow di usare il bucket per posizionare temporaneamente i file eseguibili della pipeline.

Account di servizio Dataflow

Tutti i progetti che hanno utilizzato la risorsa Dataflow Job hanno un account di servizio Dataflow, noto anche come agente di servizio Dataflow, che ha l'indirizzo email seguente:

service-PROJECT_NUMBER@dataflow-service-producer-prod.iam.gserviceaccount.com

Questo account di servizio viene creato e gestito da Google e assegnato automaticamente al tuo progetto al primo utilizzo della risorsa Dataflow Job.

Nell'esecuzione della pipeline Dataflow, il servizio Dataflow manipola le risorse per tuo conto. Ad esempio, crea VM aggiuntive. Quando esegui la pipeline sul servizio Dataflow, il servizio utilizza questo account di servizio.

A questo account viene assegnato il ruolo Agente di servizio Dataflow nel progetto. Dispone delle autorizzazioni necessarie per eseguire un job Dataflow nel progetto, tra cui l'avvio dei worker di Compute Engine. Questo account viene utilizzato esclusivamente dal servizio Dataflow ed è specifico per il tuo progetto.

Puoi esaminare le autorizzazioni dell'account di servizio Dataflow nella console Google Cloud o in Google Cloud CLI.

Console

  1. Vai alla pagina Ruoli.

    Vai a Ruoli

  2. Se applicabile, seleziona il progetto.

  3. Nell'elenco, fai clic sul titolo Agente di servizio Cloud Dataflow. Si apre una pagina in cui sono elencate le autorizzazioni assegnate all'account di servizio Dataflow.

Interfaccia a riga di comando gcloud

Visualizza le autorizzazioni dell'account di servizio Dataflow:

gcloud iam roles describe roles/dataflow.serviceAgent

Poiché i servizi Google Cloud prevedono di avere accesso in lettura e scrittura al progetto e alle sue risorse, consigliamo di non modificare le autorizzazioni predefinite stabilite automaticamente per il progetto. Se un account di servizio Dataflow perde le autorizzazioni per un progetto, Dataflow non può avviare VM o eseguire altre attività di gestione.

Se rimuovi le autorizzazioni per l'account di servizio dal criterio Identity and Access Management (IAM), l'account rimane presente perché è di proprietà del servizio Dataflow.

Account di servizio worker

Le istanze di Compute Engine eseguono le operazioni dell'SDK Apache Beam nella cloud. Questi worker utilizzano l'account di servizio worker del progetto per accedere ai file e ad altre risorse associate alla pipeline. L'account di servizio worker viene utilizzato come identità per tutte le VM worker e tutte le richieste provenienti dalla VM utilizzano l'account di servizio worker. Questo account di servizio viene utilizzato anche per interagire con risorse quali bucket Cloud Storage e argomenti Pub/Sub.

  • Affinché l'account di servizio worker sia in grado di eseguire un job, deve avere il ruolo roles/dataflow.worker.
  • Affinché l'account di servizio worker possa creare o esaminare un job, deve avere il ruolo roles/dataflow.admin.

Inoltre, quando le pipeline Apache Beam accedono alle risorse Google Cloud, devi concedere i ruoli richiesti all'account di servizio worker del progetto Dataflow. L'account di servizio worker deve essere in grado di accedere alle risorse durante l'esecuzione del job Dataflow. Ad esempio, se il job scrive in BigQuery, anche il tuo account di servizio deve avere almeno il ruolo roles/bigquery.dataEditor nella tabella BigQuery. Esempi di risorse includono:

Account di servizio worker predefinito

Per impostazione predefinita, i worker utilizzano l'account di servizio predefinito di Compute Engine del progetto come account di servizio worker. Questo account di servizio ha il seguente indirizzo email:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Questo account di servizio viene creato automaticamente quando abiliti l'API Compute Engine per il tuo progetto dalla libreria API nella console Google Cloud.

Anche se puoi utilizzare l'account di servizio predefinito di Compute Engine come account di servizio worker Dataflow, ti consigliamo di creare un account di servizio worker Dataflow dedicato che abbia solo i ruoli e le autorizzazioni necessari.

A seconda della configurazione dei criteri dell'organizzazione, all'account di servizio predefinito potrebbe essere concesso automaticamente il ruolo Editor per il progetto. Ti consigliamo vivamente di disabilitare la concessione automatica del ruolo applicando il vincolo iam.automaticIamGrantsForDefaultServiceAccounts del criterio dell'organizzazione. Se hai creato la tua organizzazione dopo il 3 maggio 2024, questo vincolo viene applicato per impostazione predefinita.

Se disabiliti la concessione automatica dei ruoli, devi decidere quali ruoli concedere agli account di servizio predefiniti e poi concedere questi ruoli autonomamente.

Se l'account di servizio predefinito ha già il ruolo Editor, ti consigliamo di sostituire quest'ultimo con ruoli meno permissivi. Per modificare in modo sicuro i ruoli dell'account di servizio, utilizza il Simulatore di criteri per vedere l'impatto della modifica, quindi concedi e revoca i ruoli appropriati.

Specifica un account di servizio per il worker gestito dall'utente

Se vuoi creare e utilizzare risorse con controllo dell'accesso granulare, puoi creare un account di servizio gestito dall'utente. Utilizza questo account come account di servizio worker.

  1. Se non hai un account di servizio gestito dall'utente, creane uno.

  2. Imposta i ruoli IAM richiesti per l'account di servizio.

    • Affinché l'account di servizio worker sia in grado di eseguire un job, deve avere il ruolo roles/dataflow.worker.
    • Affinché l'account di servizio worker possa creare o esaminare un job, deve avere il ruolo roles/dataflow.admin.
    • In alternativa, crea un ruolo IAM personalizzato con le autorizzazioni necessarie. Per un elenco delle autorizzazioni richieste, vedi Ruoli.
    • Il tuo account di servizio potrebbe richiedere ruoli aggiuntivi per utilizzare le risorse Google Cloud come richiesto dal tuo job, ad esempio BigQuery, Pub/Sub o Cloud Storage. Ad esempio, se il job legge da BigQuery, anche il tuo account di servizio deve avere almeno il ruolo roles/bigquery.dataViewer nella tabella BigQuery.
    • Assicurati che il tuo account di servizio gestito dall'utente disponga dell'accesso in lettura e scrittura alle posizioni temporanee e temporanee specificate nel job Dataflow.
    • Per impersonare l'account di servizio, il tuo account utente deve avere l'autorizzazione iam.serviceAccounts.actAs.
  3. Nel progetto che contiene l'account di servizio worker gestito dall'utente, l'account di servizio Dataflow (service-PROJECT_NUMBER@dataflow-service-producer-prod.iam.gserviceaccount.com) e l'agente di servizio Compute Engine (service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com) devono avere i ruoli seguenti. PROJECT_NUMBER è l'ID del progetto in cui viene eseguito il job Dataflow. Entrambi gli account sono agenti di servizio.

    Nel progetto in cui viene eseguito il job Dataflow, gli account hanno questi ruoli per impostazione predefinita. Se l'account di servizio worker gestito dall'utente e il job si trovano in progetti diversi, concedi questi ruoli anche agli account di servizio gestiti da Google utilizzati dall'account di servizio worker gestito dall'utente. Per concedere questi ruoli, segui i passaggi nella sezione Concedere un singolo ruolo nella pagina Gestire l'accesso agli account di servizio.

  4. Quando l'account di servizio worker gestito dall'utente e il job si trovano in progetti diversi, assicurati che il vincolo booleano iam.disableCrossProjectServiceAccountUsage non venga applicato per il progetto proprietario dell'account di servizio gestito dall'utente. Per ulteriori informazioni, consulta Abilitare il collegamento degli account di servizio tra progetti.

  5. Quando esegui il job della pipeline, specifica il tuo account di servizio.

    Java

    Utilizza l'opzione --serviceAccount e specifica il tuo account di servizio quando esegui il job della pipeline dalla riga di comando: --serviceAccount=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    Utilizza l'opzione --service-account-email e specifica il tuo account di servizio quando esegui il job della pipeline come modello flessibile: --service-account-email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    Python

    Utilizza l'opzione --service_account_email e specifica il tuo account di servizio quando esegui il job della pipeline: --service_account_email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    Go

    Utilizza l'opzione --service_account_email e specifica il tuo account di servizio quando esegui il job della pipeline: --service_account_email=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Puoi ottenere un elenco degli account di servizio associati al tuo progetto nella pagina Autorizzazioni della console Google Cloud.

L'account di servizio gestito dall'utente può trovarsi nello stesso progetto del job o in un altro progetto. Se l'account di servizio e il job si trovano in progetti diversi, devi configurare l'account di servizio prima di eseguire il job.

Aggiungi ruoli

Per aggiungere ruoli nel progetto, segui questi passaggi.

Console

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai a IAM

  2. Seleziona il progetto.

  3. Nella riga contenente il tuo account utente, fai clic su Modifica entità, poi su Aggiungi un altro ruolo.

  4. Nell'elenco a discesa, seleziona il ruolo Utente account di servizio.

  5. Nella riga contenente il tuo account di servizio worker, fai clic su Modifica entità, quindi su Aggiungi un altro ruolo.

  6. Nell'elenco a discesa, seleziona il ruolo Worker Dataflow.

  7. Se il tuo account di servizio worker richiede il ruolo Amministratore Dataflow, ripeti per Amministratore Dataflow.

  8. Ripeti la procedura per tutti i ruoli richiesti dalle risorse utilizzate nel job, quindi fai clic su Salva.

    Per ulteriori informazioni sulla concessione dei ruoli, consulta Concedi un ruolo IAM utilizzando la console.

Interfaccia a riga di comando gcloud

  1. Concedi il ruolo roles/iam.serviceAccountUser al tuo account utente. Esegui questo comando:

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS --role=roles/iam.serviceAccountUser
    
    • Sostituisci PROJECT_ID con l'ID progetto.
    • Sostituisci EMAIL_ADDRESS con l'indirizzo email dell'account utente.
  2. Concedi i ruoli al tuo account di servizio worker. Esegui questo comando per il ruolo IAM roles/dataflow.worker e per eventuali ruoli richiesti dalle risorse utilizzate nel job. Se l'account di servizio worker richiede il ruolo Amministratore Dataflow, ripeti per il ruolo IAM roles/dataflow.admin. In questo esempio viene utilizzato l'account di servizio predefinito di Compute Engine, ma ti consigliamo di utilizzare un account di servizio gestito dall'utente.

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
    
    • Sostituisci PROJECT_ID con l'ID progetto.
    • Sostituisci PROJECT_NUMBER con il numero del tuo progetto. Per trovare il numero del progetto, consulta Identificare i progetti o utilizza il comando gcloud projects describe.
    • Sostituisci SERVICE_ACCOUNT_ROLE con ogni singolo ruolo.

Accesso alle risorse Google Cloud

Le pipeline Apache Beam possono accedere alle risorse Google Cloud, nello stesso progetto Google Cloud o in altri progetti. Le risorse includono:

Per assicurarti che la pipeline Apache Beam possa accedere a queste risorse, devi utilizzare i rispettivi meccanismi di controllo dell'accesso delle risorse per concedere esplicitamente l'accesso all'account di servizio worker del progetto Dataflow.

Se utilizzi le funzionalità di Assured Workloads con Dataflow, ad esempio Regioni e assistenza nell'UE con controlli di sovranità, tutti i connettori Cloud Storage, BigQuery, Pub/Sub, I/O e le altre risorse a cui accede la pipeline devono trovarsi nel progetto o nella cartella Assured Workloads dell'organizzazione.

Se utilizzi un account di servizio per il worker gestito dall'utente o accedi alle risorse in altri progetti, potrebbero essere necessarie ulteriori azioni. Gli esempi seguenti presuppongono che venga utilizzato l'account di servizio predefinito di Compute Engine, ma puoi anche utilizzare un account di servizio per il worker gestito dall'utente.

Accedi ai repository Artifact Registry

Quando utilizzi container personalizzati con Dataflow, puoi caricare gli artefatti in un repository Artifact Registry.

Per utilizzare Artifact Registry con Dataflow, devi concedere almeno l'accesso in Writer di Artifact Registry (role/artifactregistry.writer) all'account di servizio worker che esegue il job Dataflow.

Tutti i contenuti del repository vengono criptati utilizzando chiavi di proprietà di Google e gestite da Google o chiavi di crittografia gestite dal cliente. Artifact Registry utilizza le chiavi di proprietà di Google e gestite da Google per impostazione predefinita e non è richiesta alcuna configurazione per questa opzione.

Accedi ai bucket Cloud Storage

Per concedere al progetto Dataflow l'accesso a un bucket Cloud Storage, rendi il bucket accessibile all'account di servizio worker del progetto Dataflow. L'account di servizio deve disporre almeno di autorizzazioni di lettura e scrittura sia per il bucket sia per i relativi contenuti. Puoi utilizzare le autorizzazioni IAM per Cloud Storage per concedere l'accesso richiesto.

Per concedere al tuo account di servizio worker le autorizzazioni necessarie per leggere e scrivere in un bucket, utilizza il comando gcloud storage buckets add-iam-policy-binding. Questo comando aggiunge l'account di servizio del progetto Dataflow a un criterio a livello di bucket.

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE

Sostituisci quanto segue:

  • BUCKET_NAME: il nome del tuo bucket Cloud Storage
  • PROJECT_NUMBER: il numero del tuo progetto Dataflow. Per trovare il numero del progetto, consulta Identificare i progetti o utilizza il comando gcloud projects describe.
  • SERVICE_ACCOUNT_ROLE: il ruolo IAM, ad esempio storage.objectViewer

Per recuperare un elenco dei bucket Cloud Storage in un progetto Google Cloud, utilizza il comando gcloud storage buckets list:

gcloud storage buckets list --project= PROJECT_ID

Sostituisci PROJECT_ID con l'ID del progetto.

A meno che tu non sia limitato dai criteri dell'organizzazione che limitano la condivisione delle risorse, puoi accedere a un bucket che risiede in un progetto diverso dalla pipeline di Dataflow. Per ulteriori informazioni sulle restrizioni relative ai domini, consulta Limitazione delle identità per dominio.

Se non hai un bucket, creane uno nuovo. Quindi, assegna al tuo account di servizio worker le autorizzazioni necessarie per leggere e scrivere nel bucket.

Puoi anche impostare le autorizzazioni del bucket dalla console Google Cloud. Per ulteriori informazioni, consulta Impostazione delle autorizzazioni del bucket.

Cloud Storage offre due sistemi per concedere agli utenti l'accesso ai tuoi bucket e ai tuoi oggetti: IAM ed elenchi di controllo dell'accesso (ACL). Nella maggior parte dei casi, IAM è il metodo consigliato per controllare l'accesso alle risorse.

  • IAM controlla le autorizzazioni in tutto Google Cloud e consente di concedere autorizzazioni a livello di bucket e progetto. Per un elenco dei ruoli IAM associati a Cloud Storage e delle autorizzazioni contenute in ciascun ruolo, consulta Ruoli IAM per Cloud Storage. Se hai bisogno di un maggiore controllo sulle autorizzazioni, crea un ruolo personalizzato.

  • Se utilizzi ACL per controllare l'accesso, assicurati che le autorizzazioni dell'account di servizio del worker siano coerenti con le impostazioni IAM. A causa dell'incoerenza tra i criteri IAM e ACL, il bucket Cloud Storage potrebbe diventare inaccessibile ai job Dataflow quando viene eseguita la migrazione del bucket Cloud Storage dall'accesso granulare all'accesso uniforme a livello di bucket. Per ulteriori informazioni, consulta le linee guida sugli errori comuni.

Accedi ai set di dati BigQuery

Puoi utilizzare l'API BigQueryIO per accedere ai set di dati BigQuery, nello stesso progetto in cui stai utilizzando Dataflow o in un progetto diverso. Affinché l'origine e il sink di BigQuery funzionino correttamente, i seguenti due account devono avere accesso a tutti i set di dati BigQuery da cui il job Dataflow legge o scrive:

Potresti dover configurare BigQuery per concedere esplicitamente l'accesso a questi account. Consulta Controllo degli accessi BigQuery per ulteriori informazioni su come concedere l'accesso ai set di dati BigQuery utilizzando la pagina BigQuery o l'API BigQuery.

Tra le autorizzazioni BigQuery richieste, la pipeline richiede l'autorizzazione IAM bigquery.datasets.get per accedere a un set di dati BigQuery. In genere, la maggior parte dei ruoli IAM di BigQuery include l'autorizzazione bigquery.datasets.get, ma il ruolo roles/bigquery.jobUser è un'eccezione.

Accedere ad argomenti e sottoscrizioni Pub/Sub

Per accedere a un argomento o a un abbonamento Pub/Sub, utilizza le funzionalità di gestione di identità e accessi di Pub/Sub per configurare le autorizzazioni per l'account di servizio worker.

Sono pertinenti le autorizzazioni dei seguenti ruoli Pub/Sub:

  • roles/pubsub.subscriber è obbligatorio per consumare dati.
  • roles/pubsub.editor è obbligatorio per creare un abbonamento Pub/Sub.
  • roles/pubsub.viewer è consigliato per consentire a Dataflow di eseguire query sulle configurazioni di argomenti e sottoscrizioni. Questa configurazione offre due vantaggi:
    • Dataflow può verificare la presenza di impostazioni non supportate per gli abbonamenti che potrebbero non funzionare come previsto.
    • Se l'abbonamento non utilizza la scadenza di conferma predefinita di 10 secondi, le prestazioni migliorano. Dataflow estende ripetutamente la scadenza di conferma per un messaggio mentre viene elaborato dalla pipeline. Senza le autorizzazioni pubsub.viewer, Dataflow non è in grado di eseguire query sulla scadenza di conferma, perciò deve presupporre una scadenza predefinita. Con questa configurazione, Dataflow invia più richieste modifyAckDeadline del necessario.
    • Se i Controlli di servizio VPC sono abilitati nel progetto proprietario della sottoscrizione o dell'argomento, le regole in entrata basate su indirizzi IP non consentono a Dataflow di eseguire query sulle configurazioni. In questo caso, è necessaria una regola in entrata basata sull'account di servizio worker.

Per ulteriori informazioni e alcuni esempi di codice che dimostrano come utilizzare le funzionalità di Identity and Access Management di Pub/Sub, consulta Caso d'uso di esempio: comunicazione tra progetti.

Accedi a Firestore

Per accedere a un database Firestore (in modalità Native o Datastore), aggiungi il tuo account di servizio worker Dataflow (ad esempio, PROJECT_NUMBER-compute@developer.gserviceaccount.com) come editor del progetto proprietario del database oppure utilizza un ruolo Datastore più restrittivo come roles/datastore.viewer. Inoltre, abilita l'API Firestore in entrambi i progetti dalla libreria API nella console Google Cloud.

Accedi alle immagini per i progetti con un criteri per l'utilizzo di immagini attendibili

Se hai configurato un criterio per le immagini attendibili per il tuo progetto e l'immagine di avvio si trova in un altro progetto, assicurati che il criteri per l'utilizzo di immagini attendibili sia configurato in modo da avere accesso all'immagine. Ad esempio, se esegui un job Dataflow basato su modelli, assicurati che il file dei criteri includa l'accesso al progetto dataflow-service-producer-prod. Questo progetto Google Cloud contiene le immagini per i job modello.

Accesso ai dati e sicurezza

Il servizio Dataflow funziona con due tipi di dati:

  • Dati degli utenti finali. Questi dati vengono elaborati da una pipeline Dataflow. Una pipeline tipica legge i dati da una o più origini, implementa le trasformazioni dei dati e scrive i risultati in uno o più sink. Tutti le origini e i sink sono servizi di archiviazione non gestiti direttamente da Dataflow.

  • Dati operativi. Questi dati includono tutti i metadati necessari per gestire una pipeline Dataflow. Questi dati includono sia i metadati forniti dall'utente, come il nome di un job o le opzioni della pipeline, sia i metadati generati dal sistema, come un ID job.

Il servizio Dataflow utilizza diversi meccanismi di sicurezza per mantenere i tuoi dati protetti e privati. Questi meccanismi si applicano ai seguenti scenari:

  • Invio di una pipeline al servizio
  • Valutazione di una pipeline
  • Richiedere l'accesso a dati di telemetria e metriche durante e dopo l'esecuzione di una pipeline
  • Utilizzo di un servizio Dataflow come Shuffle o Streaming Engine

Località di dati

L'elaborazione dei dati principali per il servizio Dataflow avviene nella regione specificata nel codice della pipeline. Se non viene specificata una regione, viene utilizzata la regione predefinita us-central1. Se specifichi questa opzione nel codice della pipeline, il job della pipeline può facoltativamente leggere e scrivere da origini e sink in altre regioni. Tuttavia, l'elaborazione effettiva dei dati avviene solo nella regione specificata per l'esecuzione delle VM Dataflow.

La logica della pipeline viene valutata su singole istanze VM worker. Puoi specificare la zona in cui si trovano queste istanze e la rete privata su cui comunicano. I calcoli accessori per la piattaforma dipendono da metadati come località o dimensioni dei file di Cloud Storage.

Dataflow è un servizio a livello di regione. Per ulteriori informazioni sulla località e sulle regioni dei dati, consulta Regioni di Dataflow.

Dati nell'invio di una pipeline

Le autorizzazioni IAM per il tuo progetto Google Cloud controllano l'accesso al servizio Dataflow. Tutte le entità a cui sono stati concessi i diritti di editor o proprietario per il tuo progetto possono inviare pipeline al servizio. Per inviare le pipeline, devi eseguire l'autenticazione utilizzando Google Cloud CLI. Dopo l'autenticazione, le pipeline vengono inviate utilizzando il protocollo HTTPS. Per istruzioni su come eseguire l'autenticazione con le credenziali del tuo account Google Cloud, consulta la quickstart per la lingua che utilizzi.

Valutazione dei dati in una pipeline

Nell'ambito della valutazione di una pipeline, i dati temporanei potrebbero essere generati e archiviati localmente nelle istanze di VM worker o in Cloud Storage. I dati temporanei vengono criptati at-rest e non rimangono al termine della valutazione della pipeline. Questi dati possono anche essere archiviati nel servizio Shuffle o Streaming Engine (se hai scelto il servizio) nella stessa regione specificata nella pipeline Dataflow.

Java

Per impostazione predefinita, le VM di Compute Engine vengono eliminate al completamento del job Dataflow, indipendentemente dal fatto che il job abbia esito positivo o negativo. Di conseguenza, il disco permanente associato e tutti i dati intermedi che potrebbero essere archiviati al suo interno vengono eliminati. I dati intermedi archiviati in Cloud Storage possono essere trovati in località secondarie del percorso di Cloud Storage che fornisci come --stagingLocation o --tempLocation. Se stai scrivendo l'output in un file Cloud Storage, è possibile che nel percorso di output vengano creati dei file temporanei prima del completamento dell'operazione di scrittura.

Python

Per impostazione predefinita, le VM di Compute Engine vengono eliminate al completamento del job Dataflow, indipendentemente dal fatto che il job abbia esito positivo o negativo. Di conseguenza, il disco permanente associato e tutti i dati intermedi che potrebbero essere archiviati al suo interno vengono eliminati. I dati intermedi archiviati in Cloud Storage possono essere trovati in località secondarie del percorso di Cloud Storage che fornisci come --staging_location o --temp_location. Se stai scrivendo l'output in un file Cloud Storage, è possibile che nel percorso di output vengano creati dei file temporanei prima del completamento dell'operazione di scrittura.

Go

Per impostazione predefinita, le VM di Compute Engine vengono eliminate al completamento del job Dataflow, indipendentemente dal fatto che il job abbia esito positivo o negativo. Di conseguenza, il disco permanente associato e tutti i dati intermedi che potrebbero essere archiviati al suo interno vengono eliminati. I dati intermedi archiviati in Cloud Storage possono essere trovati in località secondarie del percorso di Cloud Storage che fornisci come --staging_location o --temp_location. Se stai scrivendo l'output in un file Cloud Storage, è possibile che nel percorso di output vengano creati dei file temporanei prima del completamento dell'operazione di scrittura.

Dati nei log e nella telemetria della pipeline

Le informazioni archiviate in Cloud Logging vengono generate principalmente dal codice nel tuo programma Dataflow. Il servizio Dataflow potrebbe anche generare dati di avviso ed errore in Cloud Logging, ma questi sono gli unici dati intermedi che il servizio aggiunge ai log. Cloud Logging è un servizio globale.

I dati di telemetria e le metriche associate vengono criptati at-rest e l'accesso a questi dati è controllato dalle autorizzazioni di lettura del progetto Google Cloud.

Dati nei servizi Dataflow

Se usi Dataflow Shuffle o Dataflow Streaming per la pipeline, non specificare le opzioni della pipeline di zona. Devi invece specificare la regione e impostare il valore su una delle regioni in cui è disponibile lo shuffle o lo streaming. Dataflow seleziona automaticamente la zona nella regione specificata. I dati in transito dell'utente finale rimangono all'interno delle VM worker e nella stessa zona. Questi job Dataflow possono ancora leggere e scrivere su origini e sink che si trovano all'esterno della zona VM. I dati in transito possono anche essere inviati ai servizi Dataflow Shuffle o Dataflow Streaming, tuttavia i dati rimangono sempre nella regione specificata nel codice della pipeline.

Ti consigliamo di utilizzare i meccanismi di sicurezza disponibili nelle risorse cloud sottostanti della pipeline. Questi meccanismi includono le funzionalità di sicurezza dei dati di origini dati e sink come BigQuery e Cloud Storage. Inoltre, è meglio non combinare diversi livelli di attendibilità in un unico progetto.