Prendre en charge un compte de service multiprojet

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.

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page Règles d'administration

  2. 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.

  3. 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.

  1. 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

    1. Dans Google Cloud Console, accédez à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Sélectionnez le projet qui possède le compte de service que vous allez associer au déclencheur Eventarc.

    3. Cliquez sur l'adresse e-mail du compte de service que vous avez créé précédemment.

    4. Cliquez sur l'onglet Autorisations.

    5. Dans la section Comptes principaux ayant accès à ce compte de service, cliquez sur  Accorder l'accès.

    6. 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.

    7. Cliquez sur Ajouter un autre rôle.

    8. 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.

    9. 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.
  2. 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'autorisation iam.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 :

    1. Dans la console Google Cloud, accédez à la page IAM.

      Accéder à IAM

    2. Sélectionnez le projet propriétaire du compte de service.

    3. Cliquez sur Accorder l'accès.

    4. Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte principal.

    5. Dans la liste Sélectionner un rôle, définissez un filtre sur Utilisateur du compte de service, puis sélectionnez le rôle.

    6. 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 :

    1. Dans Google Cloud Console, accédez à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Sélectionnez le projet propriétaire du compte de service.

    3. Cliquez sur l'adresse e-mail du compte de service que vous avez créé précédemment.

    4. Cliquez sur l'onglet Autorisations.

    5. Dans la section Comptes principaux ayant accès à ce compte de service, cliquez sur  Accorder l'accès.

    6. Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte principal.

    7. Cliquez sur Ajouter un autre rôle.

    8. Dans la liste Sélectionner un rôle, définissez un filtre sur Utilisateur du compte de service, puis sélectionnez le rôle.

    9. 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 format user|group|serviceAccount:email ou domain: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.

  1. 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.

  2. Créez votre déclencheur avec le compte de service multiprojet.

Étape suivante