Risolvere i problemi relativi alle autorizzazioni di Dataflow

Questa pagina mostra come esaminare e risolvere i problemi relativi alle autorizzazioni Dataflow.

Per eseguire correttamente i job Dataflow, il tuo account utente e i service account Dataflow devono disporre dell'accesso necessario alle risorse. Per un elenco dei ruoli richiesti e dei passaggi per concederli, consulta Sicurezza e autorizzazioni per le pipeline su Google Cloud nella pagina Sicurezza e autorizzazioni di Dataflow.

Inoltre, quando le pipeline Apache Beam accedono alle risorse, il account di servizio worker del progetto Dataflow deve avere accesso alle risorse. Google Cloud Per un elenco dei ruoli di cui potrebbe aver bisogno il account di servizio worker, consulta Esempio di assegnazione dei ruoli.

Quando mancano uno o più ruoli necessari per l'esecuzione di un job, potrebbe essere visualizzato un errore nei log dei job o dei worker. Per istruzioni su come trovare gli errori quando un job non viene completato, consulta Trovare informazioni sugli errori della pipeline.

Per risolvere i problemi di autorizzazione, devi capire quale autorizzazione manca e a quale account deve essere assegnata. Per capire quale autorizzazione manca, esamina l'autorizzazione elencata nel messaggio di errore e trova il ruolo che la contiene. Spesso, ma non sempre, devi assegnare il ruolo pertinente al service account worker Dataflow.

Per aggiungere autorizzazioni, il tuo account utente deve essere autorizzato a gestire l'accesso. Per ulteriori informazioni, vedi Gestire l'accesso agli account di servizio e Gestire l'accesso ad altre risorse.

L'utente non dispone dell'accesso in scrittura al progetto

Quando provi a eseguire un job Dataflow, il job non va a buon fine e viene visualizzato un errore simile al seguente:

