Workload Identity

Workload Identity (WIF) es un mecanismo que permite que las cargas de trabajo de tu clúster accedan a recursos de nube externos con cuentas de servicio de Kubernetes. WIF es la forma recomendada para que las aplicaciones que se ejecutan dentro de clústeres conectados de GKE accedan a los servicios de Google Cloud. Cuando registras tu clúster, la API de clústeres conectados de GKE crea toda la infraestructura necesaria para WIF, con compatibilidad con clústeres que usan entidades emisoras de OIDC públicas o privadas.

Todos los servicios de GKE Enterprise que se conectan a Google Cloud, como los agentes de Connect y de telemetría, usan Workload Identity.

Cuentas de servicio de Kubernetes y Workload Identity

Cuando se ejecuta un Pod, usa una cuenta de servicio de Kubernetes para autorizar el acceso a los recursos alojados en su clúster. Mediante WIF, el Pod puede usar la misma cuenta de servicio de Kubernetes (KSA) para obtener un token de corta duración para acceder a los recursos alojados fuera del clúster.

WIF requiere una relación de confianza entre el proveedor de identidad de OIDC dentro del clúster y el proveedor de recursos externo, como Google Cloud IAM. Cuando registras un clúster conectado, el proceso de registro crea de forma automática esta relación de confianza mediante la adición del servicio de OIDC de tu clúster al grupo de Workload Identity predeterminado vinculado a tu proyecto de Google Cloud.

Este grupo de Workload Identity es el grupo de proveedores de identidad de confianza del proyecto de Google y se llama PROJECT_ID.svc.id.goog, en el que PROJECT_ID es el ID del proyecto de Google asociado con el clúster adjunto.

Puedes usar las políticas de Google Cloud IAM normales para controlar el acceso de las cuentas de servicio de Kubernetes a los servicios de Google Cloud. Los principales de la cuenta de servicio de Kubernetes son la representación de la KSA dentro del grupo de Workload Identity. Tienen el siguiente formato:

serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/KSA_NAME]

Para otorgar un rol a la cuenta de servicio de Kubernetes, usa el siguiente comando:

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

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto de Google Cloud.
  • KSA_NAMESPACE: El espacio de nombres del clúster en el que reside esta cuenta de servicio
  • KSA_NAME: El nombre de la cuenta de servicio de Kubernetes a la que deseas otorgar permisos
  • IAM_ROLE: El rol de Google Cloud que deseas otorgar a esta KSA