Résoudre les problèmes liés aux autorisations Dataflow

Cette page explique comment examiner et résoudre les problèmes liés aux autorisations Dataflow.

Pour exécuter des jobs Dataflow, votre compte utilisateur et vos comptes de service Dataflow doivent disposer des accès nécessaires aux ressources. Pour obtenir la liste des rôles requis et des étapes à suivre pour attribuer ces rôles, consultez la section Sécurité et autorisations pour les pipelines sur Google Cloud sur la page concernant la sécurité et les autorisations dans Dataflow.

En outre, lorsque vos pipelines Apache Beam accèdent aux ressources Google Cloud, le compte de service du nœud de calcul de votre projet Dataflow doit avoir accès aux ressources. Pour obtenir la liste des rôles dont votre compte de service de nœud de calcul peut avoir besoin, consultez la section Exemple d'attribution de rôle.

Lorsqu'un ou plusieurs rôles nécessaires à l'exécution d'un job sont manquants, une erreur peut apparaître dans les journaux du job ou dans les journaux des nœuds de calcul. Consultez la section Trouver des informations sur les échecs de pipeline pour obtenir des instructions sur la façon de trouver les erreurs lorsqu'un job échoue.

Pour résoudre les problèmes d'autorisations, vous devez comprendre quelle autorisation est manquante et quel compte doit disposer de cette autorisation. Pour comprendre quelle autorisation est manquante, examinez l'autorisation listée dans le message d'erreur et recherchez le rôle qui contient cette autorisation. Souvent, mais pas toujours, vous devez attribuer le rôle approprié au compte de service de nœud de calcul Dataflow.

Pour ajouter des autorisations, votre compte utilisateur doit être autorisé à gérer les accès. Pour en savoir plus, consultez les pages Gérer l'accès aux comptes de service et Gérer l'accès aux autres ressources.

L'utilisateur ne dispose pas d'un accès en écriture au projet

Lorsque vous essayez d'exécuter une tâche Dataflow, la tâche échoue et une erreur semblable à celle-ci s'affiche :

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'

Cette erreur se produit lorsque votre compte utilisateur ne dispose pas du rôle roles/dataflow.developer.

Pour résoudre ce problème, accordez le rôle roles/dataflow.developer à votre compte utilisateur. Assurez-vous également que votre compte utilisateur dispose du rôle roles/iam.serviceAccountUser. Pour en savoir plus, consultez la section Attribuer un rôle unique dans la documentation sur Identity and Access Management.

L'utilisateur ne dispose pas des autorisations nécessaires sur le projet

Lorsque vous essayez d'annuler une tâche Dataflow, un message d'erreur semblable à celui-ci s'affiche :

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

Des erreurs similaires peuvent se produire lors d'une tentative de drainage ou de mise à jour d'un job.

Cette erreur se produit pour l'une des raisons suivantes :

  • Votre compte utilisateur ne dispose du rôle roles/dataflow.developer. Pour résoudre ce problème, accordez le rôle roles/dataflow.developer à votre compte utilisateur. Assurez-vous également que votre compte utilisateur dispose du rôle roles/iam.serviceAccountUser. Pour en savoir plus, consultez la section Attribuer un rôle unique dans la documentation sur Identity and Access Management.
  • L'ID du job est incorrect. Il contient peut-être une faute de frappe, ou vous utilisez peut-être le nom du job au lieu de son ID pour annuler le job.

Échec lors de la vérification des autorisations du compte de service de nœud de calcul

Lorsque vous essayez d'exécuter une tâche Dataflow, vous obtenez une erreur semblable à celle-ci :

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.

Cette erreur se produit lorsque le compte de service de nœud de calcul ne dispose pas du rôle roles/dataflow.worker.

Pour résoudre ce problème, accordez le rôle roles/dataflow.worker au compte de service de nœud de calcul. Pour en savoir plus, consultez la section Attribuer un rôle unique dans la documentation sur Identity and Access Management.

Échec de validation du pipeline

Avant le lancement d'un nouveau job Dataflow, Dataflow effectue des contrôles de validation sur le pipeline. Lorsque les contrôles de validation détectent des problèmes avec le pipeline, Dataflow fait échouer l'envoi du job de manière anticipée afin de gagner du temps et de réduire les ressources de calcul. Dans les journaux de jobs, Dataflow inclut des messages de journal contenant les résultats de la validation et des instructions pour résoudre les problèmes.

Lorsque la vérification de validation du pipeline détecte des problèmes d'autorisation, l'erreur suivante peut s'afficher dans les journaux de jobs :

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

S'il manque des autorisations pour plusieurs ressources, les journaux de jobs contiennent plusieurs messages d'erreur d'autorisation.

Avant d'essayer de renvoyer votre job Dataflow, corrigez les problèmes d'autorisation. Les ressources suivantes fournissent des informations sur la modification des rôles et des autorisations.

Si vous souhaitez ignorer la validation du pipeline et lancer votre job avec des erreurs de validation, utilisez l'option de pipeline suivante :

--experiment=enable_ppv_effect=false

Un problème est survenu lors de l'actualisation de vos identifiants

Lorsque vous essayez d'exécuter une tâche Dataflow, vous obtenez une erreur semblable à celle-ci :

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

Cette erreur se produit lorsque le compte de service du nœud de calcul ne dispose pas du rôle roles/dataflow.worker ou lorsque l'API Dataflow n'est pas activée.

Commencez par vérifier que le compte de service de nœud de calcul dispose du rôle roles/dataflow.worker. Si nécessaire, attribuez le rôle roles/dataflow.worker au compte de service du nœud de calcul. Pour en savoir plus, consultez la section Attribuer un rôle unique dans la documentation sur Identity and Access Management.

Pour activer l'API Dataflow, consultez la page Activer une API dans votre projet Google Cloud.

Autorisation "compute.subnetworks.get" requise

Lorsque vous essayez d'exécuter une tâche Dataflow sur un réseau VPC partagé, une erreur semblable à celle-ci s'affiche :

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

Le VPC partagé vous permet d'exporter des sous-réseaux d'un réseau VPC appartenant à un projet hôte vers d'autres projets de service de la même organisation. Les instances hébergées dans les projets de service peuvent établir des connexions réseau au sein des sous-réseaux partagés du projet hôte. Pour en savoir plus, consultez la section VPC partagé.

Pour résoudre ce problème, commencez par vérifier que le projet de service est associé au projet hôte. Pour plus d'informations, consultez la section Associer des projets de service sur la page "Provisionner un VPC partagé".

Ensuite, attribuez les rôles suivants au compte de service Compute Engine du projet hôte, au compte de service de nœud de calcul Dataflow du projet de service et au compte de service utilisé pour envoyer le job :

Pour plus d'informations, consultez les pages Consignes de spécification d'un paramètre de sous-réseau pour le VPC partagé et Attribuer un rôle unique dans la documentation d'Identity and Access Management.

L'exécuteur Dataflow n'a pas accès au bucket

Lorsque vous essayez de répertorier des objets dans un bucket Cloud Storage, la tâche Dataflow échoue et une erreur semblable à celle-ci s'affiche :

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

Cette erreur se produit lorsque le compte de service de nœud de calcul ne dispose pas du rôle roles/storage.objectViewer.

Pour résoudre ce problème, accordez le rôle roles/storage.objectViewer à votre compte utilisateur. Pour en savoir plus, consultez la section Attribuer un rôle unique dans la documentation sur Identity and Access Management.

Autorisation d'une clé Cloud KMS refusée pour la ressource

Lorsque vous utilisez des clés de chiffrement gérées par le client et que vous essayez de créer une tâche Dataflow, la tâche échoue et une erreur semblable à celle-ci s'affiche :

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.

Cette erreur se produit lorsque le compte de service du nœud de calcul et le compte de service Dataflow ne disposent pas du rôle roles/cloudkms.cryptoKeyEncrypterDecrypter.

Pour résoudre ce problème, attribuez le rôle roles/cloudkms.cryptoKeyEncrypterDecrypter au compte de service de nœud de calcul et au compte de service Dataflow. Pour en savoir plus, consultez la section Accorder des autorisations de chiffrement/déchiffrement sur la page "Utiliser des clés de chiffrement gérées par le client".

Autorisation refusée pour la ressource

Lorsque vous essayez de créer un pipeline, celui-ci échoue avec l'erreur suivante :

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

Cette erreur se produit si le compte de service de nœud de calcul de votre projet n'a pas accès aux fichiers et aux autres ressources associées au pipeline.

Pour résoudre ce problème, attribuez les rôles suivants au compte de service du nœud de calcul :

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

Pour plus d'informations, consultez la section Compte de service de nœud de calcul dans "Sécurité et autorisations Dataflow".

Échec du workflow

Lorsque vous utilisez des clés de chiffrement gérées par le client et essayez de créer une tâche Dataflow, la tâche échoue avec l'erreur suivante :

Workflow failed

Ce problème peut survenir pour les raisons suivantes :

  • La clé et le job Dataflow ne se trouvent pas dans la même région, ou une clé multirégionale est utilisée. Les clés globales et multirégionales ne sont pas acceptées. La région de votre clé CMEK et la région de votre tâche Dataflow doivent être identiques.
  • Le nom de clé n'est pas spécifié correctement. Il est possible que la clé n'existe pas ou que le nom comporte une faute de frappe.

La clé Cloud KMS ne peut pas protéger les ressources pour ce job

Lorsque vous exécutez une tâche Dataflow et essayez d'activer une clé de chiffrement gérée par le client, la tâche échoue et une erreur semblable à celle-ci s'affiche :

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

Ce problème peut survenir pour les raisons suivantes :

  • La clé et le job Dataflow ne se trouvent pas dans la même région, ou une clé multirégionale est utilisée. Les clés globales et multirégionales ne sont pas acceptées. La région de votre clé CMEK et la région de votre tâche Dataflow doivent être identiques.
  • Le paramètre dataflowKMSKey n'est pas spécifié correctement.

L'autoscaling vertical ne fonctionne pas

Lorsque vous utilisez l'autoscaling vertical, le job n'évolue pas automatiquement verticalement et l'erreur suivante apparaît dans les journaux du job :

{"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"}

Cette erreur se produit lorsque le compte de service du nœud de calcul ne dispose pas du rôle Nœud de calcul Dataflow (roles/dataflow.worker).

Pour résoudre ce problème, accordez le rôle roles/dataflow.worker au compte de service de nœud de calcul. Pour en savoir plus, consultez la section Attribuer un rôle unique dans la documentation sur Identity and Access Management.

Si vous utilisez un rôle personnalisé pour le compte de service de nœud de calcul, ajoutez les autorisations suivantes au rôle personnalisé :

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