Rôles et autorisations Eventarc

Ce document explique comment définir les rôles, les autorisations et les options d'IAM (Identity and Access Management) permettant de recevoir des événements Eventarc depuis Google Cloud et des sources tierces, et comment transmettre les événements à des services cibles Cloud Run avec ou sans authentification.

Sur cette page, vous allez :

  • attribuer des rôles IAM spécifiques à l'utilisateur ;
  • accorder des rôles et des autorisations spécifiques au compte de service du déclencheur. Eventarc utilise un compte de service fourni par le client comme identité du déclencheur ;
  • Si vous avez activé le compte de service Pub/Sub le 8 avril 2021 ou à une date antérieure, attribuez le rôle iam.serviceAccountTokenCreator au compte de service Pub/Sub.
  • Si vous choisissez d'utiliser l'outil de ligne de commande gcloud, définissez l'option Cloud Run de manière appropriée lorsque vous déployez des images de conteneurs ou des révisions depuis un dépôt source vers Cloud Run.

Pour en savoir plus sur les options de contrôle des accès dans Eventarc, consultez la section Contrôle des accès.

Types de déclencheurs et rôles dans Eventarc

Eventarc est compatible avec les types de déclencheurs suivants :

  • Déclencheurs Cloud Audit Logging : Eventarc utilise Cloud Audit Logging pour recevoir des événements provenant de sources Google Cloud.
  • Déclencheurs Cloud Pub/Sub : Eventarc utilise des notifications Pub/Sub pour recevoir des événements provenant de sources tierces.
Cloud Audit Logging Pub/Sub
Appels authentifiés de Cloud Run Utilisateur :
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
Utilisateur :
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
Compte de service du déclencheur :
  • roles/run.invoker
  • roles/eventarc.eventReceiver
Compte de service du déclencheur :
  • roles/run.invoker
Compte de service Pub/Sub :
  • roles/iam.serviceAccountTokenCreator
Compte de service Pub/Sub :
  • roles/iam.serviceAccountTokenCreator
Option Cloud Run :
  • Non applicable
Option Cloud Run :
  • ND
Cloud Audit Logging Pub/Sub
Appels non authentifiés de Cloud Run Utilisateur :
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
Utilisateur :
  • roles/eventarc.admin
Compte de service du déclencheur :
  • roles/eventarc.eventReceiver
Compte de service du déclencheur :
  • ND
Compte de service Pub/Sub :
  • roles/iam.serviceAccountTokenCreator
Compte de service Pub/Sub :
  • roles/iam.serviceAccountTokenCreator
Option Cloud Run :
  • --allow-unauthenticated
Option Cloud Run :
  • --allow-unauthenticated

Appels authentifiés de Cloud Run

Cloud Audit Logging

Pour vous assurer de recevoir des événements depuis des sources Google Cloud, tout en les diffusant sur une cible Cloud Run authentifiée, procédez comme suit :

Rôles utilisateur

eventarc.admin

Attribuez le rôle IAM suivant à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • USER_EMAIL : adresse e-mail de l'utilisateur.

    Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

iam.serviceAccountUser

Attribuez le rôle IAM suivant à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • USER_EMAIL : adresse e-mail de l'utilisateur.

    Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

Rôles associés aux comptes de service de déclencheur

run.invoker

Attribuez le rôle IAM suivant au compte de service du déclencheur :

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

Remplacez les valeurs suivantes :

  • SERVICE_ACCOUNT_NAME : nom du compte de service du déclencheur.
  • SERVICE_ACCOUNT_USER_EMAIL : adresse e-mail associée au compte de service.
eventarc.eventReceiver

Attribuez le rôle IAM suivant au compte de service du déclencheur :

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

Remplacez SERVICE_ACCOUNT_USER_EMAIL par l'adresse e-mail du compte de service.

Rôle associé aux comptes de service Pub/Sub

iam.serviceAccountTokenCreator

Ce rôle est attribué par défaut au compte de service Pub/Sub.

Important : Si vous avez activé le compte de service Pub/Sub le 8 avril 2021 ou à une date antérieure, attribuez le rôle suivant au compte de service Pub/Sub dans chaque projet.

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'

