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 seu cluster, a API de clusters anexados ao 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 ao Google Cloud como os agentes do Connect e de telemetria, use 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 esta 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