Ce document décrit les comptes de service utilisés pour exécuter Cloud Deploy et pour appeler Cloud Deploy afin d'exécuter diverses opérations.
Cloud Deploy utilise les comptes de service suivants :
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 ses autorisations, par exemple lorsque vous utilisez des ressources en dehors du projet (comme un compte de service ou un pool de workers Cloud Build privé).
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 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 cible.
Compte de service d'automatisation Cloud Deploy
Il s'agit du compte de service utilisé par Cloud Deploy pour effectuer des 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 Compte de service d'automatisation.
Consultez Créer et gérer des comptes de service pour savoir 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 que Cloud Deploy utilise pour interagir avec d'autres services Google Clouddont il dépend. Ces services incluent Cloud Build, Pub/Sub et Cloud Audit Logs.
Le nom de ce compte de service suit le format suivant :
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
Si ce compte est supprimé de votre projet, vous pouvez l'ajouter de nouveau :
Ouvrez la page IAM dans la console Google Cloud :
Sélectionnez Inclure les attributions de rôles fournies par Google pour afficher l'agent de service.
Si l'agent de service s'affiche, vous pouvez ignorer le reste de ces étapes.
Si l'agent de service ne s'affiche pas, cliquez sur Accorder l'accès.
Dans le champ Nouveaux comptes principaux, saisissez l'adresse de l'agent de service au format suivant :
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
Cliquez sur la liste déroulante Sélectionner un rôle, puis sélectionnez Agent de service Cloud Deploy.
Cliquez sur Enregistrer.
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.
Le nom de ce compte de service suit le format suivant :
[project-number]-compute@developer.gserviceaccount.com
Comme ce compte de service est utilisé par de nombreux produits, il peut disposer d'autorisations étendues. La bonne pratique consiste à modifier votre environnement d'exécution afin que Cloud Deploy s'exécute en tant que compte de service différent.
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 Exécuteur Cloud Deploy dans le projet Cloud Deploy. Si le compte de service d'exécution par défaut ne dispose pas de ce rôle, 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"
Le compte de service aura également besoin d'autorisations spécifiques à l'environnement d'exécution pour déployer des applications dans l'environnement d'exécution choisi. Pour Google Kubernetes Engine, vous pouvez choisir les rôles Développeur de conteneurs et Utilisateur de compte de service. Pour Cloud Run, vous pouvez choisir les rôles Développeur Cloud Run et Utilisateur du compte de service. D'autres environnements d'exécution utilisés par les cibles personnalisées peuvent nécessiter leurs propres autorisations.
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. Il s'agit de comptes de service sous lesquels Cloud Deploy s'exécute. Ils sont configurés dans la configuration cible.
Vous pouvez créer plusieurs comptes de service pour déployer des applications sur des cibles restreintes, comme une cible de production.
Une approche possible consiste à utiliser des comptes de service distincts pour chaque pipeline de déploiement. Chacun de ces comptes de service inclurait des rôles disposant d'autorisations suffisantes pour 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 qui se trouve dans un projet différent de celui dans lequel vous créez votre cible :
Dans le projet propriétaire du compte de service, activez la règle d'administration "Compte de service multiprojets".
Accordez à l'agent de service Cloud Deploy (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com) l'autorisationiam.serviceAccounts.actAspour votre compte de service.Dans ce cas,
project-numberest le projet dans lequel vous avez créé votre cible.Vous pouvez également attribuer le rôle
roles/iam.serviceAccountUser, qui inclut cette autorisation, dans le projet de chaque compte de service qui se trouve dans un projet différent de celui dans lequel Cloud Deploy est exécuté.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-numberest le projet dans lequel vous avez créé votre cible, et ce rôle est accordé 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 dans lequel Cloud Deploy est exécuté.
Accordez à l'appelant de
gcloud deploy releases createetgcloud deploy rollouts createl'autorisationiam.serviceAccounts.actAssur le compte de service ou le rôleroles/iam.serviceAccountUser.
Autorisations requises
Le compte de service utilisé pour le rendu des configurations doit disposer des autorisations suffisantes pour accéder au bucket Cloud Storage dans lequel sont stockées vos ressources Cloud Deploy (pipelines de déploiement, versions, déploiements).
Le rôle
roles/clouddeploy.jobRunnerinclut toutes les autorisations dont le compte de service de rendu (privatePooloudefaultPool) a besoin.Le compte de service utilisé pour le déploiement doit disposer des autorisations suffisantes pour effectuer le déploiement sur le cluster cible et pour 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.actAspour 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 un
rolloutdoit disposer de l'autorisationiam.serviceAccount.actAspour utiliser le compte de service qui effectue le déploiement sur les cibles (par exemple, via le rôleroles/iam.serviceAccountUser).Le compte de service configuré pour une automatisation doit être autorisé à exécuter les opérations automatisées. 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 non défini par défaut utilisé comme compte de service d'exécution ou un autre compte de service.
En savoir plus sur le compte de service d'automatisation
Étapes suivantes
- Apprenez-en davantage sur IAM
- Découvrez les rôles Cloud Deploy prédéfinis.
- Découvrez comment créer et gérer des comptes de service.