Identidade da carga de trabalho

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