A Federação de Identidade de Carga de Trabalho para GKE (WIF) é um mecanismo que permite que as cargas de trabalho do seu cluster acessem recursos de nuvem externa com Contas de Serviço do Kubernetes. A WIF é a maneira recomendada para aplicativos em execução em clusters conectados ao GKE acessarem Google Cloud serviços. Ao registrar seu cluster, a API de clusters anexados do GKE cria toda a infraestrutura necessária para o WIF, com suporte para clusters que usam emissores OIDC públicos ou privados.
Todos os serviços do GKE Enterprise que se conectam de volta a Google Cloud, como Connect e agentes de telemetria, usam a Federação de Identidade de Carga de Trabalho para GKE.
Contas de serviço do Kubernetes e Federação de Identidade de Carga de Trabalho para GKE
Quando um Pod é executado, ele usa uma conta de serviço do Kubernetes para autorizar seu acesso aos recursos hospedados em seu cluster. Ao usar o WIF, o Pod pode usar a mesma Conta de Serviço do Kubernetes (KSA) para obter um token de curta duração para 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 externo, como Google Cloud IAM. Ao registrar um Cluster Anexado, o processo de registro cria automaticamente essa relação de confiança adicionando o serviço OIDC do seu cluster ao pool de identidades de carga de trabalho padrão vinculado ao seu Google Cloud projeto.
Este pool de identidade de carga de trabalho é o pool de provedores de identidade confiáveis do seu projeto do Google e é denominado PROJECT_ID.svc.id.goog
, onde PROJECT_ID
é o ID do projeto do Google associado ao cluster anexado.
Você pode usar regular Google Cloud Políticas do IAM para controlar o acesso das contas de serviço do Kubernetes a Google Cloud serviços. Os principais da conta de serviço do Kubernetes são a representação do KSA dentro do pool de identidades da carga de trabalho. Eles são formatados da seguinte forma:
serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/KSA_NAME]
Para conceder uma função à conta de serviço do Kubernetes, use o seguinte comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[KSA_NAMESPACE/KSA_NAME]" \
--role=IAM_ROLE
Substituir:
- PROJECT_ID : seu Google Cloud ID do projeto
- KSA_NAMESPACE : o namespace do cluster no qual esta conta de serviço reside
- KSA_NAME : o nome da conta de serviço do Kubernetes à qual você deseja conceder permissões
- IAM_ROLE : o Google Cloud função que você deseja conceder a este KSA