A federação de identidade da carga de trabalho para GKE (WIF, na sigla em inglês) é um mecanismo que permite que as cargas de trabalho do cluster acessem recursos externos da nuvem com contas de serviço do Kubernetes. WIF é a maneira recomendada de aplicativos em execução nos clusters anexados ao GKE para acessar os serviços do Google Cloud . Quando você registra seu cluster, a API de clusters anexados ao GKE cria toda a infraestrutura necessária para o WIF, com suporte para clusters que usam emissores OIDC públicos ou privados.
Todos os componentes do GKE que se conectam ao Google Cloud, como agentes do Connect e de telemetria, usam a Federação de identidade da carga de trabalho para GKE.
Contas de serviço do Kubernetes e federação de identidade da carga de trabalho para GKE
Quando um pod é executado, ele usa uma conta de serviço do Kubernetes para autorizar o acesso a recursos hospedados no cluster. Usando o WIF, o pod pode usar a mesma conta de serviço do Kubernetes (KSA) para receber um token de curta duração e acessar recursos hospedados fora do cluster.
O WIF requer uma relação de confiança entre o provedor de identidade OIDC dentro do cluster e o provedor de recursos externos, como o Google Cloud IAM. Quando você registra um cluster anexado, o processo de registro cria automaticamente essa relação de confiança adicionando o serviço OIDC do cluster ao pool de identidades da carga de trabalho padrão vinculado ao seu projeto Google Cloud .
Esse pool de Identidade da carga de trabalho é o pool de provedores de identidade confiáveis do seu projeto Google Cloud . O nome dele é PROJECT_ID.svc.id.goog, em que PROJECT_ID é o ID do projetoGoogle Cloud associado ao cluster anexado.
Você pode usar políticas regulares do IAM para controlar o acesso das contas de serviço do Kubernetes aos serviços do Google Cloud . Os principais da conta de serviço do Kubernetes são a representação da KSA no pool de identidades da carga de trabalho. Eles são formatados da seguinte maneira:
principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_NAME/subject/ns/KSA_NAMESPACE/sa/KSA_NAME
Para conceder um papel à conta de serviço do Kubernetes, use o seguinte comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/KSA_NAMESPACE/sa/KSA_NAME" \
--role=IAM_ROLE
Substitua:
- PROJECT_ID: o ID do projeto do Google Cloud
- PROJECT_NUMBER: o número do projeto do Google Cloud
- KSA_NAMESPACE: o namespace do cluster em que esta conta de serviço reside
- KSA_NAME: o nome da conta de serviço do Kubernetes à qual você quer conceder permissões.
- IAM_ROLE: o papel do IAM que você quer conceder a essa KSA