Compte de service Cloud Build

Cloud Build utilise un compte de service spécial pour exécuter des compilations en votre nom. L'adresse e-mail du compte de service Cloud Build est [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com. Par défaut, le compte de service Cloud Build dispose des autorisations nécessaires pour effectuer plusieurs tâches, telles que l'extraction du code depuis Cloud Source Repositories ou l'écriture d'objets dans tout bucket Cloud Storage appartenant à votre projet. Au lieu d'utiliser le compte de service Cloud Build par défaut, vous pouvez spécifier votre propre compte de service pour exécuter des compilations en votre nom.

Cette page explique toutes les autorisations dont dispose le compte de service Cloud Build. Pour savoir comment accorder ou révoquer des autorisations sur le compte de service Cloud Build, consultez la section Configurer l'accès au compte de service Cloud Build.

Autorisations par défaut du compte de service Cloud Build

Lorsque vous activez l'API Cloud Build pour un projet Cloud, le compte de service Cloud Build est automatiquement créé dans le projet et se voit attribuer le rôle de compte de service Cloud Build pour les ressources du projet. Ce rôle contient un certain nombre d'autorisations, telles que la possibilité de mettre à jour des compilations ou d'écrire des journaux. Le compte de service n'utilise ces autorisations que selon les besoins pour effectuer des actions lors de l'exécution de votre compilation. Par exemple, le compte de service utilise l'autorisation source.repos.get pour récupérer le code de votre dépôt Cloud Source Repositories si le code source de votre compilation se trouve dans le dépôt Cloud Source Repositories. Si vous ne prévoyez pas d'effectuer une action dans le cadre du processus de compilation, nous vous recommandons de révoquer l'autorisation correspondante du compte de service Cloud Build pour respecter le principe de sécurité de moindre privilège.

Le tableau suivant répertorie les autorisations que le rôle de compte de service Cloud Build contient et l'objectif pour lequel le compte de service Cloud Build utilise ces autorisations.

Autorisation Description Objectif de l'autorisation
cloudbuild.builds.create Peut créer des compilations et des déclencheurs Obligatoire pour :
  • Utiliser des déclencheurs de compilation
  • Créer, répertorier, obtenir ou annuler des compilations.
cloudbuild.builds.update Peut mettre à jour des compilations et des déclencheurs
cloudbuild.builds.list Peut répertorier des compilations et des déclencheurs
cloudbuild.builds.get Peut obtenir une compilation et un déclencheur
storage.buckets.create Peut créer des buckets Cloud Storage Obligatoire pour :
  • Stocker et récupérer des images dans Container Registry
  • Stocker et récupérer des artefacts dans Cloud Storage
  • Envoyez des compilations manuellement via gcloud builds submit
  • Stocker des journaux de compilation dans un bucket de journaux créé par l'utilisateur
storage.buckets.get Obtenir des buckets Cloud Storage
storage.buckets.list Répertorier des buckets Cloud Storage
storage.objects.list Répertorier des objets Cloud Storage.
storage.objects.update Mettre à jour des objets Cloud Storage
storage.objects.create Écrire des objets Cloud Storage
storage.objects.delete Supprimer des objets Cloud Storage
storage.objects.get Lire des objets Cloud Storage
artifactregistry.repositories.uploadArtifacts Peut importer des artefacts dans des dépôts dans Artifact Registry Requis pour importer et obtenir des artefacts dans Artifact Registry.
artifactregistry.repositories.list Répertorier les dépôts dans Artifact Registry
artifactregistry.repositories.get Obtenir un dépôt à partir d'Artifact Registry
artifactregistry.repositories.downloadArtifacts Télécharger des artefacts à partir d'un dépôt dans Artifact Registry
artifactregistry.files.list Répertorier des fichiers dans Artifact Registry
artifactregistry.files.get Récupérer des fichiers depuis Artifact Registry
artifactregistry.packages.list Répertorier les packages dans Artifact Registry
artifactregistry.packages.get Obtenir des packages à partir d'Artifact Registry
artifactregistry.tags.create Peut créer des tags dans Artifact Registry
artifactregistry.tags.update Peut mettre à jour les tags dans Artifact Registry
artifactregistry.tags.list Répertorier les tags dans Artifact Registry
artifactregistry.tags.get Obtenir des tags à partir d'Artifact Registry
artifactregistry.versions.list Répertorier les versions dans Artifact Registry
artifactregistry.versions.get Obtenir des versions dans Artifact Registry
logging.logEntries.create Écrire des journaux Obligatoire pour créer des journaux de compilation dans Cloud Logging
pubsub.topics.create Créer des sujets Pub/Sub Obligatoire pour envoyer des mises à jour de compilation à Pub/Sub
pubsub.topics.publish Publier sur Pub/Sub
resourcemanager.projects.get Obtenir des informations sur le projet Obligatoire pour obtenir des informations sur le projet et répertorier des projets
resourcemanager.projects.list Répertorier les projets
containeranalysis.occurrences.create Peut créer une occurrence Container Analysis Le compte de service Cloud Build n'utilise pas ces autorisations, mais elles sont incluses pour des raisons de rétrocompatibilité.
containeranalysis.occurrences.delete Peut supprimer une occurrence Container Analysis
containeranalysis.occurrences.get Peut obtenir une occurrence Container Analysis
containeranalysis.occurrences.list Peut répertorier les occurrences Container Analysis
containeranalysis.occurrences.update Peut mettre à jour les occurrences Container Analysis
source.repos.get Lire le code source des dépôts dans Cloud Source Repositories Obligatoire pour :
  • Utiliser des déclencheurs Bitbucket et Cloud Source Repositories
  • Extraire le code source de Cloud Source Repositories
