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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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 formatuser|group|serviceAccount:email
oudomain:domain
.Exemples :
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
oudomain: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
oudomain: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.