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 celle 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 stratégie de sécurité en suivant les
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 malveillants.
Cette page explique toutes les autorisations dont dispose l'ancien compte de service Cloud Build par défaut.
Pour en savoir plus sur le compte de service Compute Engine par défaut, consultez Compte de service Compute Engine par défaut.
Pour savoir comment accorder ou révoquer des autorisations sur les comptes de service par défaut de Cloud Build, consultez la section Configurer l'accès au compte de service par défaut de Cloud Build.
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 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 artifactregistry.dockerimages.get
pour obtenir une image Docker à partir de
Container Registry si votre compilation est configurée pour le faire. Si vous ne prévoyez pas
d'effectuer une action dans le cadre du processus de compilation, nous vous recommandons de révoquer le
l'autorisation correspondante du compte de service pour se conformer
principe de sécurité du 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 l'ancien 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 :
|
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 approuver ou refuser des 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 :
|
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 :
|
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 |
Obtenir des images Docker à partir d'Artifact Registry | |
artifactregistry.dockerimages.list |
Répertorier 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 |
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 |
Obtenir des packages npm à partir d'Artifact Registry | |
artifactregistry.npmpackages.list |
Peut lister 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 |
Obtenir des packages Python à partir d'Artifact Registry | |
artifactregistry.pythonpackages.list |
Répertorier 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 |
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 d'analyse d'artefacts | 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 des utilisateurs aux déclencheurs
L'accès des utilisateurs aux déclencheurs dépend du type de compte de service configuré pour ces derniers:
Ancien compte de service Cloud Build (si activé) : 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 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 disposant du rôle d'éditeur Cloud Build et de l'autorisation
iam.serviceAccounts.actAs
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" mettre à jour un déclencheur, à condition qu'il dispose des autorisationsiam.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'autorisationiam.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 Autorisations élevées au moment de la compilation pour les utilisateurs qui emploient 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:
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 appeler indirectement un déclencheur lorsqu'ils transfèrent le nouveau code source dans 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 les fonctions Cloud Run, Cloud Run ou App Engine, et que vous souhaitez appeler votre application à partir de Cloud Build, vous avez besoin d'un compte de service spécifié par l'utilisateur configuré avec les autorisations requises pour l'authentification de service à service.
Pour savoir comment procéder, consultez Autoriser l'accès de service à service.
Étape suivante
- Apprenez-en plus sur les comptes de service spécifiés par l'utilisateur.
- Découvrez comment configurer l'accès au compte de service par défaut de Cloud Build.
- Découvrez comment configurer l'accès aux ressources Cloud Build.
- Apprenez-en plus sur les autorisations requises pour afficher les journaux de compilation.