source.repos.list Répertorier les dépôts dans Cloud Source Repositories

Déclencheurs de compilation

Par défaut, les déclencheurs de compilation utilisent le compte de service Cloud Build pour exécuter des compilations. Vous pouvez également configurer des déclencheurs de compilation pour exécuter des compilations avec un compte de service de votre choix. Vous pouvez configurer chaque déclencheur avec un compte de service différent.

Tenez compte des considérations suivantes lorsque vous choisissez le compte de service à spécifier pour un déclencheur de compilation :

  • Compte de service Cloud Build par défaut : tout utilisateur disposant du rôle d'éditeur Cloud Build peut créer et exécuter directement un déclencheur. Par exemple, un utilisateur peut exécuter le déclencheur manuellement. Tout utilisateur peut également exécuter indirectement un déclencheur. Par exemple, un utilisateur peut appeler indirectement un déclencheur lorsqu'il transfère le nouveau code source dans un dépôt connecté. Tout utilisateur disposant du rôle d'éditeur Cloud Build peut mettre à jour un déclencheur tant que le compte de service précédent et le nouveau compte de service spécifié sur le déclencheur sont les comptes Cloud Build par défaut.

  • Compte de service spécifié par l'utilisateur: tout utilisateur doté du rôle d'éditeur Cloud Build et autorisé à emprunter l'identité du compte de service (iam.serviceAccount.actAs) peut créer et exécuter un déclencheur. Par exemple, un utilisateur peut exécuter le déclencheur manuellement. Tout utilisateur peut également exécuter indirectement un déclencheur. Par exemple, un utilisateur peut appeler indirectement un déclencheur lorsqu'il transfère une nouvelle source vers un dépôt connecté. Tout utilisateur doté du rôle d'éditeur Cloud Build peut mettre à jour un déclencheur s'il dispose des autorisations d'emprunt d'identité sur le compte de service précédemment configuré et sur le nouveau compte de service spécifié sur le déclencheur. Vous pouvez créer un rôle IAM personnalisé avec une autorisation d'emprunt d'identité ou utiliser des rôles prédéfinis qui autorisent les comptes principaux à emprunter l'identité d'un compte de service. Pour en savoir plus sur les autorisations d'emprunt d'identité, consultez la page Gérer l'emprunt d'identité d'un compte de service.

De plus, le compte de service Cloud Build par défaut et les comptes de service spécifiés par l'utilisateur peuvent fournir des autorisations de durée de compilation élevée aux utilisateurs qui utilisent des déclencheurs pour appeler une compilation. Gardez à l'esprit les implications de sécurité suivantes lorsque vous utilisez des déclencheurs de compilation associés au compte de service Cloud Build par défaut:

  • Un utilisateur qui n'a pas accès à votre projet Cloud, mais possède un accès en écriture au dépôt associé aux déclencheurs de compilation du projet, sera autorisé à modifier le code en cours de création.
  • En outre, si vous utilisez des déclencheurs de demande d'extraction GitHub, tout utilisateur disposant d'un accès en lecture au dépôt peut envoyer une requête d'extraction, qui peut déclencher une compilation incluant des modifications du code dans la requête d'extraction. Vous pouvez désactiver ce comportement en choisissant l'option Commande de commentaire lors de la création d'un déclencheur de requête d'extraction GitHub. Cette option garantit que la compilation n'est lancée que si un propriétaire du dépôt ou un collaborateur commente /gcbrun. Pour en savoir plus sur l'utilisation du contrôle des commentaires avec les déclencheurs GitHub, consultez la section Créer des déclencheurs GitHub.

Étape suivante