Auf anstehende Änderungen bei der Autorisierung vorbereiten

In Application Integration wird die Autorisierung von Integrationen aktualisiert. Diese Änderungen werden bald wirksam. Die meisten Integrationen werden ohne Änderungen weiter ausgeführt, bei einigen ist jedoch eine Konfigurationsänderung erforderlich, damit sie weiter ausgeführt werden können. Alles, was auf dieser Seite beschrieben wird , verwendet eine Konfiguration, die Sie bereits steuern. Sie können diese Änderungen also jetzt vornehmen .

Anstehende Änderungen bei der Autorisierung

In Application Integration wird die Verarbeitung von Identitäten für Integrationsausführungen aktualisiert. Jede Ausführung muss jetzt eine explizite Identität haben, die als eine der folgenden fungiert:

  • Der Nutzer, der die Ausführung ausgelöst hat. Die aufgerufenen Systeme wenden die Zugriffsberechtigungen dieses Nutzers an.
  • Ein Dienstkonto für die Ausführung. Sie steuern, begrenzen und prüfen dieses Konto wie jedes andere Dienstkonto in Ihrem Google Cloud-Projekt.

Aufgrund dieser Aktualisierung gilt Folgendes:

  • Um eine Integration auszuführen, benötigen Sie die Berechtigung, als Dienstkonto für die Ausführung zu fungieren.
  • Wenn keine der beiden Identitäten verfügbar ist, schlägt die Integrationsausführung fehl.

Hinweis

Führen Sie die folgenden Aufgaben in der angegebenen Reihenfolge aus. Beginnen Sie mit der ersten Aufgabe, da die anderen beiden mit einer Veröffentlichung enden und die Veröffentlichung selbst berechtigungsgeprüft ist.

  1. Weisen Sie die Rolle „Dienstkontonutzer“ für jedes Dienstkonto für die Ausführung, das Sie bereits verwenden, allen zu, die die Integration ausführen, genehmigen, bearbeiten oder veröffentlichen – einschließlich der Dienstkonten, die von Ihrer Automatisierung verwendet werden.
  2. Legen Sie ein Dienstkonto für die Ausführung fest für Integrationen, die ohne Person ausgeführt werden und kein Dienstkonto für die Ausführung haben.
  3. Weisen Sie die Rolle „Dienstkontonutzer“ für das Dienstkonto zu, das in jedem Authentifizierungs- profil vom Typ Dienstkonto oder OIDC-Token angegeben ist. Diese Konten unterscheiden sich in der Regel von Ihrem Dienstkonto für die Ausführung.

Integrationen, für die ein Dienstkonto für die Ausführung erforderlich ist

Feststellen, ob eine Integration ein Dienstkonto für die Ausführung benötigt

Sie benötigen nur ein Dienstkonto für die Ausführung, wenn für die gesamte Ausführung keine Anmeldedaten einer Person verfügbar sind. Das ist nur in zwei Situationen der Fall:

So wird die Integration ausgeführt Sind die Anmeldedaten einer Person verfügbar? Ist ein Dienstkonto für die Ausführung erforderlich?
Synchron – eine Person startet sie und wartet auf das Ergebnis Ja, für die gesamte Ausführung Nein
Asynchron – sie wird in die Warteschlange gestellt und später abgeschlossen Nur zum Zeitpunkt der Auslösung Ja
Unbeaufsichtigt – sie wird durch einen Zeitplan oder ein Ereignis gestartet Nein, es ist nie eine Person beteiligt Ja

Betroffene Integrationen identifizieren

Wird sie jemals ohne Person ausgeführt? Das ist der Fall, wenn eine der folgenden Bedingungen erfüllt ist:

Ist das Dienstkonto für die Ausführung leer? Führen Sie den folgenden Befehl aus, um alle veröffentlichten Versionen in einer Region zusammen mit dem Dienstkonto für die Ausführung aufzulisten:

