Comptes de service Cloud Deploy

Ce document décrit les comptes de service permettant d'exécuter Cloud Deploy et d'appeler Cloud Deploy pour exécuter diverses opérations.

Cloud Deploy utilise deux comptes de service:

  • L'agent de service Cloud Deploy

    Cloud Deploy utilise ce compte de service pour interagir avec votre projet. Vous ne pouvez pas remplacer cet agent de service par un autre compte de service, mais vous pouvez modifier les autorisations le concernant, par exemple lorsque vous utilisez des ressources en dehors du projet (telles qu'un compte de service ou un pool de nœuds de calcul Cloud Build privé).

  • Compte de service d'exécution Cloud Deploy

    Cloud Deploy utilise ce compte de service pour exécuter les opérations de rendu et de déploiement dans Cloud Build. Ce compte doit disposer d'autorisations suffisantes pour lire et écrire dans le bucket Cloud Storage, et pour accéder aux cibles de déploiement.

    Le compte de service par défaut pour l'exécution est le compte de service Compute Engine par défaut. Vous pouvez spécifier un autre compte de service dans la configuration de la cible.

  • Compte de service d'automatisation Cloud Deploy

    Il s'agit du compte de service utilisé par Cloud Deploy pour effectuer les automatisations. Il peut s'agir du compte de service d'exécution par défaut ou d'un autre compte de service. Pour en savoir plus sur ce compte de service, consultez la section Compte de service d'automatisation.

Consultez la page Créer et gérer des comptes de service pour découvrir comment modifier les autorisations des comptes de service et créer un autre compte de service.

Agent de service Cloud Deploy

L'agent de service Cloud Deploy est un compte de service utilisé par Cloud Deploy pour interagir avec d'autres services Google Cloud sur lesquels s'appuie Cloud Deploy. Ces services incluent Cloud Build, Pub/Sub et Cloud Audit Logs.

Le nom de ce compte de service respecte le format suivant:

service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com

Vous ne pouvez pas remplacer l'agent de service par un autre compte de service. Toutefois, vous devrez peut-être ajouter des autorisations, par exemple pour autoriser l'accès à un pool privé dans un autre projet, configuré dans le cadre d'un environnement d'exécution.

Compte de service d'exécution Cloud Deploy

Par défaut, Cloud Deploy s'exécute à l'aide du compte de service Compute Engine par défaut. Ce compte de service dispose des autorisations suffisantes dans le projet qui le contient pour afficher les fichiers manifestes et le déployer sur vos cibles.

Le nom de ce compte de service respecte le format suivant:

[project-number]-compute@developer.gserviceaccount.com

Ce compte de service par défaut dispose d'autorisations étendues. Une bonne pratique consiste à modifier votre environnement d'exécution afin que Cloud Deploy s'exécute sous un autre compte de service. Vous pouvez modifier le compte de service d'exécution pour chaque cible à l'aide de la propriété executionConfigs.privatePool.serviceAccount ou de la propriété executionConfigs.defaultPool.serviceAccount dans la définition de la cible.

Tout compte de service que vous définissez pour ces propriétés doit disposer du rôle roles/clouddeploy.jobRunner dans le projet Cloud Deploy. Si le compte de service d'exécution par défaut ne dispose pas de cette autorisation, exécutez la commande suivante:

 gcloud projects add-iam-policy-binding PROJECT_ID \
     --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/clouddeploy.jobRunner"

Quels comptes de service créer

Si vous choisissez de ne pas utiliser le compte de service d'exécution par défaut pour l'affichage et le déploiement, vous devez créer un ou plusieurs comptes de service alternatifs à utiliser. Il s'agit de comptes de service sous lesquels Cloud Deploy s'exécute. Ils sont configurés dans la configuration cible.

L'une des raisons d'en créer plusieurs est de disposer d'un ou de plusieurs comptes de service spécifiques pour le déploiement sur des cibles limitées, comme une cible de production.

Une approche possible consiste à utiliser des comptes de service distincts par pipeline de livraison. Chacun de ces comptes de service doit inclure des rôles disposant d'autorisations suffisantes pour le rendu et le déploiement.

Pour les déploiements sur Google Kubernetes Engine, vous pouvez limiter le compte de service à un seul espace de noms.

Utiliser des comptes de service d'un autre projet

Pour votre environnement d'exécution, vous pouvez spécifier un compte de service situé dans un projet différent de celui dans lequel vous avez créé votre cible:

  1. Sur le projet propriétaire du compte de service, activez la règle d'administration SA multiprojets.

  2. Accordez à l'agent de service Cloud Deploy (service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com) l'autorisation iam.serviceAccounts.actAs pour votre compte de service.

    Dans ce cas, project-number correspond au projet dans lequel vous avez créé votre cible.

    Vous pouvez également accorder le rôle roles/iam.serviceAccountUser, qui inclut cette autorisation, dans le projet de et sur chaque compte de service se trouvant dans un projet différent de celui sur lequel Cloud Deploy est exécuté.

  3. Attribuez le rôle roles/iam.serviceAccountTokenCreator à l'agent de service Cloud Build (service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com).

    Dans ce cas, project-number est le projet dans lequel vous avez créé votre cible. Ce rôle est attribué dans le projet du compte de service.

    Vous devez attribuer ce rôle à chaque compte de service configuré dans l'environnement d'exécution d'une cible si ce compte de service se trouve dans un projet différent de celui sur lequel Cloud Deploy est exécuté.

  4. Accordez à l'appelant de gcloud deploy releases create et gcloud deploy rollouts create l'autorisation iam.serviceAccounts.actAs sur le compte de service ou le rôle [roles/iam.serviceAccountUser](/iam/docs/understanding-roles#service-accounts-roles).

Autorisations requises

  • Le compte de service utilisé pour les configurations de rendu doit disposer d'autorisations suffisantes pour accéder au bucket Cloud Storage dans lequel vos ressources Cloud Deploy sont stockées (pipelines de livraison, versions, déploiements).

    Le rôle roles/clouddeploy.jobRunner inclut toutes les autorisations dont le compte de service de rendu (privatePool ou defaultPool) a besoin.

  • Le compte de service utilisé pour le déploiement doit disposer d'autorisations suffisantes pour effectuer un déploiement sur le cluster cible et de l'autorisation d'accéder au bucket Cloud Storage.

  • Le compte de service qui appelle Cloud Deploy pour créer une version doit disposer du rôle clouddeploy.releaser. Il doit également disposer de l'autorisation iam.serviceAccount.actAs pour utiliser le compte de service qui affiche les fichiers manifestes (par exemple, via le rôle roles/iam.serviceAccountUser).

  • Le compte de service qui appelle Cloud Deploy pour promouvoir une version ou créer une rollout doit disposer de l'autorisation iam.serviceAccount.actAs pour utiliser le compte de service qui effectue le déploiement sur des cibles (par exemple, via le rôle roles/iam.serviceAccountUser).

  • Le compte de service configuré pour une automatisation doit être autorisé à exécuter les opérations en cours d'automatisation. En savoir plus

Compte de service d'automatisation

Vous pouvez automatiser certaines actions dans une version. Cloud Deploy exécute ces automatisations à l'aide du compte de service d'automatisation, qui peut être le compte de service d'exécution par défaut, un compte de service autre que celui par défaut utilisé comme compte de service d'exécution ou un autre compte de service.

Ce compte de service est décrit dans la section Compte de service d'automatisation.

Étapes suivantes