Ce document décrit les comptes de service utilisés pour exécuter Cloud Deploy et appeler Cloud Deploy pour exécuter diverses opérations.
Cloud Deploy utilise deux comptes de service:
-
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 dessus, par exemple lorsque vous utilisez des ressources en dehors du projet (comme un compte de service ou un pool de nœuds de calcul Cloud Build privé).
Le compte de service d'exécution Cloud Deploy
Cloud Deploy utilise ce compte de service pour exécuter des opérations de rendu et de déploiement dans Cloud Build. Ce compte a besoin d'autorisations suffisantes pour lire et écrire dans le bucket Cloud Storage et 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 cible.
Pour savoir comment modifier les autorisations d'un compte de service et créer un autre compte de service, consultez la page Créer et gérer des comptes 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 se présente comme suit:
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
Vous ne pouvez pas remplacer l'agent de service par un autre compte de service. Vous devrez peut-être ajouter des autorisations, par exemple pour autoriser l'accès à un pool privé dans un autre projet, configuré dans 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 les déployer sur vos cibles.
Le nom de ce compte de service se présente comme suit:
[project-number]-compute@developer.gserviceaccount.com
Ce compte de service par défaut dispose d'autorisations étendues. Il est recommandé de modifier votre environnement d'exécution pour que Cloud Deploy s'exécute avec 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 le rendu et le déploiement, vous devez créer un ou plusieurs comptes de service alternatifs à utiliser. Il s'agit de comptes de service avec lesquels Cloud Deploy s'exécute et qui sont configurés dans la configuration cible.
Vous pouvez en créer plusieurs afin d'avoir un ou plusieurs comptes de service spécifiques pour le déploiement sur des cibles restreintes, comme une cible de production.
Une approche possible consiste à utiliser des comptes de service distincts par pipeline de livraison. Chaque compte de service doit inclure des rôles disposant d'autorisations suffisantes pour effectuer le rendu et le déploiement.
Pour les déploiements sur Google Kubernetes Engine, vous pouvez restreindre 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 se trouvant dans un projet différent de celui dans lequel vous créez votre pipeline de livraison:
Sur le projet propriétaire du compte de service, activez la règle d'administration SA multiprojet.
Accordez à l'agent de service Cloud Deploy (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
) l'autorisationiam.serviceAccounts.actAs
pour votre compte de service.Vous pouvez également attribuer le rôle
roles/iam.serviceAccountUser
, qui inclut cette autorisation.Attribuez le rôle
roles/iam.serviceAccountTokenCreator
à l'agent de service Cloud Build (service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com
).Accordez à l'appelant de
gcloud deploy releases create
etgcloud deploy rollouts create
l'autorisationiam.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 où sont stockées vos ressources Cloud Deploy (pipelines de livraison, versions, déploiements).
Le rôle
roles/clouddeploy.jobRunner
inclut toutes les autorisations nécessaires au compte de service de rendu (privatePool
oudefaultPool
).Le compte de service utilisé pour le déploiement doit disposer des autorisations nécessaires 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'autorisationiam.serviceAccount.actAs
pour utiliser le compte de service qui affiche les fichiers manifestes (par exemple, via le rôleroles/iam.serviceAccountUser
).Le compte de service qui appelle Cloud Deploy pour promouvoir une version ou créer une
rollout
doit disposer de l'autorisationiam.serviceAccount.actAs
pour utiliser le compte de service qui effectue des déploiements sur des cibles (par exemple, via le rôleroles/iam.serviceAccountUser
).
Étapes suivantes
- Apprenez-en davantage sur IAM
- En savoir plus sur les rôles Cloud Deploy prédéfinis
- Découvrez comment créer et gérer des comptes de service.