Eventarc-Rollen und -Berechtigungen

In diesem Dokument wird beschrieben, wie Sie IAM-Rollen (Identity and Access Management), Berechtigungen und Flags festlegen, um Eventarc-Ereignisse von Google Cloud und Drittanbieterquellen zu empfangen und die Ereignisse an authentifizierte oder nicht authentifizierte Cloud Run-Zieldienste zu senden.

Dieses Dokument enthält Anleitungen für folgende Aufgaben:

  • Dem Nutzer bestimmte IAM-Rollen zuweisen.
  • Dem Dienstkonto des Triggers bestimmte Rollen und Berechtigungen zuweisen. Eventarc verwendet ein vom Kunden bereitgestelltes Dienstkonto als Identität des Triggers.
  • Wenn Sie das Pub/Sub-Dienstkonto am oder vor dem 8. April 2021 aktiviert haben, weisen Sie dem Pub/Sub-Dienstkonto die Rolle iam.serviceAccountTokenCreator zu.
  • Wenn Sie das gcloud-Befehlszeilentool verwenden möchten, legen Sie das Cloud Run-Flag entsprechend fest, wenn Sie Container-Images oder Überarbeitungen aus einem Quell-Repository in Cloud Run bereitstellen.

Weitere Informationen zu den Optionen für die Zugriffssteuerung in Eventarc finden Sie unter Zugriffssteuerung.

Eventarc-Triggertypen und -Rollen

Eventarc unterstützt die folgenden Triggertypen:

  • Cloud-Audit-Logging-Trigger: Zum Empfangen von Ereignissen aus Google Cloud-Quellen verwendet Eventarc Cloud-Audit-Logs.
  • Cloud Pub/Sub-Trigger: Zum Empfangen von Ereignissen aus Drittanbieterquellen verwendet Eventarc Pub/Sub-Benachrichtigungen.
Cloud-Audit-Logs Pub/Sub
Authentifizierte Aufrufe von Cloud Run Nutzer:
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
Nutzer:
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
Trigger-Dienstkonto:
  • roles/run.invoker
  • roles/eventarc.eventReceiver
Trigger-Dienstkonto:
  • roles/run.invoker
Pub/Sub-Dienstkonto:
  • roles/iam.serviceAccountTokenCreator
Pub/Sub-Dienstkonto:
  • roles/iam.serviceAccountTokenCreator
Cloud Run-Flag:
  • Nicht zutreffend
Cloud Run-Flag:
Cloud-Audit-Logs Pub/Sub
Nicht authentifizierte Aufrufe von Cloud Run Nutzer:
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
Nutzer:
  • roles/eventarc.admin
Trigger-Dienstkonto:
  • roles/eventarc.eventReceiver
Trigger-Dienstkonto:
Pub/Sub-Dienstkonto:
  • roles/iam.serviceAccountTokenCreator
Pub/Sub-Dienstkonto:
  • roles/iam.serviceAccountTokenCreator
Cloud Run-Flag:
  • --allow-unauthenticated
Cloud Run-Flag:
  • --allow-unauthenticated

Authentifizierte Aufrufe von Cloud Run

Cloud-Audit-Logs

So sorgen Sie dafür, dass Sie Ereignisse aus Google Cloud-Quellen erhalten, während Sie sie an ein authentifiziertes Cloud Run-Ziel senden:

Nutzerrollen

eventarc.admin

Weisen Sie dem Nutzer die folgende IAM-Rolle zu:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

Ersetzen Sie die folgenden Werte:

  • PROJECT_ID: die Google Cloud-Projekt-ID.
  • USER_EMAIL: die E-Mail-Adresse des Nutzers.

    Beispiele: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com oder domain:example.domain.com

iam.serviceAccountUser

Weisen Sie dem Nutzer die folgende IAM-Rolle zu:

gcloud iam service-accounts add-iam-policy-binding \
 SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
   --member="user:USER_EMAIL" \
   --role="roles/iam.serviceAccountUser"

