Workload Identity

A federação de identidade da carga de trabalho para o GKE (WIF) é um mecanismo que permite que as cargas de trabalho do seu cluster acedam a recursos externos da nuvem com contas de serviço do Kubernetes. A WIF é a forma recomendada para as aplicações executadas em clusters associados do GKE acederem aos serviços Google Cloud . Quando regista o cluster, a API GKE attached clusters cria toda a infraestrutura necessária para a WIF, com suporte para clusters que usam emissores OIDC públicos ou privados.

Todos os componentes do GKE que estabelecem ligação de volta ao Google Cloud, como os agentes de telemetria e do Connect, usam a Workload Identity Federation para o GKE.

Contas de serviço do Kubernetes e federação de identidades da carga de trabalho para o GKE

Quando um pod é executado, usa uma conta de serviço do Kubernetes para autorizar o respetivo acesso a recursos alojados no respetivo cluster. Ao usar a WIF, o pod pode usar a mesma conta de serviço do Kubernetes (KSA) para obter um token de curta duração para aceder a recursos alojados fora do cluster.

A WIF requer uma relação de confiança entre o fornecedor de identidade OIDC no cluster e o fornecedor de recursos externo, como o Google Cloud IAM. Quando regista um cluster anexado, o processo de registo cria automaticamente esta relação de confiança adicionando o serviço OIDC do seu cluster ao conjunto de identidades da carga de trabalho predefinido associado ao seu projeto Google Cloud .

Este Workload Identity Pool é o conjunto de fornecedores de identidade fidedignos do seu projeto Google e tem o nome PROJECT_ID.svc.id.goog, onde PROJECT_ID é o ID do projeto Google associado ao seu cluster anexado.

Pode usar políticas Google Cloud IAM normais para controlar o acesso das contas de serviço do Kubernetes aos Google Cloud serviços. Os principais da conta de serviço do Kubernetes são a representação da KSA no Workload Identity Pool. Estã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

Substituição:

  • PROJECT_ID: o ID do seu Google Cloud projeto
  • KSA_NAMESPACE: o espaço de nomes do cluster no qual esta conta de serviço reside
  • KSA_NAME: o nome da conta de serviço do Kubernetes à qual quer conceder autorizações
  • IAM_ROLE: a função que quer conceder a este KSA Google Cloud