La federación de identidades para cargas de trabajo para GKE (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 componentes de GKE que se conectan a Google Cloud, como los agentes de Connect y de telemetría, usan la federación de identidades para cargas de trabajo para GKE.
Cuentas de servicio de Kubernetes y Workload Identity Federation for GKE
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 agregando el servicio de OIDC de tu clúster al grupo de identidades de cargas de trabajo predeterminado vinculado a tu proyecto 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 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 de tu 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