Rollen und Berechtigungen für Workflow-Ziele

In diesem Dokument erfahren Sie, wie Sie IAM-Rollen (Identity and Access Management) und -Berechtigungen erteilen, um Routingereignisse von Google Cloud und anderen Quellen zu Ziel Run-Diensten mit Eventarc zu unterstützen:

  1. Weisen Sie projektweite Berechtigungen dem Hauptkonto zu, das die Eventarc APIs aufruft, z. B. dem Ersteller des Eventarc-Triggers:

    1. Mit der Rolle Eventarc-Administrator haben Sie die vollständige Kontrolle über alle Eventarc-Ressourcen, einschließlich der Angabe eines Dienstkontos für den Trigger beim Erstellen.
    2. Mit der Rolle Dienstkontonutzer kann ein Hauptkonto die Identität eines Dienstkontos übernehmen und verwenden. Das Dienstkonto ist einem Eventarc-Trigger zugeordnet und stellt die Identität des Triggers dar.
  2. Gewähren Sie dem Trigger-Dienstkonto Berechtigungen für Eventarc-Trigger:

    1. Mit der Rolle Eventarc-Ereignisempfänger kann Ihr Eventarc-Trigger Ereignisse von Ereignisanbietern empfangen. Sie müssen die Rolle nicht zuweisen, wenn Sie direkte Ereignisse aus Cloud Pub/Sub weiterleiten.
    2. Mit der Rolle Workflow-Aufrufer kann Ihr Eventarc-Trigger eine Workflowausführung initiieren.
  3. Gewähren Sie Berechtigungen für Google-Dienst-Agents:

    1. Wenn Sie einen Trigger für direkte Ereignisse aus Cloud Storage erstellen, weisen Sie die Rolle Pub/Sub-Publisher zu.
    2. Wenn Sie den Cloud Pub/Sub-Dienst-Agent am oder vor dem 8. April 2021 aktiviert haben, weisen Sie die Rolle Ersteller von Dienstkonto-Tokens zu.

Weitere Informationen zum Zuweisen von IAM-Rollen finden Sie unter Zugriff verwalten. Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Projektweite Berechtigungen gewähren

Wenn Sie der Projektersteller sind, wird Ihnen die einfache "Inhaber" Rolle (roles/owner) zugewiesen. Standardmäßig enthält diese Rolle die Berechtigungen, die für den vollständigen Zugriff auf die meisten Google Cloud-Ressourcen erforderlich sind. Andernfalls müssen die erforderlichen Rollen von einem Administrator für die entsprechende Ressource dem entsprechenden Hauptkonto (auch als Mitglied bezeichnet) gewährt werden.

Ein Hauptkonto kann beispielsweise ein Google-Konto (für Endnutzer) oder ein Dienstkonto (für Anwendungen und Computing-Arbeitslasten) sein. Jedes Hauptkonto hat eine eigene Kennung, die normalerweise eine E-Mail-Adresse ist.

  1. Mit der Eventarc-Administratorrolle (roles/eventarc.admin) können Sie alle Eventarc-Ressourcen vollständig steuern.

    Weisen Sie dem Projekt die Rolle zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/eventarc.admin

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist Ihre Google Cloud-Projekt-ID.
    • PRINCIPAL: Die Kennung des Triggererstellers, die normalerweise das folgende Format hat: PRINCIPAL_TYPE:ID. Beispiel: user:my-user@example.com. Eine vollständige Liste der möglichen PRINCIPAL_TYPE-Werte finden Sie in der Referenz zur Richtlinienbindung.
  2. Mit der Rolle "Dienstkontonutzer" (roles/iam.serviceAccountUser) kann ein Hauptkonto Vorgänge als Dienstkonto ausführen.

    Beim Erstellen eines Eventarc-Triggers oder beim Bereitstellen eines Workflows benötigen Sie diese Rolle, damit Sie ein nutzerverwaltetes Dienstkonto mit dem Trigger oder Workflow verknüpfen können, das seine Identität darstellt. Weitere Informationen finden Sie unter Rollen für die Dienstkontoauthentifizierung.

    Sie können entweder die Rolle für das Projekt zuweisen, damit das Hauptkonto die Identität mehrerer Dienstkonten übernehmen kann, oder Sie gewähren die Rolle für das Dienstkonto, damit das Hauptkonto nur die Identität eines bestimmten Dienstkontos übernehmen kann.

    Weisen Sie dem Projekt die Rolle zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Oder weisen Sie dem Dienstkonto die Rolle zu:

    gcloud iam service-accounts add-iam-policy-binding \
        projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_PROJECT_ID: die Google Cloud-Projekt-ID, die das Dienstkonto enthält.
    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos.