curl -s -G -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  --data-urlencode "filter=state=ACTIVE" \
  --data-urlencode "pageSize=1000" \
  "https://REGION-integrations.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/integrations/-/versions" \
| jq -r '.integrationVersions[]
         | [ .name, (.runAsServiceAccount // "NONE") ]
         | @tsv'

Ersetzen Sie Folgendes:

  • REGION: die Region Ihrer Integration. Eine Liste der unterstützten Regionen finden Sie unter Standorte.
  • PROJECT_ID: die ID Ihres Google Cloud-Projekts
  • Eine Zeile mit NONE erfordert nur dann Maßnahmen, wenn auch die erste Hälfte zutrifft.
  • Wenn Sie stattdessen eine einzelne Integration prüfen möchten, öffnen Sie sie in der Google Cloud Console und sehen Sie sich den Bereich Integrationsübersicht in der Symbolleiste für Integrationen an.

Integrationen aktualisieren

Rolle „Dienstkontonutzer“ gewähren

Führen Sie den folgenden Befehl aus, um die Rolle einer Person zuzuweisen:

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
    --project=SERVICE_ACCOUNT_PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='roles/iam.serviceAccountUser'

Ersetzen Sie Folgendes:

  • SERVICE_ACCOUNT: die E-Mail-Adresse des Dienstkontos für die Ausführung oder des Kontos, das in einem Authentifizierungsprofil angegeben ist
  • SERVICE_ACCOUNT_PROJECT_ID: die ID des Projekts, das Inhaber des Dienstkontos ist
  • PRINCIPAL: die E-Mail-Adresse des Nutzers

Verwenden Sie für andere Prinzipaltypen das entsprechende Präfix --member:

  • Gruppen:Verwenden Sie group:. Wir empfehlen, Google-Gruppen anstelle einzelner Nutzerkonten zu verwenden, um die Zugriffsverwaltung zu vereinfachen, wenn sich Teammitglieder ändern.
  • Dienstkonten:Verwenden Sie serviceAccount: für automatisierte Prozesse und Anwendungen.

So führen Sie dieselbe Aufgabe in der Google Cloud Console aus:

  1. Rufen Sie IAM und Verwaltung > Dienstkonten auf.
  2. Wählen Sie das Dienstkonto aus.
  3. Klicken Sie auf Berechtigungen > Zugriff gewähren.

Weitere Informationen finden Sie unter Zugriff auf Dienstkonten verwalten.

Dienstkonto für die Ausführung festlegen

  1. Wählen Sie das Dienstkonto aus oder erstellen Sie es und weisen Sie ihm die Rollen zu, die für die Aufgaben der Integration's für die Ressourcen erforderlich sind, auf die sie zugreifen. Um herauszufinden, was Sie zuweisen müssen, sehen Sie sich die Rollen an, die der Application Integration-Dienst-Agent Ihres Projekts, service-PROJECT_NUMBER@gcp-sa-integrations., derzeit hat und weisen Sie dem neuen Konto nur den Teil zu, der von dieser Integration verwendet wird.
  2. Weisen Sie die Rolle „Dienstkontonutzer“ allen zu, die die Integration ausführen, genehmigen, bearbeiten oder veröffentlichen, einschließlich der Automatisierung.
  3. Öffnen Sie die Integration und legen Sie das Dienstkonto im Integrationsübersicht Bereich in der Symbolleiste für Integrationen fest.
  4. Veröffentlichen Sie die Integration. Weitere Informationen finden Sie unter Integrationen testen und veröffentlichen.

Google Cloud empfiehlt, für jede Integration ein eigenes Dienstkonto mit minimalem Umfang zu verwenden, anstatt ein Konto mit umfassenden Berechtigungen, das für alle Integrationen gemeinsam genutzt wird, Das hat folgende Vorteile:

  • Die Auswirkungen einer einzelnen Integration sind begrenzt.
  • Es wird in Ihren Audit-Logs mit Namen angezeigt.

Weitere Informationen finden Sie unter Best Practices für die Arbeit mit Dienstkonten.

Fehlerbehebung bei fehlenden Berechtigungen

Eine abgelehnte Aktion hat eine von zwei Ursachen, die sich unterscheiden:

  • Das Dienstkonto für die Ausführung : Entweder können Sie nicht als dieses Konto fungieren oder es kann nicht auf das zugreifen was für eine Aufgabe erforderlich ist.
  • Ihre eigene IAM-Rolle : Sie sind nicht berechtigt, die Aktion auszuführen.

Beide Prüfungen gelten. Wenn Sie also eine beheben, wird die andere nicht behoben.

Fehler bei Dienstkonten für die Ausführung

Situation Folgendes wird angezeigt: Was muss ich tun?
Eine Person löst eine Integration aus, kann aber nicht als Dienstkonto für die Ausführung fungieren Der Trigger wird mit PERMISSION_DENIED abgelehnt. Die Prüfung wird ausgeführt bevor die Ausführung in die Warteschlange gestellt wird. Daher wird nichts in Ihren Ausführungslogs angezeigt. Es sieht so aus, als wäre nichts passiert, anstatt dass eine Aufgabe fehlgeschlagen ist. Weisen Sie der Person, die den Trigger ausgelöst hat, die Rolle „Dienstkontonutzer“ zu.
Eine Ausführung ohne Nutzeranmeldedaten hat kein Dienstkonto für die Ausführung Aufgaben für Connectors, „REST-Endpunkt aufrufen“ und Cloud Run Functions schlagen für alles fehl, was sie erreichen möchten. Bei der Veröffentlichung: The integration is missing run-as service account since governance is enabled for your project. Legen Sie ein Dienstkonto für die Ausführung fest.
Eine Aufgabe verwendet ein Authentifizierungsprofil, dessen Dienstkonto der Aufrufer nicht verwenden kann Diese Aufgabe wird abgelehnt, während die restliche Ausführung fortgesetzt wird: You do not have permission to use Auth Config ID because you cannot act as its service account: SERVICE_ACCOUNT. Weisen Sie die Rolle „Dienstkontonutzer“ für das Konto zu, das in dem Profil angegeben ist.
Ein Genehmiger kann nicht als Dienstkonto für die Ausführung fungieren Der Genehmigungsprozess schlägt im Hintergrund fehl, ohne dass ein sichtbarer Fehler generiert wird. Die Ausführung bleibt pausiert, bis sie abläuft. Sie bemerken also, dass Genehmigungen nicht mehr funktionieren. Weisen Sie allen, die genehmigen könnten , die Rolle „Dienstkontonutzer“ zu.
Eine Person bearbeitet oder veröffentlicht eine Integration ohne die Berechtigung Publisher does not have required permission to publish integration with service account: SERVICE_ACCOUNT. Alles, was bereits veröffentlicht wurde wird weiter ausgeführt. Wenn die Veröffentlichung über eine Automatisierung erfolgt, wird dies in Ihrer Bereitstellungspipeline und nicht in der Console angezeigt. Weisen Sie die Rolle „Dienstkontonutzer“ Bearbeitern, Veröffentlichern, und der Automatisierung zu.
Eine Aufgabe wird als die Person ausgeführt, die sie ausgelöst hat, und diese Person kann nicht auf die Ressource zugreifen Die Ausführung wird normal gestartet, dann schlägt eine Aufgabe fehl und gibt eine Ressource an, obwohl sich nichts an der Integration geändert hat. Gewähren Sie diesen Personen Zugriff auf die Ressource oder verschieben Sie die Integration zu einem Dienstkonto für die Ausführung das bereits Zugriff hat. Das ist in der Regel die bessere Lösung, da der Zugriff der Integration dann nicht davon abhängt, wer sie ausführt.

Die vollständige Liste der Application Integration-Fehlercodes finden Sie unter Fehlercodes.

Fehler bei IAM-Rollen

Zusätzlich zum Dienstkonto für die Ausführung prüft Application Integration für jede Aktion Ihre Nutzer IAM-Berechtigungen. Wenn beim Interagieren mit einer Integration der Fehler PERMISSION_DENIED auftritt oder Ausführungslogs nicht geladen werden können, prüfen Sie, ob Sie eine Rolle haben, die die erforderlichen Berechtigungen gewährt:

So gehts Sie benötigen eine dieser Rollen
Integrationen ansehen und öffnen roles/integrations.integrationViewer
Ausführungslogs und -details ansehen roles/integrations.integrationViewer oder roles/integrations.integrationInvoker
Integration ausführen roles/integrations.integrationInvoker oder roles/integrations.integrationEditor
Integrationen erstellen und bearbeiten roles/integrations.integrationEditor
Integration veröffentlichen roles/integrations.integrationDeployer oder roles/integrations.integrationEditor
Ausgesetzte Ausführung genehmigen oder fortsetzen roles/integrations.suspensionResolver oder roles/integrations.integrationAdmin
Vollständiger Zugriff auf alle Integrationen roles/integrations.integrationAdmin

Führen Sie den folgenden Befehl aus, um eine Rolle zuzuweisen:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='ROLE'

Hier finden Sie weitere Informationen:

Häufige Fragen

Ich habe die Rolle zugewiesen und es schlägt immer noch fehl. Was fehlt mir?

  • Die Zuweisung erfolgte für das falsche Projekt. Sie muss in dem Projekt erfolgen, das Inhaber des Dienstkontos ist. Das ist nicht unbedingt das Projekt, das Inhaber der Integration ist.
  • Sie ist noch nicht wirksam geworden. Warten Sie einige Minuten. Autorisierungsentscheidungen werden zusätzlich zur normalen IAM-Verzögerung kurz im Cache gespeichert.
  • Es ist ein zweites Dienstkonto beteiligt. Ihr Dienstkonto für die Ausführung und jedes Authentifizierungsprofils Dienstkonto sind getrennt, und beide benötigen die Zuweisung.
  • Die Blockierung liegt an Ihrer eigenen Rolle, nicht am Dienstkonto. Die Rolle „Dienstkontonutzer“ bestimmt, ob Sie als Dienstkonto für die Ausführung fungieren dürfen. Eine separate IAM-Rolle bestimmt, ob Sie die Aktion ausführen dürfen. Weitere Informationen finden Sie unter Fehler bei IAM-Rollen.

Warum reicht die Rolle „Integration Invoker“ nicht mehr aus?

Sie können die Integration weiterhin ausführen. Sie hat Ihnen jedoch nie erlaubt, als das Dienstkonto zu fungieren, mit dem die Integration ausgeführt wird. Das bestimmt, wie viel Zugriff die Ausführung erhält. Keine der folgenden Rollen gewährt iam.serviceAccounts.actAs. Daher ist immer eine separate Zuweisung erforderlich:

  • roles/integrations.integrationAdmin
  • roles/integrations.integrationEditor
  • roles/integrations.integrationInvoker

Meine Integration wird nur synchron ausgeführt. Benötige ich ein Dienstkonto für die Ausführung?

Nein. Eine synchrone Ausführung hat bereits eine Identität: die Person, die sie ausgelöst hat. Weitere Informationen finden Sie unter Feststellen, ob eine Integration ein Dienstkonto für die Ausführung benötigt.

In der Console wird nichts markiert. Bin ich auf der sicheren Seite?

Nicht unbedingt. Warnungen hängen teilweise von beobachteten Ausführungen ab. Bei einer Integration mit einem seltenen Zeitplan oder einer Integration, die in letzter Zeit nicht ausgelöst wurde, sind möglicherweise Maßnahmen erforderlich, ohne dass jemals eine Warnung angezeigt wird. Gehen Sie die Informationen unter Integrationen, für die ein Dienstkonto für die Ausführung erforderlich ist durch, anstatt eine Console ohne Warnungen als Entwarnung zu betrachten.

Nächste Schritte