Configurer des comptes de service App Engine

Les applications App Engine nécessitent un compte de service pour accéder à d'autres services Google Cloud et exécuter des tâches.

Il existe deux types de comptes de service dans App Engine. Vous pouvez configurer n'importe quel compte de service de votre projet Cloud en tant que compte de service par défaut ou par version au niveau de l'application :

  • Compte de service par défaut au niveau de l'application : ce compte de service est utilisé pour tous vos services déployés lorsque vous ne configurez pas de compte de service par version. Vous pouvez choisir d'attribuer un compte de service que vous avez créé ou d'utiliser le compte de service par défaut créé automatiquement lors du déploiement initial d'un service dans votre projet Cloud. Par exemple, le compte de service App Engine par défaut (PROJECT_ID@appspot.gserviceaccount.com).

  • Compte de service sépcifique à une version : compte de service configuré en tant qu'identité pour une version spécifique de votre service déployé. Lorsque vous déployez une version existante ou nouvelle, vous pouvez spécifier un compte de service qui agit en tant qu'identité de cette version. Par exemple, si une version nécessite des autorisations différentes de celles du compte de service par défaut au niveau de l'application, vous pouvez attribuer un compte de service spécifique à cette version.

Afficher les comptes de service configurés

Pour afficher le compte de service par défaut actuel au niveau de l'application, exécutez la commande gcloud app describe.

Pour afficher le compte de service utilisé par une version déployée, procédez comme suit :

gcloud

Exécutez la commande gcloud app versions describe :

  gcloud app versions describe VERSION_ID --service=SERVICE_NAME

Remplacez :

  • VERSION_ID par l'ID de la version ;
  • SERVICE_NAME par le nom du service que vous avez créé.

Console

  1. Accédez à l'onglet Versions d'App Engine dans la console. Accéder à la page "Versions"
  2. Recherchez l'adresse e-mail du compte de service App Engine spécifique à la version. Exemple : SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Attribuer un compte de service par défaut au niveau de l'application

Par défaut, le compte de service par défaut au niveau de l'application est le compte de service PROJECT_ID@appspot.gserviceaccount.com créé automatiquement. Vous pouvez configurer un autre compte de service en tant que compte de service par défaut au niveau de l'application à l'aide de Google Cloud CLI, de la console Google Cloud ou de l'API Admin.

Spécifier un compte de service par défaut au niveau de l'application lors de sa création

Au cours du processus initial de création de l'application App Engine, vous pouvez choisir de configurer un compte de service que vous avez créé ou d'utiliser le compte de service PROJECT_ID@appspot.gserviceaccount.com créé automatiquement comme compte de service par défaut.

Pour créer une application App Engine et configurer un compte de service par défaut au niveau de l'application, vous pouvez utiliser l'une des options suivantes :

gcloud

Exécutez la commande gcloud app create :

gcloud app create --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Remplacez :

  • SERVICE_ACCOUNT_NAME par le nom du compte de service que vous avez créé ;
  • PROJECT_ID par l'ID du projet Google Cloud auquel vous souhaitez attribuer le compte de service.

Console

  1. Accédez à la page App Engine.

    Accéder à App Engine

  2. Créez un projet Google Cloud.

  3. Dans la section Créer une application, sélectionnez un compte de service dans Identité et accès à l'API.

Mettre à jour le compte de service par défaut au niveau de l'application

Pour mettre à jour le compte de service par défaut au niveau de l'application, vous pouvez utiliser l'une des méthodes suivantes :

gcloud

Exécutez la commande gcloud app update.

    gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Remplacez :

  • SERVICE_ACCOUNT_NAME par le nom du compte de service que vous avez créé ;
  • PROJECT_ID par l'ID du projet Google Cloud auquel vous souhaitez attribuer le compte de service.

Chaque nouvelle version que vous déployez ici utilise le nouveau compte de service par défaut au niveau de l'application, sauf si vous attribuez explicitement un compte de service spécifique à cette version.

Console

  1. Accédez à l'onglet Paramètres des applications d'App Engine, puis cliquez sur Modifier les paramètres de l'application.

    Accéder à la page "Paramètres de l'application"

  2. Choisissez un compte de service par défaut au niveau de l'application dans Sélectionner un compte de service, puis cliquez sur Enregistrer.

    Vous êtes redirigé vers l'onglet Paramètres des applications, où s'affiche l'adresse e-mail du compte de service par défaut au niveau de l'application que vous avez mis à jour. Exemple : SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    Chaque nouvelle version que vous déployez ici utilise le nouveau compte de service par défaut au niveau de l'application, sauf si vous attribuez explicitement un compte de service spécifique à cette version.

Effectuer un déploiement à l'aide d'un compte de service spécifique à une version

Vous ne pouvez définir un compte de service spécifique à une version que pendant le déploiement de nouvelles versions. L'utilisation d'un compte de service spécifique à une version vous permet d'accorder des droits différents aux versions de l'application en fonction des tâches spécifiques qu'elles effectuent, et d'éviter d'en accorder plus que nécessaire.

Vous devez disposer d'un compte de service existant avant de déployer votre application.

Définir un compte de service spécifique à une version

gcloud

Exécutez la commande gcloud app deploy :

  gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Remplacez :

  • SERVICE_ACCOUNT_NAME par le nom du compte de service que vous avez créé ;
  • PROJECT_ID par l'ID du projet Google Cloud auquel vous souhaitez attribuer le compte de service.

app.yaml

Dans votre fichier app.yaml, spécifiez votre compte de service en ajoutant l'élément service_account :

service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Remplacez :

  • SERVICE_ACCOUNT_NAME par le nom du compte de service que vous avez créé ;
  • PROJECT_ID par l'ID du projet Google Cloud auquel vous souhaitez attribuer le compte de service.

appengine-web.xml

Si vous utilisez les environnements d'exécution Java et incluez les anciens services groupés App Engine, spécifiez votre compte de service en ajoutant l'élément <service-account> dans votre fichier appengine-web.xml :

<service-account>SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com</service-account>

Remplacez :

  • SERVICE_ACCOUNT_NAME par le nom du compte de service que vous avez créé ;
  • PROJECT_ID par l'ID du projet Google Cloud auquel vous souhaitez attribuer le compte de service.

Compte de service App Engine par défaut

Par défaut, le compte de service PROJECT_ID@appspot.gserviceaccount.com créé automatiquement dispose du rôle Éditeur dans le projet. Si vous déployez votre application App Engine à l'aide du compte de service PROJECT_ID@appspot.gserviceaccount.com créé automatiquement, elle peut accéder à toutes les ressources du projet.

Si vous utilisez une contrainte de règle d'administration pour empêcher l'attribution automatique du rôle d'éditeur par défaut pour le compte de service PROJECT_ID@appspot.gserviceaccount.com créé automatiquement, vous devez mettre à jour les rôles manuellement. Les rôles que vous attribuez au compte de service App Engine par défaut doivent permettre à l'application d'accéder aux ressources requises. Pour savoir comment attribuer des rôles aux comptes de service et à d'autres comptes principaux, consultez la page Gérer l'accès aux comptes de service.

Pour modifier les autorisations, ou supprimer et restaurer vos comptes de service, consultez la page Créer et gérer des comptes de service.