À propos des comptes de service dans GKE


Cette page décrit les comptes de service dans Google Kubernetes Engine (GKE), qui fournissent des identités pour les applications.

Les comptes de service sont des identités destinées à être utilisées par des applications plutôt que par des personnes. Dans GKE, vous interagissez avec les comptes de service Kubernetes et avec les comptes de service IAM (Identity and Access Management).

Comptes de service Kubernetes et comptes de service IAM

Le tableau suivant décrit les principales différences entre les comptes de service Kubernetes et les comptes de service IAM :

Types de comptes de service dans GKE
Compte de service Kubernetes
  • Objet ServiceAccount sur le serveur d'API Kubernetes
  • Limité à un espace de noms Kubernetes dans un cluster
  • Fournit une identité à utiliser par les pods à l'intérieur du cluster
Compte de service IAM
  • Gérer à l'aide de l'API IAM
  • Est associé à un projet Google Cloud
  • Fournit une identité pour les applications du projet

Comptes de service Kubernetes

Les comptes de service Kubernetes sont gérés au niveau du cluster et existent sur le serveur d'API Kubernetes en tant qu'objets ServiceAccount. La documentation Kubernetes et la documentation GKE utilisent souvent le terme ServiceAccount pour distinguer ces ressources Kubernetes des comptes de service d'autres environnements tels que IAM.

Vous créez un ServiceAccount Kubernetes dans un espace de noms, puis vous attribuez ce ServiceAccount à un pod à l'aide du champ serviceAccountName du fichier manifeste du pod. Le processus kubelet sur le nœud obtient un jeton de support de courte durée pour le ServiceAccount attribué et installe le jeton en tant que volume projeté dans le pod.

Le jeton de support de courte durée est un jeton Web JSON (JWT) signé par le serveur d'API, qui est un fournisseur OpenID Connect (OIDC). Pour valider le jeton de support, obtenez la clé de validation publique du cluster en appelant la méthode projects.locations.clusters.getJwks dans l'API GKE.

Mettre en œuvre une rotation des ServiceAccount Kubernetes

Si les identifiants d'un compte de service Kubernetes sont compromis, utilisez l'une des options suivantes pour révoquer les identifiants :

  • Recréez vos pods : le jeton de support est lié à chaque UID de pod unique. Par conséquent, la recréation des pods invalide les identifiants précédents.
  • Recréer le compte de service Kubernetes : le jeton de support est lié à l'UID de l'objet ServiceAccount dans l'API Kubernetes. Supprimez le ServiceAccount et créez un ServiceAccount portant le même nom. Les jetons précédents ne sont plus valides, car l'UID du nouveau ServiceAccount est différent.
  • Mettre en œuvre une rotation des identifiants : cette opération révoque tous les identifiants du compte de service Kubernetes de votre cluster. La rotation modifie également le certificat CA et l'adresse IP de votre cluster. Pour en savoir plus, consultez la section Rotation des identifiants.

Comptes de service IAM

Les comptes de service IAM sont gérés au niveau du projet à l'aide de l'API Cloud IAM. Vous pouvez utiliser ces comptes de service pour effectuer des actions telles que l'appel automatisé des API Google Cloud et la gestion des autorisations pour les applications exécutées dans les produits Google Cloud.

Pour en savoir plus, consultez la présentation des comptes de service IAM.

Agents de service GKE

Un agent de service IAM est un compte de service IAM géré par Google Cloud.

GKE utilise l'agent de service de Kubernetes Engine pour gérer le cycle de vie des ressources de cluster en votre nom, telles que les nœuds, les disques et les équilibreurs de charge. Cet agent de service dispose du domaine container-engine-robot.iam.gserviceaccount.com et du rôle Agent de service Kubernetes Engine (roles/container.serviceAgent) sur votre projet lorsque vous activez l'API GKE.

L'identifiant de cet agent de service est le suivant :

service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com

PROJECT_NUMBER est votre numéro de projet (numérique).

Si vous désactivez l'agent de service GKE, vous pouvez le récupérer en suivant les instructions de la section Activer un compte de service.

Si vous supprimez les autorisations de l'agent de service dans votre projet, vous pouvez les récupérer en suivant les instructions de la section Erreur 400/403 : autorisations de modification manquantes sur le compte.

Si vous supprimez l'agent de service GKE, vous pouvez annuler sa suppression en suivant les instructions de la section Annuler la suppression d'un compte de service.

Compte de service de nœud GKE par défaut

Par défaut, les nœuds GKE utilisent le compte de service par défaut Compute Engine. Par défaut, ce compte de service se voit attribuer le rôle Éditeur (roles/editor) et dispose de plus d'autorisations que celles requises pour les nœuds GKE. Envisagez d'utiliser un rôle qui utilise les autorisations minimales requises pour exécuter des nœuds dans le cluster.

Ne désactivez pas le compte de service Compute Engine par défaut, sauf si vous effectuez une migration vers des comptes de service gérés par l'utilisateur.

Autorisations minimales

GKE nécessite un ensemble minimal d'autorisations IAM pour exploiter votre cluster. Pour savoir comment créer un compte de service IAM doté de privilèges minimaux, consultez la section Utiliser le principe du moindre privilège pour les comptes de service Google.

Quand utiliser un compte de service spécifique

Le type de compte de service que vous utilisez dépend du type d'identité que vous souhaitez fournir à vos applications, comme suit :

  • Fournissez une identité à vos pods à utiliser dans le cluster : utilisez un ServiceAccount Kubernetes. Chaque espace de noms Kubernetes possède un ServiceAccount default, mais nous vous recommandons de créer des ServiceAccount dotés de privilèges minimaux pour chaque charge de travail de chaque espace de noms.
  • Fournissez une identité que vos pods doivent utiliser en dehors du cluster : utilisez la fédération d'identité de charge de travail pour GKE. La fédération d'identité de charge de travail pour GKE vous permet de spécifier des ressources Kubernetes telles que des ServiceAccount en tant que comptes principaux dans les stratégies IAM. Par exemple, utilisez la fédération d'identité de charge de travail pour GKE lorsque vous appelez des API Google Cloud telles que Secret Manager ou Spanner à partir de vos pods.
  • Fournissez une identité par défaut pour vos nœuds : utilisez un compte de service IAM personnalisé à droits minimaux lorsque vous créez vos clusters ou nœuds GKE. Si vous n'utilisez pas de compte de service IAM personnalisé, GKE utilise le compte de service Compute Engine par défaut, qui dispose d'autorisations étendues dans votre projet.

Étapes suivantes