PERMISSION_DENIED: (Could not create workflow; user does not have write access to project: $PROJECT_ID Causes: (...): Permission 'dataflow.jobs.create' denied on project: '$PROJECT_ID'

Questo errore si verifica quando il tuo account utente non dispone del ruolo roles/dataflow.developer.

Per risolvere il problema, concedi al tuo account utente il ruolo roles/dataflow.developer. Inoltre, assicurati che il tuo account utente disponga del ruolo roles/iam.serviceAccountUser. Per saperne di più, consulta Concedere un singolo ruolo nella documentazione di Identity and Access Management.

L'utente non dispone di autorizzazioni sufficienti per il progetto

Quando provi ad annullare un job Dataflow, viene visualizzato un errore simile al seguente:

Could not cancel workflow; user does not have sufficient permissions on project:PROJECT_ID, or the job does not exist in the project. Causes: (...): Permission 'dataflow.jobs.cancel' denied on project: 'PROJECT_ID' Please ensure you have permission to access the job

Errori simili potrebbero verificarsi durante il tentativo di svuotare o aggiornare un job.

Questo errore si verifica per uno dei seguenti motivi:

  • Il tuo account utente non dispone del ruolo roles/dataflow.developer. Per risolvere il problema, concedi al tuo account utente il ruolo roles/dataflow.developer. Inoltre, assicurati che il tuo account utente disponga del ruolo roles/iam.serviceAccountUser. Per saperne di più, consulta Concedere un singolo ruolo nella documentazione di Identity and Access Management.
  • L'ID job non è corretto. Potrebbe contenere un errore di battitura o potresti utilizzare il nome del job per annullare il job anziché l'ID job.

La verifica delle autorizzazioni per il account di servizio worker non è riuscita

Quando provi a eseguire un job Dataflow, viene visualizzato un errore simile al seguente:

Workflow failed. Causes: Permissions verification for controller service account failed. All permissions in IAM role roles/dataflow.worker should be granted to controller service account PROJECT_NUMBER-compute@developer.gserviceaccount.com.

Questo errore si verifica quando il account di servizio worker non dispone del ruolo roles/dataflow.worker.

Per risolvere il problema, concedi al account di servizio worker il ruolo roles/dataflow.worker. Per saperne di più, consulta Concedere un singolo ruolo nella documentazione di Identity and Access Management.

Convalida della pipeline non riuscita

Prima dell'avvio di un nuovo job Dataflow, Dataflow esegue controlli di convalida sulla pipeline. Quando i controlli di convalida rilevano problemi con la pipeline, per risparmiare tempo e risorse di calcolo, Dataflow non riesce a inviare il job in anticipo. Nei log dei job, Dataflow include messaggi di log che contengono i risultati della convalida e le istruzioni per risolvere i problemi.

Quando il controllo di convalida della pipeline rileva problemi di autorizzazione, potresti visualizzare il seguente errore nei log dei job:

[The preflight pipeline validation failed for job JOB_ID.] Missing permissions
PERMISSION when accessing RESOURCE_PATH as Dataflow worker service account WORKER_SERVICE_ACCOUNT.

Se mancano le autorizzazioni per più di una risorsa, i log del job contengono più messaggi di errore relativi alle autorizzazioni.

Prima di tentare di inviare nuovamente il job Dataflow, risolvi i problemi di autorizzazione. Le seguenti risorse forniscono informazioni sulla modifica di ruoli e autorizzazioni.

Se vuoi ignorare la convalida della pipeline e avviare il job con errori di convalida, utilizza la seguente opzione della pipeline:

--experiment=enable_ppv_effect=false

Si è verificato un problema durante l'aggiornamento delle credenziali

Quando provi a eseguire un job Dataflow, viene visualizzato un errore simile al seguente:

Workflow failed. Causes: There was a problem refreshing your credentials.
Please check: 1. The Dataflow API is enabled for your project.
2. Make sure both the Dataflow service account and the controller service account have sufficient permissions.
If you are not specifying a controller service account, ensure the default Compute Engine service account PROJECT_NUMBER-compute@developer.gserviceaccount.com exists and has sufficient permissions.
If you have deleted the default Compute Engine service account, you must specify a controller service account

Questo errore si verifica quando il account di servizio worker non dispone del ruolo roles/dataflow.worker o quando l'API Dataflow non è abilitata.

Per prima cosa, verifica che l'account di servizio worker abbia il ruolo roles/dataflow.worker. Se necessario, concedi il ruolo roles/dataflow.worker al account di servizio worker. Per saperne di più, consulta Concedere un singolo ruolo nella documentazione di Identity and Access Management.

Per abilitare l'API Dataflow, vedi Abilitazione di un'API nel progetto Google Cloud .

Autorizzazione "compute.subnetworks.get" obbligatoria

Quando provi a eseguire un job Dataflow su una rete VPC condiviso, visualizzi un errore simile a uno dei seguenti:

Required 'compute.subnetworks.get' permission for 'projects/project-id/regions/region/subnetworks/subnet-name' HTTP Code: 403
Required 'compute.subnetworks.use' permission for 'projects/project-id/regions/region/subnetworks/subnet-name' HTTP Code: 403

Il VPC condiviso consente di esportare le subnet da una rete VPC in un progetto host ad altri progetti di servizio nella stessa organizzazione. Le istanze nei progetti di servizio possono avere connessioni di rete nelle subnet condivise del progetto host. Per maggiori informazioni, consulta Panoramica del VPC condiviso.

Per risolvere il problema, verifica innanzitutto che il progetto di servizio sia collegato al progetto host. Per maggiori informazioni, consulta la sezione Allegare progetti di servizio nella pagina Provisioning di VPC condiviso.

Successivamente, concedi i seguenti ruoli al account di servizio Compute Engine del progetto host, al account di servizio worker Dataflow del progetto di servizio e al account di servizio utilizzato per inviare il job:

Per ulteriori informazioni, consulta Linee guida per specificare un parametro di subnet per il VPC condiviso e Concedere un singolo ruolo nella documentazione di Identity and Access Management.

Dataflow runner non ha accesso al bucket

Quando provi a elencare gli oggetti in un bucket Cloud Storage, il job Dataflow non va a buon fine e viene visualizzato un errore simile al seguente:

"dataflow-runner@project-id.iam.gserviceaccount.com" does not have `storage.objects.list` access to the Google Cloud Storage Bucket

Questo errore si verifica quando il account di servizio worker non dispone del ruolo roles/storage.objectViewer.

Per risolvere il problema, concedi al tuo account utente il ruolo roles/storage.objectViewer. Per saperne di più, consulta Concedere un singolo ruolo nella documentazione di Identity and Access Management.

Autorizzazione della chiave Cloud KMS negata per la risorsa

Quando utilizzi chiavi di crittografia gestite dal cliente e provi a creare un job Dataflow, il job non va a buon fine e viene visualizzato un errore simile al seguente:

Cloud KMS key permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource
'projects/project-id/locations/location/keyRings/keyRingName/cryptoKeys/keyname' (or it may not exist). cannot be validated.
Please confirm the full key path is used (starts with projects) and that there are no typos.

Questo errore si verifica quando il account di servizio worker e il account di servizio Dataflow non dispongono del roles/cloudkms.cryptoKeyEncrypterDecrypter ruolo.

Per risolvere il problema, concedi il ruolo roles/cloudkms.cryptoKeyEncrypterDecrypter al account di servizio worker e al account di servizio Dataflow. Per saperne di più, consulta Concessione delle autorizzazioni Encrypter/Decrypter nella pagina Utilizzo delle chiavi di crittografia gestite dal cliente.

Autorizzazione negata per la risorsa

Quando provi a creare una pipeline, la pipeline non viene creata e viene visualizzato il seguente errore:

Permission 'datapipelines.pipelines.create' denied on resource '//datapipelines.googleapis.com/projects/PROJECT_ID/locations/REGION' (or it may not exist).

Questo errore si verifica se l'account di servizio worker del tuo progetto non ha accesso ai file e ad altre risorse associati alla pipeline.

Per risolvere il problema, assegna i seguenti ruoli al account di servizio worker:

  • roles/dataflow.admin
  • roles/dataflow.worker

Per ulteriori informazioni, consulta Service account worker in "Sicurezza e autorizzazioni di Dataflow".

Workflow non riuscito

Quando utilizzi chiavi di crittografia gestite dal cliente e provi a creare un job Dataflow, il job non viene eseguito e viene visualizzato il seguente errore:

Workflow failed

Questo errore può verificarsi per i seguenti motivi:

  • La chiave e il job Dataflow non si trovano nella stessa regione oppure viene utilizzata una chiave multiregionale. Le chiavi globali e multiregionali non sono supportate. La regione per la tua chiave CMEK e la regione per il tuo job Dataflow devono essere le stesse.
  • Il nome della chiave non è specificato correttamente. La chiave potrebbe non esistere o il nome potrebbe contenere un errore di battitura.

La chiave Cloud KMS non può proteggere le risorse per questo job

Quando esegui un job Dataflow e tenti di abilitare una chiave di crittografia gestita dal cliente, il job non va a buon fine e viene visualizzato un errore simile al seguente:

Cloud KMS key can't protect resources for this job. Please make sure the KMS key's region matches the Dataflow region

Questo errore può verificarsi per i seguenti motivi:

  • La chiave e il job Dataflow non si trovano nella stessa regione oppure viene utilizzata una chiave multiregionale. Le chiavi globali e multiregionali non sono supportate. La regione per la tua chiave CMEK e la regione per il tuo job Dataflow devono essere le stesse.
  • Il parametro dataflowKMSKey non è specificato correttamente.

La scalabilità automatica verticale non funziona

Quando utilizzi la scalabilità automatica verticale, il job non viene scalato automaticamente in verticale e nei log del job viene visualizzato il seguente errore:

{"level":"error","ts":1708815877.1246133,"caller":"exporter/exporter.go:232","msg":"failed to get response from UAS: %v","error":"rpc error: code = PermissionDenied desc = The caller does not have permission","stacktrace":"google3/autoscaler/vitor/external/go/exporter/exporter.receiver\n\tautoscaler/vitor/external/go/exporter/exporter.go:232"}

Questo errore si verifica quando il account di servizio worker non dispone del ruolo Dataflow Worker (roles/dataflow.worker).

Per risolvere il problema, concedi al account di servizio worker il ruolo roles/dataflow.worker. Per saperne di più, consulta Concedere un singolo ruolo nella documentazione di Identity and Access Management.

Se utilizzi un ruolo personalizzato per l'account di servizio worker, aggiungi le seguenti autorizzazioni al ruolo personalizzato:

  • autoscaling.sites.readRecommendations
  • autoscaling.sites.writeMetrics
  • autoscaling.sites.writeState

Non hai l'autorizzazione per creare un abbonamento di monitoraggio Pub/Sub

Quando un job Dataflow legge da Pub/Sub utilizzando timestamp evento personalizzati, nei log del job viene visualizzato il seguente errore:

Creating watermark tracking pubsub subscription projects/PROJECT_ID/subscriptions/SUBSCRIPTION __df_internal[16 HEX CHARACTERS] to topic projects/PROJECT_ID/topics/TOPIC failed with error: User not authorized to perform this action

Puoi configurare Dataflow per leggere i timestamp degli eventi da un attributo del messaggio Pub/Sub. In questo caso, Dataflow crea una seconda sottoscrizione Pub/Sub, chiamata sottoscrizione di monitoraggio.

Questo errore si verifica quando Dataflow non dispone dell'autorizzazione per creare l'abbonamento di monitoraggio. Per ulteriori informazioni, vedi Timestamp e filigrane.