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 spécifique à 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
- Accédez à l'onglet Versions d'App Engine dans la console. Accéder à la page "Versions"
- 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
Accédez à la page App Engine.
Créez un projet Google Cloud.
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
Accédez à l'onglet Paramètres des applications d'App Engine, puis cliquez sur Modifier les paramètres de l'application.
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. Votre compte de service spécifique à une version doit se trouver dans le même projet que celui dans lequel vous déployez 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. Votre compte de service spécifique à une version doit se trouver dans le même projet que celui dans lequel vous déployez votre application.
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. Votre compte de service spécifique à une version doit se trouver dans le même projet que celui dans lequel vous déployez votre application.
Compte de service App Engine par défaut
Le compte de service App Engine par défaut est créé automatiquement lorsque vous utilisez App Engine.
Selon la configuration de vos règles d'administration, le compte de service par défaut peut se voir attribuer automatiquement le rôle Éditeur sur votre projet. Nous vous recommandons vivement de désactiver l'attribution automatique des rôles en appliquant la contrainte de règle d'administration iam.automaticIamGrantsForDefaultServiceAccounts
. Si vous avez créé votre organisation après le 3 mai 2024, cette contrainte est appliquée par défaut.
Si vous désactivez l'attribution automatique de rôles, vous devez choisir les rôles à attribuer aux comptes de service par défaut, puis attribuer ces rôles vous-même.
Si le compte de service par défaut dispose déjà du rôle Éditeur, nous vous recommandons de le remplacer par des rôles moins permissifs. Pour modifier les rôles du compte de service en toute sécurité, utilisez Policy Simulator pour voir l'impact de la modification, puis attribuez et révoquez les rôles appropriés.
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 projets, aux dossiers et aux organisations.
Pour modifier les autorisations, ou supprimer et restaurer vos comptes de service, consultez la page Créer et gérer des comptes de service.