Comptes de service

Cette page décrit les comptes de service, les champs d'application d'accès et les rôles Identity and Access Management (IAM) qui s'appliquent aux comptes de service. Pour savoir comment créer et utiliser des comptes de service, consultez la documentation Créer et activer des comptes de service pour les instances.

Un compte de service est un compte spécial pouvant être utilisé par des services et des applications exécutés sur votre instance Compute Engine, pour interagir avec d'autres API Google Cloud Platform. Les applications peuvent exploiter les identifiants du compte de service pour avoir accès à un ensemble d'API et effectuer des actions, dans la limite des autorisations accordées au compte de service et à l'instance de machine virtuelle. De plus, vous pouvez créer des règles de pare-feu pour autoriser ou refuser le trafic vers et depuis des instances en fonction du compte de service que vous associez à chaque instance.

Que sont les comptes de service ?

Un compte de service est une identité qu'une instance ou une application peut utiliser pour exécuter des requêtes API en votre nom. Cette identité permet d'identifier les applications exécutées sur vos instances de machines virtuelles dans d'autres services Google Cloud Platform. Par exemple, si vous créez une application qui lit et écrit des fichiers sur Google Cloud Storage, celle-ci doit d'abord être authentifiée dans l'API Google Cloud Storage. Vous pouvez créer un compte de service et lui accorder l'accès à l'API Cloud Storage. Vous devez ensuite mettre à jour le code de votre application de sorte à transmettre les identifiants du compte de service à l'API Cloud Storage. Votre application s'authentifie en toute simplicité dans l'API sans intégrer de clés secrètes ni d'identifiants utilisateur à l'instance, à l'image ou au code de votre application.

Si vos comptes de service disposent des autorisations IAM nécessaires, ils peuvent créer et gérer des instances et d'autres ressources. Les comptes de service ne peuvent modifier ou supprimer des ressources que si vous leur accordez les autorisations IAM nécessaires au niveau du projet ou de la ressource. Vous pouvez également modifier le compte de service associé à une instance.

Une instance ne peut posséder qu'un seul compte de service, et celui-ci doit avoir été créé dans le même projet que l'instance.

Deux types de comptes de service sont disponibles pour les instances Compute Engine :

  • Comptes de service gérés par l'utilisateur
  • Comptes de service gérés par Google

Comptes de service gérés par l'utilisateur

Les comptes de service gérés par l'utilisateur incluent les nouveaux comptes de service que vous créez explicitement et le compte de service Compute Engine par défaut.

Nouveaux comptes de service

Vous pouvez créer et gérer vos propres comptes de service grâce à Google Identity and Access Management (IAM). Après avoir créé un compte, attribuez-lui des rôles IAM et configurez les instances à exécuter en tant que compte de service. Les applications qui sont exécutées sur des instances activées avec le compte de service peuvent utiliser les identifiants du compte pour envoyer des requêtes à d'autres API Google.

Pour créer un compte de service et le configurer, consultez la documentation Créer et activer des comptes de service pour les instances.

Compte de service Compute Engine par défaut

Une fois créés, les projets disposent d'un compte de service Compute Engine par défaut, identifiable par l'adresse e-mail suivante :

[PROJECT_NUMBER]-compute@developer.gserviceaccount.com

Le compte de service par défaut est créé par Google, et il est ajouté automatiquement à votre compte. Vous bénéficiez néanmoins d'un contrôle total sur votre compte.

Lorsque vous créez une instance à l'aide de l'outil de ligne de commande gcloud ou de la console Google Cloud Platform, cette instance est automatiquement activée pour s'exécuter en tant que compte de service par défaut, avec les champs d'application d'accès suivants :

  • Accès en lecture seule à Google Cloud Storage :
    https://www.googleapis.com/auth/devstorage.read_only
  • Accès en écriture pour écrire des journaux Compute Engine :
    https://www.googleapis.com/auth/logging.write
  • Accès en écriture pour publier des données de métriques dans vos projets Google Cloud :
    https://www.googleapis.com/auth/monitoring.write
  • Accès en lecture seule aux fonctionnalités Service Management requises pour Google Cloud Endpoints(alpha) :
    https://www.googleapis.com/auth/service.management.readonly
  • Accès en lecture/écriture aux fonctionnalités Service Control requises pour Google Cloud Endpoints(alpha) :
    https://www.googleapis.com/auth/servicecontrol

Le compte de service par défaut peut être modifié dans la console Google Cloud Platform.

