Compte de service par défaut Cloud Build

Selon les paramètres de votre projet, Cloud Build peut utiliser la classe l'ancien compte de service Cloud Build ou Compte de service Compute Engine par défaut pour exécuter des compilations sur votre au nom de l'utilisateur. L'adresse e-mail de l'ancien compte de service Cloud Build est [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com et que l'adresse e-mail du compte de service Compute Engine par défaut est [PROJECT_NUMBER]-compute@developer.gserviceaccount.com Les comptes de service par défaut peuvent disposer d'autorisations inutilement étendues pour votre cas d'utilisation. Vous pouvez améliorer votre posture de sécurité en suivant le principe du moindre privilège. Conformément à ce principe, nous vous recommandons de créer votre propre compte de service pour exécuter des compilations en votre nom. Cela peut réduire l'impact potentiel des erreurs de configuration ou des utilisateurs.

Cette page décrit toutes les autorisations accordées à l'ancienne fonctionnalité Cloud Build compte de service par défaut.

Pour en savoir plus sur le compte de service par défaut Compute Engine, consultez la section Compte de service Compute Engine par défaut.

Découvrez comment accorder ou révoquer des autorisations sur l'instance Cloud Build les comptes de service par défaut, consultez Configurez l'accès au compte de service Cloud Build par défaut.

Autorisations par défaut de l'ancien compte de service Cloud Build

Si les paramètres de votre projet autorisent l'utilisation de l'ancienne API Cloud Build compte de service, celui-ci dispose du compte de service Cloud Build pour les ressources du projet. Ce rôle contient un certain nombre des autorisations, comme la possibilité de mettre à jour des compilations ou d'écrire des journaux. Le service n'utilise ces autorisations que pour effectuer les actions requises l'exécution de votre build. Par exemple, le compte de service utilise l'autorisation artifactregistry.dockerimages.get pour obtenir une image Docker à partir de Container Registry si votre compilation est configurée pour ce faire. 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 pour respecter le principe de sécurité de moindre privilège.

Le tableau suivant répertorie les autorisations accordées au service Cloud Build d'identité et dans quel but le rôle Cloud Build l'ancien compte de service 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
cloudbuild.workerpools.use Peut utiliser un pool privé Obligatoire pour exécuter des compilations dans un pool privé.
logging.logEntries.create Écrire des journaux Obligatoire pour créer et répertorier des journaux de compilation dans Cloud Logging.
logging.logEntries.list Peut lister les journaux
logging.views.access Peut consulter les journaux
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
remotebuildexecution.blobs.get Peut obtenir l'accès pour approuver ou rejeter les builds. Obligatoire pour approuver ou refuser les builds en attente
resourcemanager.projects.get Obtenir des informations sur le projet
resourcemanager.projects.list Répertorier les projets
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
storage.buckets.create Peut créer des buckets Cloud Storage Obligatoire pour :
  • Stocker et obtenir des images dans Container Registry ( Obsolète).
  • 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 Importer des artefacts dans des dépôts dans Artifact Registry Obligatoire pour gérer les artefacts dans Artifact Registry.
artifactregistry.repositories.downloadArtifacts Télécharger des artefacts à partir d'un dépôt dans Artifact Registry
artifactregistry.aptartifacts.create Peut importer des artefacts Apt dans Artifact Registry
artifactregistry.dockerimages.get Peut récupérer des images Docker à partir d'Artifact Registry
artifactregistry.dockerimages.list Peut lister les images Docker stockées dans Artifact Registry
artifactregistry.kfpartifacts.create Peut importer un artefact KFP dans Artifact Registry
artifactregistry.locations.get Peut obtenir des informations sur l'emplacement d'une ressource dans Artifact Registry
artifactregistry.locations.list Peut répertorier les emplacements compatibles avec Artifact Registry
artifactregistry.mavenartifacts.get Peut obtenir des packages Maven à partir d'Artifact Registry
artifactregistry.mavenartifacts.list Peut lister les packages Maven à partir d'Artifact Registry
artifactregistry.npmpackages.get Peut obtenir des packages npm à partir d'Artifact Registry
artifactregistry.npmpackages.list Répertorier les packages npm à partir d'Artifact Registry
artifactregistry.projectsettings.get Peut récupérer les paramètres du projet depuis Artifact Registry
artifactregistry.pythonpackages.get Peut obtenir des packages Python à partir d'Artifact Registry
artifactregistry.pythonpackages.list Peut lister les packages Python à partir d'Artifact Registry
artifactregistry.yumartifacts.create Peut importer des artefacts Yum dans Artifact Registry
artifactregistry.repositories.createOnPush Vous pouvez créer un dépôt gcr.io dans Artifact Registry la première fois qu'une est transférée vers un nom d'hôte gcr.io dans le projet.
artifactregistry.repositories.get Obtenir un dépôt à partir d'Artifact Registry
artifactregistry.repositories.list Répertorier les dépôts dans Artifact Registry
artifactregistry.repositories.listEffectiveTags Peut répertorier les tags des artefacts dans Artifact Registry Obligatoire pour gérer les tags des artefacts dans Artifact Registry.
artifactregistry.repositories.listTagBindings Peut répertorier les informations sur la liaison de tags pour les artefacts dans Artifact Registry
artifactregistry.tags.create Peut créer des tags dans Artifact Registry
artifactregistry.tags.get Obtenir des tags à partir d'Artifact Registry
artifactregistry.tags.list Répertorier les tags dans Artifact Registry
artifactregistry.tags.update Peut mettre à jour les tags dans Artifact Registry
artifactregistry.versions.list Répertorier les versions dans Artifact Registry
artifactregistry.versions.get Obtenir des versions dans Artifact Registry
containeranalysis.occurrences.create Peut créer une occurrence Artifact Analysis Le compte de service Cloud Build n'utilise pas ces autorisations, mais elles sont incluses pour assurer la rétrocompatibilité.
containeranalysis.occurrences.delete Peut supprimer une occurrence Artifact Analysis
containeranalysis.occurrences.get Peut obtenir une occurrence Artifact Analysis
containeranalysis.occurrences.list Peut lister les occurrences Artifact Analysis
containeranalysis.occurrences.update Peut mettre à jour les occurrences d'Artifact Analysis

Déclencheurs de compilation

Lorsque vous créez des déclencheurs de compilation, vous devez choisir le compte de service utilisé pour exécuter la compilation. Vous pouvez configurer chaque déclencheur avec un compte de service différent. La seule exception est si l'ancien compte de service Cloud Build est activé dans votre projet. Dans ce cas, les déclencheurs de compilation utilisent par défaut l'ancien compte de service lorsqu'aucun autre compte n'est sélectionné.

Accès utilisateur aux déclencheurs

L'accès des utilisateurs aux déclencheurs dépend du type de compte de service configuré pour le déclencheur :

  • Ancien compte de service Cloud Build (si activé): Tout utilisateur doté du rôle "É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 doté du rôle "Éditeur Cloud Build" peut mettre à jour à condition qu'il utilise l'API Cloud Build l'ancien compte de service.

  • Compte de service spécifié par l'utilisateur ou compte de service Compute Engine par défaut: Tout utilisateur doté du rôle "Éditeur Cloud Build" et disposant du rôle L'autorisation iam.serviceAccounts.actAs permet de créer et d'exécuter directement un déclencheur. Par exemple, un utilisateur peut exécuter le déclencheur manuellement. Tout utilisateur doté du rôle "Éditeur Cloud Build" mettre à jour un déclencheur, à condition qu'il dispose des autorisations iam.serviceAccounts.actAs le compte de service précédemment configuré et le nouveau compte de service spécifiée sur le déclencheur. Pour accorder cette autorisation à un utilisateur, vous pouvez lui accorder Un rôle prédéfini disposant de l'autorisation, par exemple le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser). Vous pouvez également créer avec l'autorisation iam.serviceAccounts.actAs, puis attribuer ce rôle à l'utilisateur. Pour en savoir plus sur les autorisations des comptes de service, consultez la section Rôles pour l'authentification des comptes de service.

Droits de compilation des déclencheurs

Le compte de service configuré pour un déclencheur de compilation peut fournir des autorisations de durée de compilation élevée aux utilisateurs qui utilisent des déclencheurs pour appeler une compilation. Cela s'applique à la fois à l'ancien compte de service et aux comptes de service spécifiés par l'utilisateur. Gardez à l'esprit les implications de sécurité suivantes lorsque vous utilisez des déclencheurs de compilation :

  • Un utilisateur n'ayant pas accès à votre projet Google Cloud, mais disposant d'un accès en écriture à le dépôt associé aux déclencheurs de compilation du projet dispose des autorisations pour modifier le code en cours de compilation. Par exemple, les utilisateurs peuvent indirectement appeler un se déclenche lorsqu'ils transfèrent le nouveau code source vers un dépôt connecté.

  • 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.

Limites

Si vous devez vous authentifier entre les services à l'aide d'un jeton d'ID, vous devez exécuter vos builds avec un compte de service spécifié par l'utilisateur. L'ancien compte de service Cloud Build ne peut pas être utilisé pour générer des jetons d'identification.

Par exemple, si vous utilisez des applications de plate-forme sans serveur telles que Cloud Run, Cloud Run ou App Engine, et que vous souhaitez appeler votre application à partir de Cloud Build, il est nécessaire d'utiliser compte de service configuré avec les autorisations requises pour l'échange de service à service l'authentification unique.

Pour obtenir des instructions, consultez la section Autoriser l'accès de service à service.

Étape suivante