Modification du compte de service Cloud Build

Cloud Build sélectionne automatiquement le compte de service Cloud Build pour exécuter des compilations en votre nom, sauf si vous ignorez ce comportement. Ce compte de service peut disposer d'autorisations inutilement étendues pour votre cas d'utilisation, telles que l'accès à Cloud Source Repositories et à n'importe quel bucket Cloud Storage de votre projet.

Le comportement par défaut de la manière 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 refuser ces modifications en configurant la contrainte de règle d'administration.

L'impact sur vos projets varie selon que vous faites partie d'une organisation ou non:

  • Projets sans organisation Si vous activez l'API Cloud Build sur vos projets après la modification, vous utiliserez le compte de service Compute Engine par défaut 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 peuvent utiliser un compte de service spécifié par l'utilisateur.

  • Projets avec une organisation Si vous activez l'API Cloud Build sur vos projets après la modification, vous utiliserez le compte de service Compute Engine par défaut 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 refuser la modification en activant le compte de service Cloud Build dans votre organisation.

  • Projets existants sans organisation. Si vous avez activé l'API Cloud Build sur vos projets avant la modification, vous conserverez 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 activé l'API Cloud Build sur vos projets avant la modification, vous continuerez à utiliser 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.

  • API. L'activation de l'API Cloud Build active également l'API Identity and Access Management.

  • 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 configurant une règle d'administration avec les contraintes choisies.

Votre organisation peut refuser ces modifications en définissant les boolean constraints de la règle d'administration suivantes:

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

Si vous ne pouvez pas ou ne souhaitez pas modifier 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 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 à configurer:

  • 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 introduira la contrainte de règle booléenne suivante:

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

  • Appliquée: 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 activent l'API Cloud Build 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 activent l'API lorsque cette configuration est active. Vous ne pouvez pas désactiver la disponibilité de l'ancien compte de service Cloud Build sur un projet pour lequel ce compte de service é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.

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 stratégies indépendamment les unes des autres, mais elles sont particulièrement utiles lorsque les règles d'application sont combinées dans les cas suivants:

  • Utilisez 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ègle d'administration:

    • Non appliquée: constraints/cloudbuild.useBuildServiceAccount
    • Appliquée: constraints/cloudbuild.useComputeServiceAccount
  • Utilisez un compte de service spécifié par l'utilisateur pour les compilations envoyées manuellement et 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 êtes 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
  • Continuez à utiliser l'ancien compte de service Cloud Build pour les projets qui avaient activé l'API Cloud Build avant la modification et commencez à utiliser le compte de service Compute Engine par défaut pour les nouveaux projets. Assurez-vous de bien 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
    • Appliquée: 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:

gcloud CLI

Exécutez la commande suivante pour obtenir le compte de service par défaut pour le 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 suivantes: