Identidade da carga de trabalho

A Identidade da carga de trabalho (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 o cluster, a API de clusters anexados do GKE cria toda a infraestrutura necessária para o WIF, com suporte a clusters que usam emissores OIDC públicos ou privados.

Todos os serviços do GKE Enterprise que se conectam de volta ao Google Cloud, como agentes do Connect e de telemetria, usam a Identidade da carga de trabalho.

Contas de serviço e Identidade da carga de trabalho do Kubernetes

Quando um pod é executado, ele usa uma conta de serviço do Kubernetes para autorizar o acesso a recursos hospedados no cluster. Usando o Wi-Fi, o pod pode usar a mesma conta de serviço do Kubernetes (KSA) para receber 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 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 projeto do Google Cloud.

Esse pool de identidades de carga de trabalho é o pool de provedores de identidade confiáveis do seu projeto do Google. O nome dele é PROJECT_ID.svc.id.goog, em que PROJECT_ID é o ID do projeto do Google associado ao cluster anexado.

Você pode usar políticas regulares do Google Cloud 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:

serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/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="serviceAccount:PROJECT_ID.svc.id.goog[KSA_NAMESPACE/KSA_NAME]" \
  --role=IAM_ROLE

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud
  • KSA_NAMESPACE: o namespace do cluster em que essa 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 Google Cloud que você quer conceder a essa KSA