Lorsque vous créez une instance en envoyant directement une requête à l'API sans utiliser l'outil de ligne de commande gcloud ni la console Google Cloud Platform, le compte de service par défaut n'est pas activé avec l'instance. En revanche, vous pouvez toujours activer ce dernier en le spécifiant explicitement dans la charge utile de la requête.

Vous avez la possibilité de supprimer ce compte de service de votre projet, mais cela peut entraîner l'échec des applications qui dépendent des identifiants du compte de service. Si vous supprimez accidentellement le compte de service par défaut, vous pouvez exécuter gcloud services enable compute.googleapis.com pour le recréer. Vous devez ensuite redémarrer les instances existantes pour activer le nouveau compte de service.

En résumé, les caractéristiques du compte de service par défaut sont les suivantes :

  • Il est automatiquement créé par le projet de la console Google Cloud Platform. Il possède un nom et une adresse e-mail qui ont été générés automatiquement.
  • Il est automatiquement ajouté en tant que collaborateur sur votre projet.
  • Il est compatible avec toutes les instances créées par l'outil de ligne de commande gcloud et la console GCP avec un ensemble d'autorisations spécifique. Vous pouvez remplacer ce paramètre en spécifiant un autre compte de service lors de la création de l'instance ou en désactivant explicitement les comptes de service pour l'instance.

Comptes de service gérés par Google

Ces comptes de service sont créés et gérés par Google, et attribués automatiquement à votre projet. Ces comptes représentent différents services Google, et chacun d'entre eux dispose d'un certain niveau d'accès à votre projet Google Cloud Platform.

Compte de service des API Google

Hormis le compte de service par défaut, tous les projets compatibles avec Compute Engine sont dotés d'un compte de service des API Google. Il peut être identifié à l'aide de l'adresse e-mail :

[PROJECT_NUMBER]@cloudservices.gserviceaccount.com

Ce compte de service est spécifiquement conçu pour exécuter les processus Google internes en votre nom. Le compte appartient à Google et ne figure pas dans la section Comptes de service de la console GCP. Par défaut, le compte bénéficie automatiquement du rôle de collaborateur de projet. Il est répertorié dans la section IAM de la console GCP. Ce compte de service est uniquement supprimé lorsque vous supprimez le projet. En revanche, vous pouvez modifier les rôles attribués à ce compte, y compris révoquer tous les accès à votre projet.

Certaines ressources dépendent de ce compte de service et des autorisations de modification accordées par défaut au compte de service. Par exemple, les groupes d'instances gérés et l'autoscaling utilisent les identifiants de ce compte pour créer, supprimer et gérer des instances. Si vous révoquez des autorisations pour le compte de service ou si vous modifiez les autorisations de manière à ne pas autoriser la création d'instances, les groupes d'instances gérés et l'autoscaling cesseront de fonctionner.

C'est pourquoi vous ne devez pas modifier les rôles de ce compte de service.

Compte de service Compute Engine System

Tous les projets pour lesquels l'API Compute Engine est activée disposent d'un compte de service Compute Engine System qui peut être identifié à l'aide de l'adresse e-mail suivante :

service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com

Ce compte de service est spécifiquement conçu pour que Google Compute Engine remplisse ses fonctions de service sur votre projet. Il repose sur la stratégie IAM relative aux agents de service attribuée à votre projet Google Cloud. Il s'agit également du compte de service permettant à Compute Engine d'accéder au compte de service détenu par le client sur les instances de VM. Ce compte appartient à Google, mais il est spécifique à votre projet. Il est répertorié dans les sections "Comptes de service" et "IAM" de la console GCP. Par défaut, le compte dispose automatiquement du rôle compute.serviceAgent sur votre projet.

Ce compte de service n'est supprimé que lorsque vous supprimez votre projet. Vous pouvez modifier les rôles attribués à ce compte et révoquer tous les accès à votre projet depuis le compte. La révocation ou la modification des autorisations de ce compte de service empêche Compute Engine d'accéder aux identités de vos comptes de service sur vos VM et peut entraîner des pannes de logiciels exécutés sur vos VM.

C'est pourquoi vous ne devez pas modifier les rôles de ce compte de service.

Autorisations de compte de service

Lorsque vous configurez une instance pour qu'elle s'exécute en tant que compte de service, le niveau d'accès du compte de service est déterminé par la combinaison des champs d'application d'accès attribués à l'instance et des rôles IAM accordés au compte de service. Vous devez configurer les champs d'application d'accès et les rôles IAM pour réussir à configurer une instance qui s'exécute en tant que compte de service. En bref :

  • Les champs d'application d'accès autorisent l'accès potentiel d'une instance aux méthodes d'API.
  • IAM limite cet accès aux rôles attribués au compte de service.