Ersetzen Sie die folgenden Werte:

  • PROJECT_ID: die Google Cloud-Projekt-ID.
  • SERVICE_ACCOUNT_ID: die Dienstkonto-ID
  • USER_EMAIL: die E-Mail-Adresse des Nutzers.

    Beispiele: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com oder domain:example.domain.com

Dienstkontorollen auslösen

run.invoker

Weisen Sie dem Dienstkonto des Triggers die folgende IAM-Rolle zu:

gcloud run services add-iam-policy-binding SERVICE_ACCOUNT_NAME \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/run.invoker'

Ersetzen Sie die folgenden Werte:

  • SERVICE_ACCOUNT_NAME: Name des Trigger-Dienstkontos.
  • SERVICE_ACCOUNT_USER_EMAIL: E-Mail-Adresse des Dienstkontos.
eventarc.eventReceiver

Weisen Sie dem Dienstkonto des Triggers die folgende IAM-Rolle zu:

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/eventarc.eventReceiver'

Ersetzen Sie SERVICE_ACCOUNT_USER_EMAIL durch die E-Mail-Adresse des Dienstkontos.

Pub/Sub-Dienstkontorolle

iam.serviceAccountTokenCreator

Diese Rolle wird standardmäßig dem Pub/Sub-Dienstkonto zugewiesen.

Wichtig: Wenn Sie das Pub/Sub-Dienstkonto am oder vor dem 8. April 2021 aktiviert haben, weisen Sie dem Pub/Sub-Dienstkonto pro Projekt die folgende Rolle zu.

export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
    --role='roles/iam.serviceAccountTokenCreator'

Cloud Run-Flag

Stellen Sie den Ereignisempfängerdienst mithilfe des folgenden Codes am authentifizierten Cloud Run-Ziel bereit:

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events

Ersetzen Sie SERVICE_ACCOUNT_ID durch die Dienstkonto-ID.

Pub/Sub

So sorgen Sie dafür, dass Sie Ereignisse aus Drittanbieterquellen erhalten, während Sie sie an ein authentifiziertes Cloud Run-Ziel senden:

Nutzerrollen

eventarc.admin

Weisen Sie dem Nutzer die folgende IAM-Rolle zu:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

Ersetzen Sie die folgenden Werte:

  • PROJECT_ID: die Google Cloud-Projekt-ID.
  • USER_EMAIL: die E-Mail-Adresse des Nutzers.

    Beispiele: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com oder domain:example.domain.com

iam.serviceAccountUser

Weisen Sie dem Nutzer die folgende IAM-Rolle zu:

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
     --member="user:USER_EMAIL" \
     --role="roles/iam.serviceAccountUser"

Ersetzen Sie die folgenden Werte:

  • PROJECT_ID: die Google Cloud-Projekt-ID.
  • SERVICE_ACCOUNT_ID: die Dienstkonto-ID.
  • USER_EMAIL: die E-Mail-Adresse des Nutzers.

    Beispiele: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com oder domain:example.domain.com

Dienstkontorollen auslösen

run.invoker

Weisen Sie dem Dienstkonto des Triggers die folgende IAM-Rolle zu:

gcloud run services add-iam-policy-binding SERVICE_ACCOUNT_NAME \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/run.invoker'

Ersetzen Sie die folgenden Werte:

  • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos.
  • SERVICE_ACCOUNT_USER_EMAIL: die E-Mail-Adresse des Dienstkontos.

Pub/Sub-Dienstkontorolle

iam.serviceAccountTokenCreator

Diese Rolle wird standardmäßig dem Pub/Sub-Dienstkonto zugewiesen.

Wichtig: Wenn Sie das Pub/Sub-Dienstkonto am oder vor dem 8. April 2021 aktiviert haben, weisen Sie dem Pub/Sub-Dienstkonto pro Projekt die folgende Rolle zu.

export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
    --role='roles/iam.serviceAccountTokenCreator'

Cloud Run-Flag

Stellen Sie den Ereignisempfängerdienst mithilfe des folgenden Codes am authentifizierten Cloud Run-Ziel bereit:

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events

Ersetzen Sie SERVICE_ACCOUNT_ID durch die Dienstkonto-ID.

Nicht authentifizierte Aufrufe von Cloud Run

Cloud-Audit-Logs

So gewährleisten Sie, dass Sie Ereignisse von Google Cloud-Quellen erhalten, während Sie sie an ein nicht authentifiziertes Cloud Run-Ziel senden:

Nutzerrollen

eventarc.admin

Weisen Sie dem Nutzer die folgende IAM-Rolle zu:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

Ersetzen Sie die folgenden Werte:

  • PROJECT_ID: die Google Cloud-Projekt-ID.
  • USER_EMAIL: die E-Mail-Adresse des Nutzers.

    Beispiele: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com oder domain:example.domain.com

iam.serviceAccountUser

Weisen Sie dem Nutzer die folgende IAM-Rolle zu:

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
    --member="user:USER_EMAIL" \
    --role="roles/iam.serviceAccountUser"

Ersetzen Sie die folgenden Werte:

  • PROJECT_ID: die Google Cloud-Projekt-ID.
  • SERVICE_ACCOUNT_ID: die Dienstkonto-ID.
  • USER_EMAIL: die E-Mail-Adresse des Nutzers.

    Beispiele: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com oder domain:example.domain.com

Dienstkontorollen auslösen

eventarc.eventReceiver

Weisen Sie dem Dienstkonto des Triggers die folgende IAM-Rolle zu:

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/eventarc.eventReceiver'

Ersetzen Sie SERVICE_ACCOUNT_USER_EMAIL durch die E-Mail-Adresse des Dienstkontos.

Pub/Sub-Dienstkontorolle

iam.serviceAccountTokenCreator

Diese Rolle wird standardmäßig dem Pub/Sub-Dienstkonto zugewiesen.

Wichtig: Wenn Sie das Pub/Sub-Dienstkonto am oder vor dem 8. April 2021 aktiviert haben, weisen Sie dem Pub/Sub-Dienstkonto pro Projekt die folgende Rolle zu.

export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
    --role='roles/iam.serviceAccountTokenCreator'

Cloud Run-Flag

Stellen Sie den Ereignisempfänger mithilfe des folgenden Codes im nicht authentifizierten Cloud Run-Ziel bereit:

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events \
  --allow-unauthenticated

Ersetzen Sie SERVICE_ACCOUNT_ID durch die Dienstkonto-ID.

Pub/Sub

So sorgen Sie dafür, dass Sie Ereignisse aus Drittanbieterquellen erhalten, während Sie sie an ein nicht authentifiziertes Cloud Run-Ziel senden:

Nutzerrollen

eventarc.admin

Weisen Sie dem Nutzer die folgende IAM-Rolle zu:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

Ersetzen Sie die folgenden Werte:

  • PROJECT_ID: die Google Cloud-Projekt-ID.
  • USER_EMAIL: die E-Mail-Adresse des Nutzers.

    Beispiele: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com oder domain:example.domain.com

Dienstkontorollen auslösen

Pub/Sub-Dienstkontorolle

iam.serviceAccountTokenCreator

Diese Rolle wird standardmäßig dem Pub/Sub-Dienstkonto zugewiesen.

Wichtig: Wenn Sie das Pub/Sub-Dienstkonto am oder vor dem 8. April 2021 aktiviert haben, weisen Sie dem Pub/Sub-Dienstkonto pro Projekt die folgende Rolle zu.

export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
    --role='roles/iam.serviceAccountTokenCreator'

Cloud Run-Flag

Stellen Sie den Ereignisempfänger mithilfe des folgenden Codes im nicht authentifizierten Cloud Run-Ziel bereit:

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events \
  --allow-unauthenticated

Ersetzen Sie SERVICE_ACCOUNT_ID durch die Dienstkonto-ID.