Modification du compte de service par défaut de Cloud Build

Cloud Build sélectionne automatiquement le compte de service Cloud Build pour exécuter des compilations en votre nom, sauf si vous remplacez ce comportement. Ce compte de service par défaut peut disposer d'autorisations inutilement étendues pour votre cas d'utilisation, telles que l'accès aux dépôts Container Registry et à tous les buckets 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é sur plusieurs semaines en mai et juin 2024. Ces modifications améliorent la stratégie de sécurité par défaut de nos clients à l'avenir. Vous pouvez désactiver ces modifications en configurant la contrainte de règle d'administration.

Avant ce changement, Cloud Build utilisait un compte de service spécifique à Cloud Build par défaut, 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 à une organisation:

  • Projets sans organisation Si vous exécutez le premier build de votre projet après la modification, ce projet utilisera le compte de service Compute Engine par défaut pour les builds envoyés à l'aide de l'API Cloud Build ou de la CLI Google Cloud. 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 le premier build de votre projet après la modification, ce projet utilisera le compte de service Compute Engine par défaut pour les builds envoyés à 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 le changement 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 le changement, 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 associés à une organisation Si vous avez exécuté la première compilation de 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 devez spécifier un compte de service lorsque vous créez ou mettez à 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 est 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 configurant une règle d'administration avec les contraintes choisies.

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

  • Non appliquée: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Non appliquée: constraints/cloudbuild.useComputeServiceAccount
  • Implémenté: constraints/cloudbuild.useBuildServiceAccount

Si vous ne pouvez pas ou ne souhaitez pas ajuster la règle d'administration de votre organisation, 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 créé par l'utilisateur dispose d'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 de l'organisation, vous pouvez utiliser la console Google Cloud ou la CLI Google Cloud:

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 stratégie booléenne suivante:

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

  • Implémenté: 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 ne concerne que les projets qui exécutent leur première compilation après le déploiement du changement. Si vous décidez de ne pas appliquer la contrainte de règle, le changement est permanent pour tous les projets qui exécutent leur premier build 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'administration, vous pouvez définir ces règles au niveau de l'organisation ou du projet.

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

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

  • 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 d'application sont combinées dans les scénarios suivants:

  • Utilisez le compte de service Compute Engine par défaut, à la fois pour les builds envoyés manuellement et pour les builds déclenchés. Définissez les contraintes suivantes dans votre règle d'administration:

    • Non appliquée: constraints/cloudbuild.useBuildServiceAccount
    • Implémenté: constraints/cloudbuild.useComputeServiceAccount
  • Utilisez un compte de service spécifié par l'utilisateur, à la fois pour les compilations envoyées manuellement et pour les compilations déclenchées. Il s'agit généralement de l'option la plus sûre. Définissez les contraintes suivantes dans votre règle d'administration:

    • Non appliquée: constraints/cloudbuild.useBuildServiceAccount
    • Non appliquée: constraints/cloudbuild.useComputeServiceAccount
  • Continuer à utiliser l'ancien compte de service Cloud Build Si vous êtes conscient des compromis de sécurité impliqués, définissez les contraintes suivantes dans votre règle d'administration:

    • Non appliquée: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Non appliquée: constraints/cloudbuild.useComputeServiceAccount
    • Implémenté: constraints/cloudbuild.useBuildServiceAccount
  • Pour les projets ayant activé l'API Cloud Build avant le changement, continuez à utiliser l'ancien compte de service Cloud Build et commencez à utiliser le compte de service Compute Engine par défaut pour les nouveaux projets. Assurez-vous de bien comprendre les compromis de sécurité impliqués, puis définissez les contraintes suivantes dans votre règle d'administration:

    • Implémenté: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Implémenté: constraints/cloudbuild.useComputeServiceAccount
    • Implémenté: constraints/cloudbuild.useBuildServiceAccount

Obtenir le compte de service par défaut actuel d'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 en cours:

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 éléments suivants: