Configurer l'identité du service pour les pools de nœuds de calcul

Cette page explique comment configurer et afficher l'identité de service qui contrôle l'accès des pools de nœuds de calcul Cloud Run aux API Google Cloud .

Un pool de nœuds de calcul Cloud Run possède une identité de service utilisée comme compte authentifié pour accéder aux API Google Cloud à partir de votre conteneur d'instances Cloud Run. Pour en savoir plus sur l'identité de service, consultez le guide Présentation de l'identité de service.

Utilisation de l'identité de service

Dans Cloud Run, l'identité de service est un compte de service qui est à la fois une ressource et un compte principal.

  • Identité de service en tant que ressource : pour associer un compte de service en tant qu'identité de service, le compte déployeur doit avoir accès à la ressource d'identité de service. Certaines opérations, telles que la création ou la mise à jour d'un pool de nœuds de calcul, nécessitent que le compte déployeur dispose d'autorisations sur la ressource d'identité de service.
  • Identité de service en tant que compte principal : pour accéder aux API Google Cloud à partir d'un pool de nœuds de calcul Cloud Run, vous devez accorder à l'identité de service les rôles ou les autorisations nécessaires pour les opérations que vous souhaitez que votre pool de nœuds de calcul effectue.

La section suivante décrit les rôles requis pour accorder au compte de déploiement l'accès à la ressource d'identité du service et accorder les rôles ou autorisations dont le compte de service principal a besoin.

Rôles requis

Vous ou votre administrateur devez attribuer des rôles et des autorisations IAM pour le compte déployeur et l'identité de service.

Cliquez ici pour afficher les rôles requis pour le compte déployeur

Pour obtenir les autorisations nécessaires pour associer un compte de service en tant qu'identité de service sur le pool de nœuds de calcul, vous ou votre administrateur devez attribuer à votre compte déployeur le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) sur le compte de service utilisé comme identité de service.

Ce rôle prédéfini contient l'autorisation iam.serviceAccounts.actAs, qui est requise pour associer un compte de service au pool de workers. Vous pouvez également obtenir cette autorisation en configurant des rôles personnalisés ou en utilisant d'autres rôles prédéfinis.

Pour savoir comment attribuer au compte déployeur ce rôle sur l'identité de service, consultez la section Autorisations de déploiement. Si le compte de service se trouve dans un projet différent du pool de nœuds de calcul Cloud Run, vous ou votre administrateur devez également configurer un rôle IAM pour l'agent de service Cloud Run et configurer une règle d'administration. Pour en savoir plus, consultez la section Utiliser des comptes de service dans d'autres projets.

Cliquez ici pour afficher les rôles requis pour l'identité de service

Pour autoriser l'identité de service à accéder aux API Google Cloud à partir de Cloud Run, vous ou votre administrateur devez lui attribuer les autorisations ou rôles requis par les opérations que vous souhaitez effectuer. Pour accéder à des bibliothèques clientes Cloud spécifiques, reportez-vous à la documentation Google Cloud concernant le service Google Cloud .

Si un pool de nœuds de calcul Cloud Run n'accède pas à d'autres services Google Cloud , vous n'avez pas besoin d'attribuer de rôles ni d'autorisations à l'identité du service, et vous pouvez utiliser le compte de service par défaut attribué au projet.

Obtenir des recommandations pour créer des comptes de service dédiés

Lorsque vous créez un compte de service à partir de la console Google Cloud , l'étape facultative "Autoriser ce compte de service à accéder au projet" concerne tout accès supplémentaire requis. Par exemple, un service Cloud Run peut appeler un autre service Cloud Run privé ou il peut avoir besoin d'accéder à une base de données Cloud SQL, et ces actions nécessitent toutes deux des rôles IAM spécifiques. Pour en savoir plus, consultez la documentation sur la gestion des accès.

