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 vers un point de terminaison HTTP interne dans un réseau cloud privé virtuel (VPC) à l'aide d'Eventarc.
Accordez des autorisations à l'échelle du projet au compte principal qui appelle les API Eventarc (par exemple, le créateur du déclencheur Eventarc):
- 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.
- 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.
Accordez des autorisations de déclencheur Eventarc au compte de service du déclencheur : 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.
Accordez des autorisations aux agents de service Google :
- Si l'URI du point de terminaison HTTP interne utilise le nom DNS interne d'un service pouvant être résolu par Cloud DNS, attribuez le rôle de pair Cloud DNS.
- Si vous créez un déclencheur pour des événements directs à partir de Cloud Storage, attribuez le rôle Diffuseur Pub/Sub.
- 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.
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 valeursPRINCIPAL_TYPE
possibles, consultez la documentation de référence sur les liaisons de stratégie.
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.Par exemple, vous avez besoin de ce rôle pour associer un compte de service géré par l'utilisateur à un déclencheur Eventarc. Vous en aurez également besoin pour pouvoir agir en tant que compte de service d'exécution lors du déploiement d'un service Cloud Run. Pour en savoir plus, consultez Emprunt d'identité d'un compte 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.
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.
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.
Accorder des autorisations aux agents de service
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.
Si l'URI du point de terminaison HTTP interne du réseau VPC utilise le nom DNS interne d'un service pouvant être résolu par Cloud DNS, pour accéder aux réseaux cibles avec des zones d'appairage DNS, attribuez le rôle de pair DNS (
roles/dns.peer
) sur le projet hôte VPC à l'agent de service Eventarc :gcloud projects add-iam-policy-binding VPC_HOST_PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com \ --role=roles/dns.peer
Remplacez les éléments suivants :
VPC_HOST_PROJECT_ID
: ID de projet Google Cloud pour le projet hôte de VPC. Lorsque vous utilisez un VPC partagé, vous associez un ou plusieurs projets de service au projet hôte, ce qui permet aux ressources de plusieurs projets de se connecter à un réseau VPC commun.Notez que selon la configuration du réseau VPC, le projet hôte VPC peut également être votre projet de déclencheur Eventarc.
PROJECT_NUMBER
: numéro de projet Google Cloud pour votre projet déclencheur Eventarc. 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)'
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)'
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
Découvrez les options de contrôle des accès dans Eventarc.
Découvrez les bonnes pratiques relatives à l'utilisation des comptes de service.
Découvrez comment décrire un déclencheur et vérifier le compte de service associé.