Les champs d'application d'accès et les rôles IAM sont décrits en détail dans les sections ci-dessous.

Vous pouvez faire votre choix parmi de nombreux champs d'application d'accès ou simplement configurer le champ d'application d'accès cloud-platform, qui permet d'autoriser l'accès à tous les services Cloud Platform et de le limiter en attribuant des rôles IAM :

https://www.googleapis.com/auth/cloud-platform

Par exemple, si vous avez activé le champ d'application d'accès cloud-platform sur une instance, puis attribué les rôles IAM suivants :

  • roles/compute.instanceAdmin.v1
  • roles/storage.objectViewer
  • roles/compute.networkAdmin

Le compte de service dispose uniquement des autorisations accordées par les trois rôles IAM. Le compte ne peut pas effectuer d'actions en dehors de ces rôles en dépit du champ d'application d'accès Cloud Platform.

En revanche, si vous attribuez un champ d'application plus restreint, tel que le champ d'application en lecture seule Cloud Storage (https://www.googleapis.com/auth/devstorage.read_only), et que vous définissez ensuite le rôle roles/storage.objectAdmin sur le compte de service, l'instance ne sera pas en mesure de gérer les objets Google Cloud Storage en dépit du rôle roles/storage.ObjectAdmin. En effet, le champ d'application en lecture seule Cloud Storage n'autorise pas l'instance à manipuler les données Cloud Storage.

En règle générale, chaque documentation relative à une méthode d'API répertorie également les champs d'application requis pour cette méthode. Par exemple, la méthode instances.insert fournit une liste des champs d'application valides dans la section Autorisation.

Champs d'application d'accès

Les champs d'application d'accès représentent l'ancienne méthode de spécification des autorisations associées à votre instance. Avant l'existence des rôles IAM, les champs d'application d'accès étaient le seul moyen permettant d'accorder des autorisations aux comptes de service. Bien qu'il ne s'agisse pas de la méthode la plus courante pour accorder des autorisations à l'heure actuelle, vous devez toujours définir des champs d'application d'accès lorsque vous configurez une instance pour qu'elle s'exécute en tant que compte de service.

Les champs d'application d'accès s'appliquent par instance : ceux que vous définissez lors de la création d'une instance sont exploitables uniquement pendant la durée de vie de cette instance. Les champs d'application d'accès ne fonctionnent que si vous avez activé l'API correspondante sur le projet auquel appartient le compte de service. Par exemple, accorder un champ d'application d'accès à Google Cloud Storage sur une instance de machine virtuelle permet à l'instance d'appeler l'API Cloud Storage uniquement si vous avez activé l'API Cloud Storage sur le projet. Si l'API n'est pas activée sur le projet, le champ d'application d'accès n'a aucun effet.

Exemples de champs d'application d'accès :

  • https://www.googleapis.com/auth/cloud-platform – Accès complet à toutes les ressources Google Cloud Platform
  • https://www.googleapis.com/auth/compute – Accès aux méthodes Google Compute Engine avec contrôle total
  • https://www.googleapis.com/auth/compute.readonly – Accès en lecture seule aux méthodes Google Compute Engine
  • https://www.googleapis.com/auth/devstorage.read_only – Accès en lecture seule à Google Cloud Storage
  • https://www.googleapis.com/auth/logging.write – Accès en écriture aux journaux Google Compute Engine

Rôles IAM

Outre la configuration des champs d'application d'accès, vous devez attribuer les rôles IAM appropriés à un compte de service pour déterminer le niveau d'accès du compte. Par exemple, vous pouvez attribuer des rôles IAM à un compte de service pour gérer des objets et/ou des buckets Google Cloud Storage, ce qui limite le compte aux autorisations accordées par ces rôles.

Les rôles IAM sont spécifiques au compte. Dès que vous attribuez un rôle IAM à un compte de service, toute instance exécutée en tant que compte de service peut donc utiliser ce rôle. Gardez également à l'esprit les points suivants :

  • Certains rôles IAM sont actuellement en version bêta.

    Si aucun rôle IAM ne correspond au niveau d'accès que vous souhaitez, vous pouvez attribuer l'un des rôles primitifs, tel que celui de collaborateur de projet.

  • Vous devez définir des champs d'application d'accès sur l'instance pour autoriser l'accès.

    Vous ne pouvez pas définir uniquement des rôles IAM sur le compte de service et omettre les champs d'application d'accès lors de la création de l'instance de machine virtuelle. Le niveau d'accès à un compte de service est déterminé par la combinaison des champs d'application d'accès et des rôles IAM. Vous devez donc les configurer pour que le compte de service fonctionne correctement.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine