Modification du compte de service Cloud Build par défaut

Cloud Build sélectionne automatiquement le service Cloud Build pour exécuter des compilations en votre nom, à moins que vous ne supprimiez ce comportement. Ce compte de service par défaut peut disposer d'autorisations inutilement étendues pour votre cas d'utilisation, comme l'accès aux dépôts Container Registry et bucket Cloud Storage de votre projet.

Le comportement par défaut de Cloud Build concernant l'utilisation des comptes de service dans les nouveaux projets a été modifié sur plusieurs semaines en mai et juin 2024. Ces améliorent la stratégie de sécurité par défaut de nos clients vers l'avant. Vous pouvez refuser ces modifications en configurant l'organisation contrainte de règle.

Avant ce changement, Cloud Build utilisait Compte de service par défaut spécifique à Cloud Build, désormais appelé l'ancien compte de service Cloud Build.

Après cette modification, Cloud Build utilise désormais 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 la première compilation votre projet après la modification, il utilisera le service Compute Engine de service par défaut pour les compilations envoyées à l'aide du l'API Cloud Build ou 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 avec 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 compte de service spécifié par l'utilisateur, en sélectionnant 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 service spécifié par l'utilisateur compte.

  • Déclenchement Vous devez spécifier un compte de service lorsque vous créez ou un déclencheur, sauf si le compte de service par défaut est l'ancien compte de service Cloud Build.

  • Nom du compte de service Cloud Build: Cloud Build compte de service sera dénommé ancien compte de service Cloud Build compte de service.

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 la 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é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 de l'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 d'administration, vous pouvez utiliser la console Google Cloud ou la 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 stratégie booléenne suivante :

  • Non appliquée: constraints/cloudbuild.disableCreateDefaultServiceAccount. Autorise l'utilisation de l'ancien compte de service Cloud Build dans les nouvelles projets.

  • Appliquée: constraints/cloudbuild.disableCreateDefaultServiceAccount. Désactive l'utilisation de l'ancien compte de service Cloud Build dans les nouvelles 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 modification est définitive pour tous les projets qui s'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 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 contraintes et règles d'administration, vous pouvez définir ces règles au niveau 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 règles booléennes contraintes:

  • constraints/cloudbuild.useBuildServiceAccount: configurez l'utilisation de la classe Ancien compte de service Cloud Build.
  • constraints/cloudbuild.useComputeServiceAccount: configurez l'utilisation de la classe 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
    • Appliquée: 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
  • Continuez à utiliser l'ancien compte de service Cloud Build. Si vous utilisez conscient des compromis en termes de sécurité, définissez les contraintes suivantes dans votre règle d'administration:

    • Non appliquée: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Non appliquée : constraints/cloudbuild.useComputeServiceAccount
    • Appliquée: 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 que à comprendre les compromis en termes de sécurité, définissez les contraintes suivantes dans votre règle d'administration:

    • Appliquée: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Appliquée: 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 d'un projet, vous pouvez utiliser la 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 la commande 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 :