Option Cloud Run

Déployez le service récepteur d'événements sur la cible Cloud Run avec authentification à l'aide du code suivant :

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

Remplacez SERVICE_ACCOUNT_ID par l'ID du compte de service.

Pub/Sub

Pour vous assurer de recevoir des événements de sources tierces tout en les diffusant vers un service cible Cloud Run avec authentification, procédez comme suit :

Rôles utilisateur

eventarc.admin

Attribuez le rôle IAM suivant à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • USER_EMAIL : adresse e-mail de l'utilisateur.

    Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

iam.serviceAccountUser

Attribuez le rôle IAM suivant à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • USER_EMAIL : adresse e-mail de l'utilisateur.

    Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

Rôles associés aux comptes de service de déclencheur

run.invoker

Attribuez le rôle IAM suivant au compte de service du déclencheur :

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

Remplacez les valeurs suivantes :

  • SERVICE_ACCOUNT_NAME : nom du compte de service.
  • SERVICE_ACCOUNT_USER_EMAIL : adresse e-mail associée au compte de service.

Rôle associé aux comptes de service Pub/Sub

iam.serviceAccountTokenCreator

Ce rôle est attribué par défaut au compte de service Pub/Sub.

Important : Si vous avez activé le compte de service Pub/Sub le 8 avril 2021 ou à une date antérieure, attribuez le rôle suivant au compte de service Pub/Sub dans chaque projet.

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'

Option Cloud Run

Déployez le service récepteur d'événements sur la cible Cloud Run avec authentification à l'aide du code suivant :

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

Remplacez SERVICE_ACCOUNT_ID par l'ID du compte de service.

Appels non authentifiés de Cloud Run

Cloud Audit Logging

Pour vous assurer de recevoir des événements depuis des sources Google Cloud, tout en les diffusant sur un service cible Cloud Run sans authentification, procédez comme suit :

Rôles utilisateur

eventarc.admin

Attribuez le rôle IAM suivant à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • USER_EMAIL : adresse e-mail de l'utilisateur.

    Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

iam.serviceAccountUser

Attribuez le rôle IAM suivant à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • USER_EMAIL : adresse e-mail de l'utilisateur.

    Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

Rôles associés aux comptes de service de déclencheur

eventarc.eventReceiver

Attribuez le rôle IAM suivant au compte de service du déclencheur :

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

Remplacez SERVICE_ACCOUNT_USER_EMAIL par l'adresse e-mail du compte de service.

Rôle associé aux comptes de service Pub/Sub

iam.serviceAccountTokenCreator

Ce rôle est attribué par défaut au compte de service Pub/Sub.

Important : Si vous avez activé le compte de service Pub/Sub le 8 avril 2021 ou à une date antérieure, attribuez le rôle suivant au compte de service Pub/Sub dans chaque projet.

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'

Option Cloud Run

Déployez le service récepteur d'événements sur la cible Cloud Run sans authentification à l'aide du code suivant :

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

Remplacez SERVICE_ACCOUNT_ID par l'ID du compte de service.

Pub/Sub

Pour vous assurer de recevoir des événements de sources tierces tout en les diffusant vers un service cible Cloud Run sans authentification, procédez comme suit :

Rôles utilisateur

eventarc.admin

Attribuez le rôle IAM suivant à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • USER_EMAIL : adresse e-mail de l'utilisateur.

    Exemples : user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ou domain:example.domain.com.

Rôles associés aux comptes de service de déclencheur

ND

Rôle associé aux comptes de service Pub/Sub

iam.serviceAccountTokenCreator

Ce rôle est attribué par défaut au compte de service Pub/Sub.

Important : Si vous avez activé le compte de service Pub/Sub le 8 avril 2021 ou à une date antérieure, attribuez le rôle suivant au compte de service Pub/Sub dans chaque projet.

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'

Option Cloud Run

Déployez le service récepteur d'événements sur la cible Cloud Run sans authentification à l'aide du code suivant :

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

Remplacez SERVICE_ACCOUNT_ID par l'ID du compte de service.