Chaque déclencheur Eventarc est associé à un compte de service IAM (Identity and Access Management) au moment de sa création. Le déclencheur utilise le compte de service comme identité par défaut.
Par défaut, vous ne pouvez pas créer un compte de service IAM dans un projet Google Cloud et l'associer à une ressource d'un autre projet. Toutefois, vous avez peut-être centralisé les comptes de service de votre organisation dans des projets distincts, ce qui peut faciliter la gestion des comptes de service. Ce document décrit les étapes requises pour permettre l'association d'un compte de service dd'un projet à un déclencheur Eventarc d'un autre projet.
Si vous ne disposez pas des autorisations nécessaires pour effectuer ces étapes, demandez à un administrateur de s'en charger.
Activer l'utilisation des comptes de service multiprojets
Effectuez les étapes suivantes dans le projet de compte de service.
Dans la console Google Cloud, accédez à la page Règles d'administration.
Si la règle Désactiver l'utilisation des comptes de service multi-projets est appliquée, vous devez la désactiver.
Pour en savoir plus, consultez la section Activer l'association des comptes de service à plusieurs projets.
Créez un compte de service et notez son nom.
Accorder des autorisations pour l'authentification des comptes de service
Les comptes principaux peuvent s'authentifier de différentes manières à l'aide de comptes de service. Chaque type d'authentification nécessite que le compte principal dispose d'autorisations IAM spécifiques sur le compte de service. Pour en savoir plus, consultez la section Rôles pour l'authentification des comptes de service.
Attribuez le rôle IAM Créateur de jetons du compte de service (
roles/iam.serviceAccountTokenCreator
) à l'agent de service Eventarc du projet Google Cloud contenant le déclencheur. Cela permet à l'agent de service de gérer l'accès multiprojet pour le compte de service. Un agent de service est l'identité d'un service Google Cloud donné pour un projet particulier. Pour plus d'informations, consultez la page Agents de service.Console
Dans Google Cloud Console, accédez à la page Comptes de service.
Sélectionnez le projet qui possède le compte de service que vous allez associer au déclencheur Eventarc.
Cliquez sur l'adresse e-mail du compte de service que vous avez créé précédemment.
Cliquez sur l'onglet Autorisations.
Dans la section Comptes principaux ayant accès à ce compte de service, cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail de l'agent de service Eventarc :
service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
Remplacez
EVENTARC_PROJECT_NUMBER
par le numéro du projet Google Cloud contenant le déclencheur.Cliquez sur Ajouter un autre rôle.
Dans la liste Sélectionner un rôle, définissez un filtre sur Créateur de jetons du compte de service, puis sélectionnez le rôle.
Cliquez sur Enregistrer.
gcloud
Exécutez la commande
gcloud iam service-accounts add-iam-policy-binding
:gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member='serviceAccount:service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
Remplacez les éléments suivants :
SERVICE_ACCOUNT_NAME
: nom de votre compte de service.SERVICE_ACCOUNT_PROJECT_ID
: ID du projet Google Cloud propriétaire du compte de service.EVENTARC_PROJECT_NUMBER
: numéro du projet Google Cloud contenant le déclencheur.
Accordez le rôle IAM Utilisateur du compte de service (
roles/iam.serviceAccountUser
) à tous les comptes principaux qui créent des déclencheurs, par exemple l'agent de service Eventarc du projet Google Cloud contenant le déclencheur. Ce rôle prédéfini contient l'autorisationiam.serviceAccounts.actAs
, qui est requise pour associer un compte de service à une ressource.Console
Attribuez le rôle sur le projet pour permettre au compte principal d'emprunter l'identité de plusieurs comptes de service :
Dans la console Google Cloud, accédez à la page IAM.
Sélectionnez le projet propriétaire du compte de service.
Cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte principal.
Dans la liste Sélectionner un rôle, définissez un filtre sur Utilisateur du compte de service, puis sélectionnez le rôle.
Cliquez sur Enregistrer.
Vous pouvez également accorder le rôle sur le compte de service pour permettre au compte principal d'emprunter l'identité d'un compte de service spécifique :
Dans Google Cloud Console, accédez à la page Comptes de service.
Sélectionnez le projet propriétaire du compte de service.
Cliquez sur l'adresse e-mail du compte de service que vous avez créé précédemment.
Cliquez sur l'onglet Autorisations.
Dans la section Comptes principaux ayant accès à ce compte de service, cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte principal.
Cliquez sur Ajouter un autre rôle.
Dans la liste Sélectionner un rôle, définissez un filtre sur Utilisateur du compte de service, puis sélectionnez le rôle.
Cliquez sur Enregistrer.
gcloud
Exécutez la commande
gcloud projects add-iam-policy-binding
et attribuez le rôle sur le projet pour permettre au compte principal d'emprunter l'identité de plusieurs comptes de service :gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Vous pouvez également exécuter la commande
gcloud iam service-accounts add-iam-policy-binding
et accorder le rôle sur le compte de service pour permettre au compte principal d'emprunter l'identité d'un compte de service spécifique.gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
Remplacez les éléments suivants :
SERVICE_ACCOUNT_PROJECT_ID
: ID du projet Google Cloud propriétaire du compte de service.PRINCIPAL
: identifiant du créateur de déclencheur au formatuser|group|serviceAccount:email
oudomain:domain
. Par exemple :user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
m
SERVICE_ACCOUNT_RESOURCE_NAME
: nom complet de ressource du compte de service. Par exemple :projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
Où :
SERVICE_ACCOUNT_PROJECT_ID
correspond à l'ID du projet Google Cloud propriétaire du compte de service.SERVICE_ACCOUNT_NAME
correspond au nom de votre compte de service.
Accorder des autorisations pour permettre le routage d'événements
Avant de créer un déclencheur Eventarc, vous devez accorder d'autres autorisations IAM pour permettre le routage d'événements à l'aide d'Eventarc.
Accordez les autorisations appropriées en fonction des ressources auxquelles le déclencheur Eventarc doit accéder pour effectuer son travail, ainsi que du fournisseur et de la destination de l'événement. Pour en savoir plus, consultez Tous les rôles et autorisations.
Créez votre déclencheur avec le compte de service multiprojet.