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