Rôles et autorisations pour les cibles de workflows

Ce document explique comment attribuer des rôles et des autorisations IAM (Identity and Access Management) pour prendre en charge les événements de routage de Google Cloud et d'autres sources vers des workflows cibles à l'aide d'Eventarc.

  1. Accordez des autorisations à l'échelle du projet au compte principal qui appelle les API Eventarc (par exemple, le créateur du déclencheur Eventarc):

    1. Le rôle Administrateur Eventarc vous permet de contrôler totalement toutes les ressources Eventarc, y compris la spécification d'un compte de service pour le déclencheur lors de sa création.
    2. Le rôle Utilisateur du compte de service permet à un compte principal d'emprunter l'identité d'un compte de service et de l'utiliser. Le compte de service est associé à un déclencheur Eventarc et représente l'identité du déclencheur.
  2. Accordez des autorisations de déclencheur Eventarc au compte de service du déclencheur:

    1. Le rôle Destinataire des événements Eventarc permet à votre déclencheur Eventarc de recevoir des événements des fournisseurs d'événements. Vous n'avez pas besoin d'attribuer le rôle si vous acheminez des événements directs à partir de Cloud Pub/Sub.
    2. Le rôle Demandeur de workflows permet à votre déclencheur Eventarc de lancer une exécution de workflow.
  3. Accordez des autorisations aux agents de service Google:

    1. Si vous créez un déclencheur pour des événements directs à partir de Cloud Storage, attribuez le rôle Diffuseur Pub/Sub.
    2. Si vous avez activé l'agent de service Cloud Pub/Sub le 8 avril 2021 ou à une date antérieure, attribuez le rôle de Créateur de jetons du compte de service.

Pour en savoir plus sur l'attribution de rôles IAM, consultez la section Gérer les accès. Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Accorder des autorisations à l'échelle du projet

Si vous êtes le créateur du projet, vous disposez du rôle de base Propriétaire (roles/owner). Par défaut, ce rôle inclut les autorisations nécessaires pour un accès complet à la plupart des ressources Google Cloud. Sinon, les rôles requis doivent être attribués par un administrateur de la ressource appropriée au compte principal approprié (également appelé membre).

Par exemple, un compte principal peut être un compte Google (pour les utilisateurs finaux) ou un compte de service (pour les applications et les charges de travail de calcul). Chaque compte principal possède son propre identifiant, qui est généralement une adresse e-mail.

  1. Le rôle d'administrateur Eventarc (roles/eventarc.admin) vous permet de contrôler totalement toutes les ressources Eventarc.

    Attribuez le rôle au projet :

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

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud.
    • PRINCIPAL : l'identifiant du créateur du déclencheur, qui se présente généralement sous la forme suivante : PRINCIPAL_TYPE:ID. Exemple : user:my-user@example.com. Pour obtenir la liste complète des valeurs PRINCIPAL_TYPE possibles, consultez la documentation de référence sur les liaisons de stratégie.
  2. Le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) permet à un compte principal d'exécuter des opérations en tant que compte de service.

    Lors de la création d'un déclencheur Eventarc ou lors du déploiement d'un workflow, vous avez besoin de ce rôle pour associer un compte de service géré par l'utilisateur au déclencheur ou au workflow, qui représente son identité. Pour en savoir plus, consultez la section Rôles pour l'authentification des comptes de service.

    Vous pouvez accorder le rôle sur le projet pour permettre au compte principal d'emprunter l'identité de plusieurs comptes de service ou d'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.

    Attribuez le rôle au projet :

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

    Ou attribuez le rôle sur le compte de service:

    gcloud iam service-accounts add-iam-policy-binding \
        projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_PROJECT_ID : ID de projet Google Cloud contenant le compte de service.
    • SERVICE_ACCOUNT_NAME : nom du compte de service.

Accorder des autorisations au déclencheur Eventarc

Chaque déclencheur Eventarc est associé à un compte de service IAM au moment de sa création. Vous pouvez spécifier un compte de service géré par l'utilisateur que le déclencheur utilise comme identité par défaut. Si vous ne spécifiez pas de compte de service lors de la création du déclencheur, celui-ci utilise le compte de service Compute Engine par défaut pour son identité.

Nous vous recommandons de créer votre propre compte de service géré par l'utilisateur afin de renforcer le contrôle et la flexibilité lors de la gestion du déclencheur.

  1. Créez un compte de service et notez son nom :

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom du compte de service. Ce nom apparaît dans l'adresse e-mail qui identifie le compte de service.
    • DESCRIPTION : description facultative du compte de service.
    • DISPLAY_NAME : nom du compte de service à afficher dans la console Google Cloud.
  2. Attribuez le rôle Récepteur d'événements Eventarc (roles/eventarc.eventReceiver) sur le projet au compte de service associé à votre déclencheur Eventarc afin qu'il puisse recevoir des événements de fournisseurs d'événements.

    Notez que vous n'avez pas besoin d'attribuer le rôle de récepteur d'événements Eventarc si vous acheminez des événements directs à partir de Cloud Pub/Sub.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/eventarc.eventReceiver

    Remplacez SERVICE_ACCOUNT_NAME par le nom de votre compte de service que vous avez noté à l'étape précédente.

  3. Attribuez le rôle Demandeur de workflows (roles/workflows.invoker) sur le projet au compte de service associé à votre déclencheur Eventarc afin qu'il puisse lancer l'exécution de votre workflow.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/workflows.invoker

    Remplacez SERVICE_ACCOUNT_NAME par le nom de votre compte de service que vous avez noté précédemment.

Accorder des autorisations aux agents de service Google

Certains services Google Cloud disposent d'agents de service qui permettent aux services d'accéder à vos ressources. Si une API nécessite un agent de service, Google le crée après l'activation et l'utilisation de l'API.

  1. Si vous créez un déclencheur pour des événements directs à partir de Cloud Storage, pour permettre la publication de messages dans un sujet, accordez le rôle Diffuseur Pub/Sub (roles/pubsub.publisher) sur le projet à l'agent de service Cloud Storage :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

    Remplacez PROJECT_NUMBER par votre numéro de projet Google Cloud. Vous pouvez trouver le numéro de votre projet sur la page Bienvenue de la console Google Cloud ou en exécutant la commande suivante :

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Si vous avez activé l'agent de service Cloud Pub/Sub le 8 avril 2021 ou à une date antérieure, pour accepter les requêtes push Pub/Sub authentifiées, accordez le rôle de créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator) sur le projet pour l'agent de service Pub/Sub. Sinon, ce rôle est attribué par défaut :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator

Étapes suivantes