L'outil de recommandation fournit automatiquement des recommandations pour la création d'un compte de service dédié avec un ensemble minimal d'autorisations requises.

Configurer l'identité du service

Si vous n'avez pas encore créé de compte de service, vous pouvez créer un compte de service géré par l'utilisateur dans IAM ou dans Cloud Run.

Pour configurer une identité de service, utilisez la consoleGoogle Cloud ou la gcloud CLI :

Console

  1. Dans la console Google Cloud , accédez à Cloud Run :

    Accédez à Cloud Run

  2. Sélectionnez Pools de nœuds de calcul dans le menu, puis cliquez sur Déployer un conteneur pour configurer un nouveau pool de nœuds de calcul. Si vous configurez un pool de nœuds de calcul existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau pool de nœuds de calcul, remplissez la page initiale du pool de nœuds de calcul, puis cliquez sur Conteneur(s), Volumes, Mise en réseau, Sécurité pour développer la page de configuration des pools de nœuds de calcul.

  4. Cliquez sur l'onglet Sécurité.

    image

    • Cliquez sur Créer un compte de service ou sur le menu déroulant Compte de service, puis sélectionnez un compte de service existant, le cas échéant.
  5. Cliquez sur Créer ou Déployer.

gcloud

Si vous n'avez pas encore créé de compte de service, créez-en un géré par l'utilisateur dans IAM.

Vous pouvez mettre à jour un pool de nœuds de calcul existant pour configurer un compte de service à l'aide de la commande suivante :

gcloud beta run worker-pools update WORKER_POOL --service-account SERVICE_ACCOUNT

Remplacez les éléments suivants :

  • WORKER_POOL : nom de votre service.
  • SERVICE_ACCOUNT : compte de service associé au compte de service associé à la nouvelle identité. Cette valeur correspond à l'adresse e-mail du compte de service, au format SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, où SERVICE_ACCOUNT_NAME est le nom du compte de service et PROJECT_ID l'ID de votre projet. Vous pouvez également définir un compte de service lors du déploiement à l'aide de la commande suivante :
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL --service-account SERVICE_ACCOUNT

Remplacez les éléments suivants :

  • WORKER_POOL : nom du pool de nœuds de calcul.
  • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • SERVICE_ACCOUNT : compte de service associé à la nouvelle identité. Cette valeur correspond à l'adresse e-mail du compte de service, au format SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

resource "google_cloud_run_v2_worker_pool" "default" {
  name     = "WORKER_POOL"
  location = "REGION"
  launch_stage = "BETA"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }
  service_account = "SERVICE_ACCOUNT"
}

Remplacez les éléments suivants :

  • WORKER_POOL : nom du pool de nœuds de calcul.
  • REGION : région Google Cloud , par exemple europe-west1.
  • IMAGE_URL : référence à l'image de conteneur contenant le pool de nœuds de calcul, par exemple us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • SERVICE_ACCOUNT : compte de service associé au compte de service associé à la nouvelle identité. Cette valeur correspond à l'adresse e-mail du compte de service, au format SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com, où SERVICE_ACCOUNT_NAME est le nom du compte de service et PROJECT_ID l'ID de votre projet.

Utiliser des comptes de service dans d'autres projets