Eventarc-Trigger-Berechtigungen erteilen

Jeder Eventarc-Trigger ist zum Zeitpunkt der Erstellung des Triggers mit einem IAM-Dienstkonto verknüpft. Sie können ein vom Nutzer verwaltetes Dienstkonto angeben, das der Trigger als Standardidentität verwendet. Wenn Sie beim Erstellen des Triggers kein Dienstkonto angeben, verwendet der Trigger das Compute Engine-Standarddienstkonto für seine Identität.

Wir empfehlen Ihnen, ein eigenes nutzerverwaltetes Dienstkonto zu erstellen, um mehr Kontrolle und Flexibilität bei der Verwaltung des Triggers zu erhalten.

  1. Erstellen Sie ein Dienstkonto und notieren Sie sich seinen Namen:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos. Dieser Name wird in der E-Mail-Adresse angezeigt, die das Dienstkonto identifiziert.
    • DESCRIPTION: eine optionale Beschreibung des Dienstes
    • DISPLAY_NAME: ein Dienstkontoname, der in der Google Cloud Console angezeigt werden soll
  2. Weisen Sie dem Dienstkonto, das Ihrem Eventarc-Trigger zugeordnet ist, die Rolle "Eventarc-Ereignisempfänger" (roles/eventarc.eventReceiver) für das Projekt zu, damit es Ereignisse vom Ereignisanbieter empfangen kann.

    Beachten Sie, dass Sie die Rolle "Eventarc-Ereignisempfänger" nicht zuweisen müssen, wenn Sie direkte Ereignisse aus Cloud Pub/Sub weiterleiten.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/eventarc.eventReceiver
    

    Ersetzen Sie SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos, den Sie im vorherigen Schritt notiert haben.

  3. Weisen Sie dem mit Ihrem Eventarc-Trigger verknüpften Dienstkonto die Rolle „Workflow-Aufrufer“ (roles/workflows.invoker) für das Projekt zu, damit es die Workflowausführung initiieren kann. eine

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/workflows.invoker
    

    Ersetzen Sie SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos, den Sie zuvor notiert haben.

Berechtigungen für Google-Dienst-Agents erteilen

Einige Google Cloud-Dienste haben von Google verwaltete Dienstkonten, mit denen die Dienste auf Ihre Ressourcen zugreifen können. Diese Dienstkonten werden als Dienst-Agents bezeichnet. Wenn eine API einen Dienst-Agent erfordert, erstellt Google den Dienst-Agent, nachdem Sie die API aktiviert und verwendet haben.

  1. Wenn Sie einen Trigger für direkte Ereignisse aus Cloud Storage erstellen, um die Veröffentlichung von Nachrichten zu einem Thema zu unterstützen, gewähren Sie dem Cloud Storage-Dienst-Agent die Pub/Sub-Publisher-Rolle (roles/pubsub.publisher) für das Projekt:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

    Ersetzen Sie PROJECT_NUMBER durch Ihre Google Cloud-Projektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console oder durch Ausführen des folgenden Befehls:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Wenn Sie den Cloud Pub/Sub-Dienst-Agent am oder vor dem 8. April 2021 aktiviert haben, damit authentifizierte Pub/Sub-Push-Anfragen unterstützt werden, müssen Sie dem Pub/Sub-Dienst-Agent die Rolle "Dienstkonto-Tokenersteller" (roles/iam.serviceAccountTokenCreator) für das Projekt zuweisen. Andernfalls wird diese Rolle standardmäßig zugewiesen:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator

Nächste Schritte