Workload Identity Federation para GKE (WIF) es un mecanismo que permite que las cargas de trabajo de tu clúster accedan a recursos de la nube externos con cuentas de servicio de Kubernetes. WIF es la forma recomendada para que las aplicaciones que se ejecutan en clústeres de GKE adjuntos accedan a los servicios de Google Cloud . Cuando registras tu clúster, la API de clústeres adjuntos de GKE crea toda la infraestructura necesaria para WIF, con compatibilidad para clústeres que usan emisores de OIDC públicos o privados.
Todos los componentes de GKE que se conectan a Google Cloud, como los agentes de Connect y de telemetría, usan Workload Identity Federation para GKE.
Cuentas de servicio de Kubernetes y Workload Identity Federation para GKE
Cuando se ejecuta un pod, utiliza una cuenta de servicio de Kubernetes para autorizar su acceso a los recursos alojados en su clúster. Al usar WIF, el pod puede usar la misma cuenta de servicio de Kubernetes (KSA) para obtener un token de corta duración con el que acceder a los recursos alojados fuera del clúster.
WIF requiere una relación de confianza entre el proveedor de identidades OIDC del clúster y el proveedor de recursos externo, como Google Cloud IAM. Cuando registras un clúster adjunto, el proceso de registro crea automáticamente esta relación de confianza añadiendo el servicio OIDC de tu clúster al grupo de identidades de carga de trabajo predeterminado vinculado a tu proyecto Google Cloud .
Este grupo de identidades de carga de trabajo es el grupo de proveedores de identidades de confianza de tu proyecto de Google y se llama PROJECT_ID.svc.id.goog
, donde PROJECT_ID
es el ID del proyecto de Google asociado a tu clúster conectado.
Puedes usar políticas de gestión de identidades y accesos (IAM) normales para controlar el acceso de las cuentas de servicio de Kubernetes a los servicios de Google Cloud Google Cloud . Las cuentas principales de servicio de Kubernetes son la representación de la KSA en el grupo de identidades de carga de trabajo. Tienen el siguiente formato:
serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/KSA_NAME]
Para conceder 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
Sustituye:
- PROJECT_ID: tu ID de proyecto 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 quieres conceder permisos
- IAM_ROLE: el Google Cloud rol que quieres asignar a este KSA