Si vous configurez un compte de service à partir d'un autre projet Google Cloud que la ressource Cloud Run, procédez comme suit :

  1. Vous ou votre administrateur devez attribuer le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) sur le compte de service que vous utilisez comme identité de service.

    Console

    1. Accédez à la page Comptes de service de la console Google Cloud  :

      Accéder à la page "Comptes de service"

    2. Sélectionnez l'adresse e-mail du compte de service que vous utilisez comme identité de service.

    3. Cliquez sur l'onglet Autorisations.

    4. Cliquez sur le bouton Accorder l'accès.

    5. Saisissez l'adresse e-mail du compte déployeur correspondant au compte principal auquel vous attribuez le rôle Administrateur ou Développeur.

    6. Dans la liste déroulante Sélectionner un rôle, sélectionnez le rôle Comptes de service > Utilisateur du compte de service.

    7. Cliquez sur Enregistrer.

    gcloud

    Exécutez la commande gcloud iam service-accounts add-iam-policy-binding en remplaçant les variables en surbrillance par les valeurs appropriées :

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

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom du compte de service auquel vous associez la ressource Cloud Run
    • SERVICE_ACCOUNT_PROJECT_ID : ID du projet dans lequel se trouve le compte de service
    • PRINCIPAL : compte de déploiement pour lequel vous ajoutez la liaison, 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
  2. Vous ou votre administrateur devez accorder à l'agent de service de la ressource Cloud Run le rôle de créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) sur le compte de service que vous utilisez comme identité de service. L'agent de service respecte le format service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.

    Console

    1. Accédez à la page Comptes de service de la console Google Cloud  :

      Accéder à la page "Comptes de service"

    2. Sélectionnez l'adresse e-mail du compte de service que vous utilisez comme identité de service.

    3. Cliquez sur l'onglet Autorisations.

    4. Cliquez sur le bouton Accorder l'accès.

    5. Saisissez l'adresse e-mail de l'agent de service. Exemple : service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com.

    6. Dans la liste déroulante Sélectionner un rôle, sélectionnez le rôle Comptes de service > Créateur de jetons du compte de service.

    7. 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-CLOUD_RUN_RESOURCE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom du compte de service auquel vous associez la ressource Cloud Run
    • SERVICE_ACCOUNT_PROJECT_ID : ID du projet dans lequel se trouve le compte de service
    • CLOUD_RUN_RESOURCE_PROJECT_NUMBER : numéro du projet dans lequel se trouve Cloud Run.

    La commande affiche la stratégie d'autorisation mise à jour du compte de service géré par l'utilisateur.

  3. Le projet contenant ce compte de service nécessite que la règle d'organisation iam.disableCrossProjectServiceAccountUsage soit définie sur false ou non appliquée au niveau du dossier ou héritée des paramètres au niveau du projet. Par défaut, cette valeur est définie sur true.

    Console

    1. Accédez à la page Règles d'administration dans la console Google Cloud  :

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

    2. Dans le sélecteur de projets, sélectionnez l'organisation et le projet pour lesquels vous souhaitez désactiver l'utilisation des comptes de service multiprojets.

    3. Sélectionnez la règle Désactiver l'utilisation des comptes de service multiprojets.

    4. Cliquez sur Gérer la règle.

    5. Sous Source de la règle, sélectionnez Remplacer la règle parente.

    6. Cliquez sur Ajouter une règle.

    7. Sous Application, sélectionnez Désactivé.

    8. Pour appliquer la règle, cliquez sur Définir la règle.

    gcloud

    Dans le projet contenant le compte de service, assurez-vous que la contrainte de règle d'administration iam.disableCrossProjectServiceAccountUsage n'est pas appliquée. Cette contrainte est appliquée par défaut.

    Pour désactiver cette contrainte de règle d'administration, exécutez la commande suivante :

    gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage
        --project=SERVICE_ACCOUNT_PROJECT_ID

    Remplacez SERVICE_ACCOUNT_PROJECT_ID par l'ID du projet contenant le compte de service.

Vous pouvez attribuer des rôles directement à la ressource du compte de service ou hériter des niveaux supérieurs de la hiérarchie des ressources.

Afficher la configuration du compte de service pour le pool de nœuds de calcul

  1. Dans la console Google Cloud , accédez à Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur Pools de nœuds de calcul pour afficher la liste des pools de nœuds de calcul déployés.

  3. Cliquez sur le pool de workers que vous souhaitez examiner pour afficher son volet d'informations.

  4. Cliquez sur l'onglet Sécurité pour afficher les informations de sécurité du pool de workers, y compris les comptes de service.

Étapes suivantes