Workload Identity

Workload Identity (WIF) est un mécanisme qui permet aux charges de travail de cluster d'accéder à des ressources cloud externes à l'aide de comptes de service Kubernetes. WIF est la méthode recommandée pour les applications s'exécutant dans des clusters associés à GKE pour accéder aux services Google Cloud. Lorsque vous enregistrez votre cluster, l'API des clusters associés à GKE crée toute l'infrastructure requise pour WIF, avec une compatibilité avec les clusters qui utilisent des émetteurs OIDC publics ou privés.

Tous les services GKE Enterprise qui se reconnectent à Google Cloud tels que Connect et les agents de télémétrie utilisent Workload Identity.

Comptes de service Kubernetes et Workload Identity

Lorsqu'un pod s'exécute, il utilise un compte de service Kubernetes pour autoriser son accès aux ressources hébergées dans son cluster. En utilisant WIF, le pod peut utiliser le même compte de service Kubernetes (KSA) pour obtenir un jeton de courte durée afin d'accéder aux ressources hébergées en dehors du cluster.

WIF nécessite une relation d'approbation entre le fournisseur d'identité OIDC dans le cluster et le fournisseur de ressources externe, tel que Google Cloud IAM. Lorsque vous vous inscrivez un cluster associé, le processus d'enregistrement crée automatiquement cette relation de confiance en ajoutant le service OIDC de votre cluster au pool d'identités de charge de travail par défaut d'identités associé à votre projet Google Cloud.

Ce pool d'identités de charge de travail est le pool de fournisseurs d'identités de confiance de votre projet Google. Il est nommé PROJECT_ID.svc.id.goog, où PROJECT_ID est l'ID de projet Google associé à votre cluster associé.

Vous pouvez utiliser les stratégies Google Cloud IAM standards pour contrôler l'accès des comptes de service Kubernetes aux services Google Cloud. Les entités principales du compte de service Kubernetes sont la représentation du KSA dans le pool d'identités de charge de travail. Elles sont formatées comme suit :

serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/KSA_NAME]

Pour attribuer un rôle au compte de service Kubernetes, utilisez la commande suivante:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[KSA_NAMESPACE/KSA_NAME]" \
  --role=IAM_ROLE

Remplacez :

  • PROJECT_ID : ID de votre projet Google Cloud
  • KSA_NAMESPACE : espace de noms du cluster dans lequel se trouve ce compte de service
  • KSA_NAME: nom du compte de service Kubernetes pour lequel vous souhaitez accorder des autorisations
  • IAM_ROLE: rôle Google Cloud que vous souhaitez accorder à ce compte de service Kubernetes