Probleme mit Dataflow-Berechtigungen beheben

Auf dieser Seite erfahren Sie, wie Sie Probleme mit Dataflow-Berechtigungen untersuchen und beheben.

Damit Sie Dataflow-Jobs erfolgreich ausführen können, müssen Ihr Nutzerkonto und die Dataflow-Dienstkonten den erforderlichen Zugriff auf Ressourcen haben. Eine Liste der erforderlichen Rollen und Schritte zum Zuweisen dieser Rollen finden Sie auf der Dataflow-Seite „Sicherheit und Berechtigungen“ unter Sicherheit und Berechtigungen für Pipelines in Google Cloud.

Wenn Ihre Apache Beam-Pipelines auf Google Cloud-Ressourcen zugreifen, benötigt das Dataflow-Projekt-Worker-Dienstkonto außerdem Zugriff auf die Ressourcen. Eine Liste der Rollen, die Ihr Worker-Dienstkonto möglicherweise benötigt, finden Sie unter Beispiel für die Rollenzuweisung.

Wenn eine oder mehrere Rollen, die zum Ausführen eines Jobs erforderlich sind, fehlen, kann ein Fehler in den Joblogs oder in den Worker-Logs angezeigt werden. Eine Anleitung zum Auffinden von Fehlern nach dem Fehlschlagen eines Job finden Sie unter Informationen zu Pipelinefehlern finden.

Um Berechtigungsprobleme zu beheben, müssen Sie wissen, welche Berechtigung fehlt und welches Konto diese Berechtigung benötigt. Um zu ermitteln, welche Berechtigung fehlt, sehen Sie sich die in der Fehlermeldung aufgeführte Berechtigung an und suchen die Rolle, die diese Berechtigung enthält. Häufig, aber nicht immer, müssen Sie dem Dataflow-Worker-Dienstkonto die entsprechende Rolle zuweisen.

Damit Sie Berechtigungen hinzufügen können, muss Ihr Nutzerkonto den Zugriff verwalten. Weitere Informationen finden Sie unter Zugriff auf Dienstkonten verwalten und Zugriff auf andere Ressourcen verwalten.

Der Nutzer hat keinen Schreibzugriff auf das Projekt

Wenn Sie einen Dataflow-Job ausführen, schlägt der Job fehl und Sie erhalten einen Fehler wie den folgenden:

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'

Dieser Fehler tritt auf, wenn Ihr Nutzerkonto nicht die Rolle roles/dataflow.developer hat.

Zum Beheben dieses Problems weisen Sie Ihrem Nutzerkonto die Rolle roles/dataflow.developer zu. Achten Sie außerdem darauf, dass Ihr Nutzerkonto die roles/iam.serviceAccountUser-Rolle hat. Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.

Der Nutzer verfügt nicht über ausreichende Berechtigungen für das Projekt

Wenn Sie versuchen, einen Dataflow-Job abzubrechen, wird ein Fehler wie der folgende angezeigt:

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

Ähnliche Fehler können auftreten, wenn Sie versuchen, einen Job schnell zu entladen oder zu aktualisieren.

Dieser Fehler tritt aus einem der folgenden Gründe auf:

  • Ihr Nutzerkonto hat die roles/dataflow.developer-Rolle nicht. Zum Beheben dieses Problems weisen Sie Ihrem Nutzerkonto die Rolle roles/dataflow.developer zu. Achten Sie außerdem darauf, dass Ihr Nutzerkonto die roles/iam.serviceAccountUser-Rolle hat. Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.
  • Die Job-ID ist falsch. Sie könnte einen Tippfehler enthalten, oder Sie verwenden die Job-ID anstelle des Jobnamens, um den Job abzubrechen.

Berechtigungsüberprüfung für Worker-Dienstkonto fehlgeschlagen

Wenn Sie versuchen, einen Dataflow-Job auszuführen, wird ein Fehler wie der folgende angezeigt:

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.

