Évolution du compte de service Cloud Build par défaut

Cloud Build sélectionne automatiquement le compte de service Cloud Build pour exécuter des compilations en votre nom, sauf si vous modifiez ce comportement. Ce compte de service par défaut peut disposer d'autorisations inutilement larges pour votre cas d'utilisation, comme l'accès à n'importe quel bucket Cloud Storage de votre projet.

Le comportement par défaut concernant la façon dont Cloud Build utilise les comptes de service dans les nouveaux projets a été modifié au cours de plusieurs semaines en mai et juin 2024. Ces modifications améliorent la stratégie de sécurité par défaut de nos clients. Vous pouvez désactiver ces modifications en configurant la contrainte de règle d'administration.

Avant cette modification, Cloud Build utilisait par défaut un compte de service spécifique à Cloud Build, désormais appelé ancien compte de service Cloud Build.

Après ce changement, Cloud Build utilise désormais le compte de service Compute Engine par défaut comme compte de service par défaut.

L'impact sur vos projets dépend de votre appartenance ou non à une organisation :

  • Projets sans organisation Si vous exécutez la première compilation dans votre projet après la modification, ce projet utilisera par défaut le compte de service Compute Engine pour les compilations envoyées à l'aide de l'API Cloud Build ou de la Google Cloud CLI. Ces projets n'auront pas la possibilité d'utiliser l'ancien compte de service Cloud Build, mais pourront utiliser un compte de service spécifié par l'utilisateur.

  • Projets associés à une organisation Si vous exécutez la première compilation dans votre projet après la modification, ce projet utilisera par défaut le compte de service Compute Engine pour les compilations envoyées à l'aide de l'API Cloud Build ou de la Google Cloud CLI. Vous pouvez utiliser un compte de service spécifié par l'utilisateur ou désactiver la modification en activant le compte de service Cloud Build dans votre organisation.

  • Projets existants sans organisation : Si vous avez exécuté la première compilation de votre projet avant la modification, ce projet continuera avec l'ancien comportement, en utilisant l'ancien compte de service Cloud Build par défaut pour toutes vos compilations. Vous pouvez continuer à utiliser un compte de service spécifié par l'utilisateur en sélectionnant le compte de service Compute Engine ou en créant le vôtre.

  • Projets existants avec une organisation : Si vous avez exécuté la première compilation dans votre projet avant le changement, ce projet continuera avec l'ancien comportement, en utilisant l'ancien compte de service Cloud Build par défaut. Vous pouvez également continuer à utiliser un compte de service spécifié par l'utilisateur.

  • Déclenchement Vous devrez spécifier un compte de service lorsque vous créerez ou mettrez à jour un déclencheur, sauf si le compte de service par défaut de votre projet est l'ancien compte de service Cloud Build.

  • Nom du compte de service Cloud Build : le compte de service Cloud Build sera appelé ancien compte de service Cloud Build.

Que devez-vous faire ?

Si vous faites partie d'une organisation, celle-ci peut configurer le comportement de tous les projets en définissant une règle d'administration avec les contraintes choisies.

Votre organisation peut désactiver ces modifications en définissant les contraintes booléennes suivantes pour les règles d'administration :

  • Non appliqué : constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Non appliqué : constraints/cloudbuild.useComputeServiceAccount
  • Appliqué : constraints/cloudbuild.useBuildServiceAccount

Si vous ne pouvez pas ou ne souhaitez pas ajuster la règle d'administration et que vous activez l'API Cloud Build après la modification, vérifiez que le compte de service Compute Engine par défaut ou le compte de service que vous avez créé dispose des autorisations suffisantes pour votre compilation. En particulier, l'utilisateur qui envoie la compilation doit disposer de l'autorisation iam.serviceAccounts.actAs sur le compte de service.

Nouvelles contraintes liées aux règles d'administration

Cloud Build a introduit de nouvelles contraintes booléennes pour les règles d'administration afin de configurer les éléments suivants :

  • Possibilité d'utiliser l'ancien compte de service Cloud Build.
  • Compte de service par défaut pour tous les projets d'une organisation.

Pour modifier les règles d'administration, vous pouvez utiliser la console Google Cloud ou Google Cloud CLI :

Pour en savoir plus sur les règles d'administration, consultez la présentation du service de règles d'administration.

Configurer la disponibilité de l'ancien compte de service Cloud Build

Pour configurer la disponibilité de l'ancien compte de service Cloud Build lorsque vous activez l'API Cloud Build, Cloud Build introduit la contrainte de règle booléenne suivante :

  • Non appliqué : constraints/cloudbuild.disableCreateDefaultServiceAccount. Permet d'utiliser l'ancien compte de service Cloud Build dans les nouveaux projets.

  • Appliqué : constraints/cloudbuild.disableCreateDefaultServiceAccount. Désactive l'utilisation de l'ancien compte de service Cloud Build dans les nouveaux projets. Il s'agit de la valeur par défaut de la contrainte.

