Rôles et autorisations pour Cloud Run

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

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 Google Cloud CLI, définissez l'option Cloud Run de manière appropriée lorsque vous déployez des images de conteneurs ou des révisions à partir d'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 d'événements et rôles Eventarc

Eventarc accepte les déclencheurs pour les types d'événements suivants :

  • Événements Cloud Audit Logs : Eventarc reçoit les événements de sources Google Cloud à l'aide de Cloud Audit Logs.
  • Événements directs : Eventarc reçoit des événements directs, tels qu'une mise à jour d'un bucket Cloud Storage, à partir de sources Google Cloud.
  • Événements Cloud Pub/Sub : Eventarc reçoit les événements de sources tierces à l'aide des notifications Pub/Sub.

Appels authentifiés de Cloud Run

Selon le type d'événement, attribuez les rôles, autorisations et options IAM appropriés pour un service cible Cloud Run authentifié :

Cloud Audit Logs

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

Attribuez le rôle Administrateur Eventarc (roles/eventarc.admin) à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

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


Attribuez le rôle Compte de service (roles/iam.serviceAccountUser) à l'utilisateur :

gcloud iam service-accounts add-iam-policy-binding \
 SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
   --member=PRINCIPAL \
   --role='roles/iam.serviceAccountUser'

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

    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 compte de service de déclencheur

Attribuez le rôle Demandeur Cloud Run (roles/run.invoker) au compte de service du déclencheur :

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

Remplacez les valeurs suivantes :

  • SERVICE_NAME : nom du service qui doit être appelé par ce déclencheur.
  • SERVICE_ACCOUNT_USER_EMAIL : adresse e-mail associée au compte de service.

Attribuez le rôle Récepteur d'événements Eventarc (roles/eventarc.eventReceiver) 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

Le rôle Créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator) 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 de la commande suivante :

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

Remplacez les valeurs suivantes :

  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • SERVICE_NAME: nom du service Cloud Run.

Événements directs

Pour vous assurer de recevoir les événements directement depuis la source, tels qu'une mise à jour de bucket Cloud Storage, tout en diffusant des données sur une cible Cloud Run authentifiée, procédez comme suit :

Rôles utilisateur

Attribuez le rôle Administrateur Eventarc (roles/eventarc.admin) à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

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


Attribuez le rôle Compte de service (roles/iam.serviceAccountUser) à l'utilisateur :

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
     --member=PRINCIPAL \
     --role='roles/iam.serviceAccountUser'

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

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

Rôle de compte de service Cloud Storage

Si vous créez un déclencheur pour un événement direct à partir de Cloud Storage, attribuez le rôle Éditeur Pub/Sub (roles/pubsub.publisher) au compte de service Cloud Storage :

SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:${SERVICE_ACCOUNT}"
  --role='roles/pubsub.publisher'

Remplacez PROJECT_ID par l'ID du projet Google Cloud.

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

Attribuez le rôle Demandeur Cloud Run (roles/run.invoker) au compte de service du déclencheur :

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

Remplacez les valeurs suivantes :

  • SERVICE_NAME : nom du service qui doit être appelé par ce déclencheur.
  • SERVICE_ACCOUNT_USER_EMAIL : adresse e-mail associée au compte de service.

Attribuez le rôle Récepteur d'événements Eventarc (roles/eventarc.eventReceiver) 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

Le rôle Créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator) 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 de la commande suivante :

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

Remplacez les valeurs suivantes :

  • SERVICE_ACCOUNT_ID par l'ID du compte de service.
  • SERVICE_NAME : nom du service Cloud Run.

Sujet 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

Attribuez le rôle Administrateur Eventarc (roles/eventarc.admin) à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

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


Attribuez le rôle Compte de service (roles/iam.serviceAccountUser) à l'utilisateur :

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
     --member=PRINCIPAL \
     --role='roles/iam.serviceAccountUser'

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

    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 compte de service de déclencheur

Attribuez le rôle Demandeur Cloud Run (roles/run.invoker) au compte de service du déclencheur :

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

Remplacez les valeurs suivantes :

  • SERVICE_NAME : nom du service qui doit être appelé par ce déclencheur.
  • SERVICE_ACCOUNT_USER_EMAIL : adresse e-mail associée au compte de service.

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

Le rôle Créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator) 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 de la commande suivante :

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

Remplacez les valeurs suivantes :

  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • SERVICE_NAME: nom du service Cloud Run.

Appels non authentifiés de Cloud Run

Selon le type d'événement, attribuez les rôles, autorisations et options IAM appropriés pour un service cible Cloud Run non authentifié :

Cloud Audit Logs

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

Attribuez le rôle Administrateur Eventarc (roles/eventarc.admin) à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

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


Attribuez le rôle Compte de service (roles/iam.serviceAccountUser) à l'utilisateur :

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
    --member=PRINCIPAL \
    --role='roles/iam.serviceAccountUser'

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

    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 compte de service de déclencheur

Attribuez le rôle Récepteur d'événements Eventarc (roles/eventarc.eventReceiver) 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

Le rôle Créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator) 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 de la commande suivante :

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

Remplacez les valeurs suivantes :

  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • SERVICE_NAME: nom du service Cloud Run.

Événements directs

Pour vous assurer que vous recevez des événements directement depuis la source, tels qu'une mise à jour de bucket Cloud Storage, tout en diffusant des données sur une cible Cloud Run non authentifiée, procédez comme suit :

Rôles utilisateur

Attribuez le rôle Administrateur Eventarc (roles/eventarc.admin) à l'utilisateur :

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

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

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


Attribuez le rôle Compte de service (roles/iam.serviceAccountUser) à l'utilisateur :

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
    --member=PRINCIPAL \
    --role='roles/iam.serviceAccountUser'

Remplacez les valeurs suivantes :

  • PROJECT_ID : ID de projet Google Cloud.
  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • PRINCIPAL : compte principal pour lequel vous souhaitez ajouter la liaison. Il doit être au format user|group|serviceAccount:email ou domain:domain.

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

Rôle de compte de service Cloud Storage

Si vous créez un déclencheur pour un événement direct à partir de Cloud Storage, attribuez le rôle Éditeur Pub/Sub (roles/pubsub.publisher) au compte de service Cloud Storage :

SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:${SERVICE_ACCOUNT}"
  --role='roles/pubsub.publisher'

Remplacez PROJECT_ID par l'ID du projet Google Cloud.

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

Attribuez le rôle Récepteur d'événements Eventarc (roles/eventarc.eventReceiver) 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

Le rôle Créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator) 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 de la commande suivante :

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

Remplacez les valeurs suivantes :

  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • SERVICE_NAME: nom du service Cloud Run.

Sujet 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

Attribuez le rôle Administrateur Eventarc (roles/eventarc.admin) à l'utilisateur :

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=PRINCIPAL \
  --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

Le rôle Créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator) 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 de la commande suivante :

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

Remplacez les valeurs suivantes :

  • SERVICE_ACCOUNT_ID : ID du compte de service.
  • SERVICE_NAME: nom du service Cloud Run.