Jeder Eventarc-Trigger ist zum Zeitpunkt der Erstellung des Triggers mit einem IAM-Dienstkonto (Identity and Access Management) verknüpft. Der Trigger verwendet das Dienstkonto als Standardidentität.
Standardmäßig können Sie ein IAM-Dienstkonto nicht in einem Google Cloud-Projekt erstellen und es mit einer Ressource in einem anderen Projekt verknüpfen. Möglicherweise haben Sie die Dienstkonten für Ihre Organisation jedoch in separaten Projekten zentralisiert, was die Verwaltung der Dienstkonten vereinfachen kann. In diesem Dokument werden die Schritte beschrieben, die zum Anhängen eines Dienstkontos in einem Projekt an einen Eventarc-Trigger in einem anderen Projekt erforderlich sind.
Wenn Sie nicht die Berechtigungen zum Ausführen dieser Schritte haben, bitten Sie einen Administrator, sie auszuführen.
Projektübergreifende Dienstkontonutzung aktivieren
Führen Sie im Dienstkontoprojekt die folgenden Schritte aus.
Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.
Wenn die Richtlinie Projektübergreifende Dienstkontonutzung deaktivieren erzwungen wird, müssen Sie sie deaktivieren.
Weitere Informationen finden Sie unter Ermöglichen, dass Dienstkonten projektübergreifend angehängt werden können.
Erstellen Sie ein Dienstkonto und notieren Sie sich dessen Namen:
Berechtigungen für die Dienstkontoauthentifizierung erteilen
Hauptkonten können Dienstkonten für die Authentifizierung auf verschiedene Arten verwenden. Für jede Art der Authentifizierung muss das Hauptkonto bestimmte IAM-Berechtigungen für das Dienstkonto haben. Weitere Informationen finden Sie unter Rollen für die Dienstkontoauthentifizierung.
Weisen Sie dem Eventarc-Dienst-Agent des Google Cloud-Projekts, das den Trigger enthält, die IAM-Rolle Ersteller von Dienstkonto-Tokens (
roles/iam.serviceAccountTokenCreator
) zu. Dadurch kann der Dienst-Agent den projektübergreifenden Zugriff für das Dienstkonto verwalten. Ein Dienst-Agent ist die Identität eines bestimmten Google Cloud-Dienstes für ein bestimmtes Projekt. Weitere Informationen finden Sie unter Dienst-Agents.Console
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Wählen Sie das Projekt aus, dem das Dienstkonto gehört, das Sie an den Eventarc-Trigger anhängen möchten.
Klicken Sie auf die E-Mail-Adresse des zuvor erstellten Dienstkontos.
Klicken Sie auf den Tab Berechtigungen.
Klicken Sie im Abschnitt Hauptkonten mit Zugriff auf dieses Dienstkonto auf
Zugriff erlauben.Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Eventarc-Dienst-Agents ein:
service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
Ersetzen Sie
EVENTARC_PROJECT_NUMBER
durch die Google Cloud-Projektnummer des Projekts, das den Trigger enthält.Klicken Sie auf Weitere Rolle hinzufügen.
Filtern Sie in der Liste Rolle auswählen nach Ersteller von Dienstkonto-Tokens und wählen Sie dann die Rolle aus.
Klicken Sie auf Speichern.
gcloud
Führen Sie den
gcloud iam service-accounts add-iam-policy-binding
-Befehl aus:gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member='serviceAccount:service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Ersetzen Sie dabei Folgendes:
SERVICE_ACCOUNT_NAME
: Name Ihres Dienstkontos.SERVICE_ACCOUNT_PROJECT_ID
: Google Cloud-Projekt-ID des Projekts, zu dem das Dienstkonto gehörtEVENTARC_PROJECT_NUMBER
: die Google Cloud-Projektnummer des Projekts, das den Trigger enthält
Gewähren Sie die Dienstkontonutzer (
roles/iam.serviceAccountUser
IAM-Rolle für alle Hauptkonten, die Trigger erstellen, z. B. dem Eventarc-Dienst-Agent des Google Cloud-Projekts, das den Trigger enthält. Diese vordefinierte Rolle enthält die Berechtigungiam.serviceAccounts.actAs
, die zum Anhängen eines Dienstkontos an eine Ressource erforderlich ist.Console
Weisen Sie die Rolle für das Projekt zu, damit das Hauptkonto die Identität mehrerer Dienstkonten übernehmen kann:
Öffnen Sie in der Google Cloud Console die Seite IAM.
Wählen Sie das Projekt aus, zu dem das Dienstkonto gehört.
Klicken Sie auf
Zugriff gewähren.Geben Sie in das Feld Neue Hauptkonten die E-Mail-Adresse des Hauptkontos ein.
Filtern Sie in der Liste Rolle auswählen nach Dienstkontonutzer und wählen Sie dann die Rolle aus.
Klicken Sie auf Speichern.
Oder weisen Sie dem Dienstkonto die Rolle zu, damit das Hauptkonto nur die Identität eines bestimmten Dienstkontos übernehmen kann:
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Wählen Sie das Projekt aus, zu dem das Dienstkonto gehört.
Klicken Sie auf die E-Mail-Adresse des zuvor erstellten Dienstkontos.
Klicken Sie auf den Tab Berechtigungen.
Klicken Sie im Abschnitt Hauptkonten mit Zugriff auf dieses Dienstkonto auf
Zugriff erlauben.Geben Sie in das Feld Neue Hauptkonten die E-Mail-Adresse des Hauptkontos ein.
Klicken Sie auf Weitere Rolle hinzufügen.
Filtern Sie in der Liste Rolle auswählen nach Dienstkontonutzer und wählen Sie dann die Rolle aus.
Klicken Sie auf Speichern.
gcloud
Führen Sie den Befehl
gcloud projects add-iam-policy-binding
aus und weisen Sie dem Projekt die Rolle zu, damit das Hauptkonto die Identität mehrerer Dienstkonten übernehmen kann:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Oder führen Sie den Befehl
gcloud iam service-accounts add-iam-policy-binding
aus und weisen Sie dem Dienstkonto die Rolle zu, damit das Hauptkonto nur die Identität eines bestimmten Dienstkontos übernehmen kann:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Ersetzen Sie dabei Folgendes:
SERVICE_ACCOUNT_PROJECT_ID
: Google Cloud-Projekt-ID des Projekts, zu dem das Dienstkonto gehörtPRINCIPAL
: Kennung für den Triggerersteller im Formatuser|group|serviceAccount:email
oderdomain:domain
. Beispiel:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
m
SERVICE_ACCOUNT_RESOURCE_NAME
: der vollständige Ressourcenname des Dienstkontos. Beispiel:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
Dabei gilt:
SERVICE_ACCOUNT_PROJECT_ID
ist die Google Cloud-Projekt-ID, zu der das Dienstkonto gehört.SERVICE_ACCOUNT_NAME
ist der Name Ihres Dienstkontos.
Berechtigungen zur Unterstützung des Ereignisroutings erteilen
Bevor Sie einen Eventarc-Trigger erstellen, müssen Sie andere IAM-Berechtigungen erteilen, um Routingereignisse mit Eventarc zu unterstützen.
Erteilen Sie die entsprechenden Berechtigungen, basierend auf den Ressourcen, auf die der Eventarc-Trigger zugreifen muss, um seine Arbeit zu erledigen, sowie auf dem Ereignisanbieter und dem Ziel. Weitere Informationen finden Sie unter Rollen und -Berechtigungen.
Erstellen Sie den Trigger mit dem projektübergreifenden Dienstkonto.