Dieser Fehler tritt auf, wenn das Worker-Dienstkonto nicht die Rolle roles/dataflow.worker hat.

Zum Beheben dieses Problems weisen Sie dem Worker-Dienstkonto die Rolle roles/dataflow.worker zu. Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.

Pipelinevalidierung fehlgeschlagen

Bevor ein neuer Dataflow-Job gestartet wird, führt Dataflow Validierungsprüfungen für die Pipeline durch. Wenn bei der Validierung Probleme mit der Pipeline gefunden werden, schlägt Dataflow das Senden des Jobs frühzeitig fehl, um Zeit und Rechenressourcen zu sparen. In den Joblogs enthält Dataflow Lognachrichten mit den Validierungsergebnissen und Anleitungen zur Behebung der Probleme.

Wenn die Pipelinevalidierungsprüfung Berechtigungsprobleme erkennt, wird möglicherweise der folgende Fehler in den Joblogs angezeigt:

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

Wenn für mehr als eine Ressource Berechtigungen fehlen, enthalten die Joblogs mehrere Fehlermeldungen.

Bevor Sie Ihren Dataflow-Job noch einmal senden, beheben Sie die Berechtigungsprobleme. Die folgenden Ressourcen bieten Informationen zum Ändern von Rollen und Berechtigungen.

Wenn Sie die Pipelinevalidierung überschreiben und den Job mit Validierungsfehlern starten möchten, verwenden Sie die folgende Pipelineoption:

--experiment=enable_ppv_effect=false

Beim Aktualisieren Ihrer Anmeldedaten ist ein Problem aufgetreten

Wenn Sie versuchen, einen Dataflow-Job auszuführen, wird ein Fehler wie der folgende angezeigt:

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

Dieser Fehler tritt auf, wenn das Worker-Dienstkonto nicht die Rolle roles/dataflow.worker hat oder die Dataflow API nicht aktiviert ist.

Prüfen Sie zuerst, ob das Worker-Dienstkonto die Rolle roles/dataflow.worker hat. Weisen Sie dem Worker-Dienstkonto bei Bedarf roles/dataflow.worker zu. Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.

Informationen zum Aktivieren der Dataflow API finden Sie unter API im Google Cloud-Projekt aktivieren.

Berechtigung „compute.subnetworks.get“ erforderlich

Wenn Sie einen Dataflow-Job in einem freigegebenen VPC-Netzwerk ausführen, wird ein Fehler wie der folgende angezeigt:

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

Über eine freigegebene VPC können Sie in einem Hostprojekt Subnetze von einem VPC-Netzwerk in andere Dienstprojekte innerhalb derselben Organisation exportieren. Instanzen in den Dienstprojekten können Netzwerkverbindungen in den freigegebenen Subnetzen des Hostprojekts haben. Weitere Informationen finden Sie unter Freigegebene VPC – Übersicht.

Um dieses Problem zu beheben, prüfen Sie zuerst, ob das Dienstprojekt an das Hostprojekt angehängt ist. Weitere Informationen finden Sie unter Dienstprojekte anhängen auf der Seite „Freigegebene VPC bereitstellen“.

Als Nächstes erteilen Sie dem Compute Engine-Dienstkonto des Hostprojekts, dem Dataflow-Worker-Dienstkonto des Dienstprojekts und dem Dienstkonto, mit dem Sie den Job senden, die folgenden Rollen:

Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.

Dataflow-Runner hat keinen Zugriff auf den Bucket

Wenn Sie versuchen, Objekte in einem Cloud Storage-Bucket aufzulisten, schlägt der Dataflow-Job fehl und Sie erhalten einen Fehler wie den folgenden:

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

Dieser Fehler tritt auf, wenn das Worker-Dienstkonto die roles/storage.objectViewer-Rolle nicht hat.

Zum Beheben dieses Problems weisen Sie Ihrem Nutzerkonto die roles/storage.objectViewer-Rolle zu. Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.