Cette contrainte n'affecte que les projets qui exécutent leur première compilation après le déploiement de la modification. Si vous décidez de ne pas appliquer la contrainte de règle, la modification est permanente pour tous les projets qui exécutent leur première compilation lorsque cette configuration est active. Vous ne pouvez pas désactiver la disponibilité de l'ancien compte de service Cloud Build dans un projet où il était auparavant disponible. Toutefois, même si le compte de service est disponible, vous pouvez empêcher les utilisateurs de votre organisation de l'utiliser, comme décrit dans la section suivante.

Comme pour toutes les règles et contraintes d'organisation, vous pouvez définir ces règles au niveau de l'organisation ou du projet.

Configurer le compte de service par défaut pour une organisation

Pour configurer le compte de service par défaut utilisé dans une organisation, Cloud Build introduit deux nouvelles contraintes booléennes de stratégie :

  • constraints/cloudbuild.useBuildServiceAccount : configurez l'utilisation de l'ancien compte de service Cloud Build.
  • constraints/cloudbuild.useComputeServiceAccount : configurez l'utilisation du compte de service Compute Engine par défaut.

Vous pouvez configurer ces règles indépendamment les unes des autres, mais elles sont plus utiles lorsque les règles de mesure d'application sont combinées dans les scénarios suivants :

  • Option la plus sécurisée : utilisez un compte de service spécifié par l'utilisateur pour les compilations envoyées manuellement et celles déclenchées. Pour ce faire, définissez les contraintes suivantes dans votre règle d'administration :

    • Non appliqué : constraints/cloudbuild.useBuildServiceAccount
    • Non appliqué : constraints/cloudbuild.useComputeServiceAccount
  • Compte de service Compute Engine par défaut : pour utiliser le compte de service Compute Engine par défaut pour les compilations envoyées manuellement et les compilations déclenchées, définissez les contraintes suivantes dans votre règlement de l'organisation :

    • Non appliqué : constraints/cloudbuild.useBuildServiceAccount
    • Appliqué : constraints/cloudbuild.useComputeServiceAccount
  • Ancien compte de service Cloud Build : si vous comprenez les inconvénients associés en termes de sécurité, définissez les contraintes suivantes dans votre règle d'administration :

    • Non appliqué : constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Non appliqué : constraints/cloudbuild.useComputeServiceAccount
    • Appliqué : constraints/cloudbuild.useBuildServiceAccount
  • Anciens comptes de service et comptes de service Compute Engine par défaut : continuez à utiliser l'ancien compte de service Cloud Build pour les projets pour lesquels l'API Cloud Build a été activée avant le changement, et commencez à utiliser le compte de service Compute Engine par défaut pour les nouveaux projets. Si vous comprenez les inconvénients associés en termes de sécurité, définissez les contraintes suivantes dans votre règle d'administration :

    • Appliqué : constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Appliqué : constraints/cloudbuild.useComputeServiceAccount
    • Appliqué : constraints/cloudbuild.useBuildServiceAccount

Consignes concernant les rôles IAM

La règle d'administration iam.automaticIamGrantsForDefaultServiceAccounts empêche l'attribution du rôle Éditeur (roles/editor) à certains comptes de service par défaut lors de leur création. Cette stratégie est activée dans les organisations depuis le 3 mai 2024 et s'applique aux comptes de service Compute Engine et App Engine par défaut créés le 3 mai 2024 ou après. Nous vous recommandons de laisser ce paramètre activé, car le rôle d'éditeur est très large et accorde plus d'autorisations que nécessaire pour la plupart des cas d'utilisation.

Cette règle d'administration ne s'applique pas à l'ancien compte de service Cloud Build, car ce compte de service ne dispose pas du rôle "Éditeur" par défaut. Toutefois, l'ancien compte de service Cloud Build dispose du rôle de compte de service Cloud Build (roles/cloudbuild.builds.builder) par défaut, qui dispose également d'un large éventail d'autorisations. Si vous utilisez l'ancien compte de service Cloud Build, nous vous recommandons de vérifier si le rôle Compte de service Cloud Build est nécessaire pour votre cas d'utilisation ou si vous pouvez le remplacer par un rôle disposant de moins d'autorisations.

Pour en savoir plus, consultez Restreindre l'utilisation des comptes de service IAM et Utiliser IAM en toute sécurité.

Obtenir le compte de service par défaut actuel pour un projet

Pour déterminer le compte de service que Cloud Build utilise par défaut pour un projet, vous pouvez utiliser Google Cloud CLI ou l'API Cloud Build :

CLI gcloud

Exécutez la commande suivante pour obtenir le compte de service par défaut du projet actuel :

gcloud builds get-default-service-account

API Cloud Build

Utilisez cURL pour appeler l'API Cloud Build :

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/defaultServiceAccount

Remplacez les valeurs d'espace réservé par les suivantes :