Rôles et autorisations pour les cibles Google Kubernetes Engine (GKE)

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 à l'aide d'Eventarc depuis Google Cloud et d'autres sources vers des destinations GKE, y compris les points de terminaison publics des services privés et publics services exécutés dans un cluster GKE.

  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 Abonné Pub/Sub permet à votre déclencheur Eventarc de consommer des messages à partir de Pub/Sub et d'associer des abonnements à un sujet.
    3. Le rôle Rédacteur de métriques Monitoring permet au redirecteur d'événements d'Eventarc d'écrire des métriques à l'aide de Cloud Monitoring et d'autres systèmes fournissant des métriques.
  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, vous avez besoin de ce rôle pour associer un compte de service géré par l'utilisateur au déclencheur et 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 d'abonné Pub/Sub (roles/pubsub.subscriber) sur le projet au compte de service associé à votre déclencheur Eventarc afin qu'il puisse consulter les messages de Pub/Sub et associer des abonnements à un sujet.

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

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

  4. Attribuez le rôle Rédacteur de métriques Monitoring (roles/monitoring.metricWriter) sur le projet au compte de service associé à votre déclencheur Eventarc afin que le redirecteur d'événements d'Eventarc puisse écrire des métriques à l'aide de Cloud Monitoring et d'autres systèmes fournissant des métriques.

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

Accorder des autorisations aux agents de service Google

Certains services Google Cloud disposent de comptes de service gérés par Google qui permettent aux services d'accéder à vos ressources. Ces comptes de service sont parfois appelés agents de service. 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