Workload Identity Federation for 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 Google Cloud servicios. 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 Workload Identity Federation for GKE.
Cuentas de servicio de Kubernetes y Workload Identity Federation para 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 mediante la adición del servicio de OIDC de tu clúster al grupo de Workload Identity predeterminado vinculado a tu Google Cloud proyecto.
Este grupo de identidades para cargas de trabajo 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 Google Cloud servicios. Las entidades de la cuenta de servicio de Kubernetes son la representación de la KSA dentro del grupo de identidades para cargas de trabajo. 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: tu Google Cloud ID del proyecto
- 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 Google Cloud rol que deseas otorgar a esta KSA