É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 remplacez 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 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 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 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 refuser ces modifications en définissant les contraintes booléennes suivantes pour les règles d'administration :

  • Non appliquée : constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Non appliquée : 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 :

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

  • Utilisez le compte de service Compute Engine par défaut pour les compilations envoyées manuellement et celles déclenchées. Définissez les contraintes suivantes dans votre règle d'administration :

    • Non appliquée : constraints/cloudbuild.useBuildServiceAccount
    • Appliqué : 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écurisée. 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é : constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Non appliquée : constraints/cloudbuild.useComputeServiceAccount
    • Appliqué : constraints/cloudbuild.useBuildServiceAccount
  • 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. Assurez-vous de bien comprendre les compromis de sécurité impliqués, puis définissez les contraintes suivantes dans votre règle d'administration :

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

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