Cloud KMS-Schlüsselberechtigung für Ressource verweigert

Wenn Sie vom Kunden verwaltete Verschlüsselungsschlüssel nutzen und versuchen, einen Dataflow-Job zu erstellen, schlägt der Job fehl und Sie erhalten einen Fehler wie den folgenden:

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.

Dieser Fehler tritt auf, wenn das Worker- und das Dataflow-Dienstkonto nicht die roles/cloudkms.cryptoKeyEncrypterDecrypter-Rolle haben.

Zum Beheben dieses Problems weisen Sie dem Worker- und dem Dataflow-Dienstkonto die roles/cloudkms.cryptoKeyEncrypterDecrypter-Rolle zu. Weitere Informationen finden Sie unter Verschlüsseler/Entschlüsseler-Berechtigungen erteilen auf der Seite „Vom Kunden verwaltete Verschlüsselungsschlüssel verwenden“.

Berechtigung für Ressource verweigert

Wenn Sie versuchen, eine Pipeline zu erstellen, schlägt die Pipeline mit dem folgenden Fehler fehl:

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

Dieser Fehler tritt auf, wenn das Worker-Dienstkonto Ihres Projekts keinen Zugriff auf die Dateien und andere Ressourcen hat, die der Pipeline zugeordnet sind.

Um dieses Problem zu beheben, weisen Sie dem Worker-Dienstkonto die folgenden Rollen zu:

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

Weitere Informationen finden Sie unter Worker-Dienstkonto in „Sicherheit und Berechtigungen in Dataflow“.

Workflow fehlgeschlagen

Wenn Sie vom Kunden verwaltete Verschlüsselungsschlüssel nutzen und versuchen, einen Dataflow-Job zu erstellen, schlägt der Job mit folgendem Fehler fehl:

Workflow failed

Dieser Fehler kann folgende Ursachen haben:

  • Der Schlüssel und der Dataflow-Job befinden sich nicht in derselben Region oder es wird ein multiregionaler Schlüssel verwendet. Globale und multiregionale Schlüssel werden nicht unterstützt. Die Region für Ihren CMEK und die Region für Ihren Dataflow-Job müssen identisch sein.
  • Der Schlüsselname wurde nicht korrekt angegeben. Der Schlüssel ist möglicherweise nicht vorhanden oder der Name hat einen Tippfehler.

Der Cloud KMS-Schlüssel kann die Ressourcen für diesen Job nicht schützen

Wenn Sie einen Dataflow-Job ausführen und versuchen, einen vom Kunden verwalteten Verschlüsselungsschlüssel zu aktivieren, schlägt der Job fehl und Sie erhalten einen Fehler wie den folgenden:

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

Dieser Fehler kann folgende Ursachen haben:

  • Der Schlüssel und der Dataflow-Job befinden sich nicht in derselben Region oder es wird ein multiregionaler Schlüssel verwendet. Globale und multiregionale Schlüssel werden nicht unterstützt. Die Region für Ihren CMEK und die Region für Ihren Dataflow-Job müssen identisch sein.
  • Der dataflowKMSKey-Parameter wurde nicht korrekt angegeben.

Vertikales Autoscaling funktioniert nicht

Wenn Sie vertikales Autoscaling verwenden, wird der Job nicht automatisch vertikal skaliert und der folgende Fehler wird in den Joblogs angezeigt:

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

Dieser Fehler tritt auf, wenn das Worker-Dienstkonto nicht die Rolle "Dataflow-Worker" (roles/dataflow.worker) hat.

Zum Beheben dieses Problems weisen Sie dem Worker-Dienstkonto die Rolle roles/dataflow.worker zu. Weitere Informationen finden Sie in der Dokumentation zu Identity and Access Management unter Einzelne Rolle zuweisen.

Wenn Sie eine benutzerdefinierte Rolle für das Worker-Dienstkonto verwenden, fügen Sie der benutzerdefinierten Rolle die folgenden Berechtigungen hinzu:

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