Neste tópico, explicamos como ativar a Identidade da carga de trabalho para instalações da Apigee híbrida nas plataformas AKS e AKS.
Visão geral
A federação de identidade da carga de trabalho permite que aplicativos em execução fora do Google Cloud representem uma conta de serviço do Google Cloud Platform usando credenciais de um provedor de identidade externo.
O uso da federação de identidade da carga de trabalho pode ajudar a melhorar a segurança, permitindo que os aplicativos usem os mecanismos de autenticação fornecidos pelo ambiente externo e possam substituir as chaves da conta de serviço.
Para ter uma visão geral, consulte Práticas recomendadas para usar a federação de identidade da carga de trabalho.
Configurar a federação de identidade da carga de trabalho
Para usar a federação de identidade da carga de trabalho com a Apigee híbrida, primeiro configure o cluster e, em seguida, aplique o recurso à instalação da Apigee híbrida.
Configure seu cluster para usar a federação de identidade da carga de trabalho.
Siga as instruções do Google Cloud para Configurar a federação de identidade da carga de trabalho para o Kubernetes com as seguintes modificações:
-
Liste suas contas de serviço do IAM e do Kubernetes com os seguintes comandos:
-
Contas de serviço do IAM:você provavelmente já criou as contas de serviço do IAM (também chamadas de "contas de serviço do Google") durante a instalação inicial da Apigee híbrida com a ferramenta
create-service-account
. Consulte Sobre contas de serviço para conferir uma lista das contas de serviço do IAM necessárias para a Apigee híbrida.Para ver uma lista de contas de serviço do IAM no projeto, execute o seguinte comando:
gcloud iam service-accounts list --project PROJECT_ID
-
Contas de serviço do Kubernetes: os gráficos da Apigee híbrida criam as contas de serviço do Kubernetes necessárias para cada componente ao executar o comando
helm install
ouhelm update
.Veja as contas de serviço do Kubernetes no cluster com os comandos
kubectl get sa
:kubectl get sa -n APIGEE_NAMESPACE
kubectl get sa -n apigee-system
-
Contas de serviço do IAM:você provavelmente já criou as contas de serviço do IAM (também chamadas de "contas de serviço do Google") durante a instalação inicial da Apigee híbrida com a ferramenta
-
Na etapa Configurar a federação da Identidade da carga de trabalho, o público-alvo padrão dos pools e provedores de Identidade da carga de trabalho criados é este: Use esse padrão ou defina um público-alvo personalizado esperado e salve esse valor para uso posterior.
https://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
-
Pare após a etapa 1 em Implantar uma carga de trabalho do Kubernetes. Há um arquivo de configuração de credencial para cada conta de serviço do Google. Salve cada arquivo de configuração de credenciais e o caminho inserido para o parâmetro
--credential-source-file
, por exemplo:/var/run/service-account/token
.
Configurar a Apigee híbrida para usar a federação de identidade da carga de trabalho
-
Copie os arquivos de origem e de saída da credencial (
credential-configuration.json
) para os diretórios de gráficos a seguir. Estes foram os valores fornecidos na etapa 1 em Implantar uma carga de trabalho do Kubernetes.apigee-datastore/
apigee-env
apigee-org/
apigee-telemetry/
-
Faça as seguintes alterações globais no arquivo de substituições do cluster:
gcp: workloadIdentity: enabled: false # must be set to false to use Workload Identity Federation federatedWorkloadIdentity: enabled: true audience: "AUDIENCE" credentialSourceFile: "CREDENTIAL_SOURCE_FILE"
Em que:
-
AUDIENCE é o público permitido do provedor de identidade da carga de trabalho. O valor em
.audience
no arquivo JSON de configuração de credenciais que você configurou na etapa 1 em Implantar uma carga de trabalho do Kubernetes. -
CREDENTIAL_SOURCE_FILE é o nome e o caminho do arquivo de origem da credencial usado pela federação de identidade da carga de trabalho para receber as credenciais das contas de serviço. Esse é o valor fornecido para
credential-source-file
ao configurar a federação de identidade da carga de trabalho com o comandocreate-cred-config
na etapa 1 em Implantar uma carga de trabalho do Kubernetes. Exemplo:
Exemplo:
gcp: workloadIdentity: enabled: false federatedWorkloadIdentity: enabled: true audience: "//iam.googleapis.com/projects/123456789012/locations/global/workloadIdentityPools/aws-pool/providers/aws-provider" credentialSourceFile: "/var/run/service-account/token"
-
AUDIENCE é o público permitido do provedor de identidade da carga de trabalho. O valor em
-
Configure as substituições para cada componente usando a federação de identidade da carga de trabalho. Selecione as instruções para arquivos de certificado, secrets do Kubernetes ou Vault, conforme apropriado para sua instalação.
Arquivo de certificação
Substitua o valor de
serviceAccountPath
pelo arquivo de origem da credencial. Precisa ser o caminho relativo para o diretório do gráfico. Exemplo:udca: serviceAccountPath: fwi/credential-configuration.json
Secret do K8s
-
Crie um novo secret do Kubernetes usando o arquivo de origem da credencial.
kubectl create secret -n apigee generic SECRET_NAME --from-file="client_secret.json=CREDENTIAL_CONFIGURATION_FILE"
Exemplo:
kubectl create secret -n apigee generic udca-fwi-secret --from-file="client_secret.json=./fwi/credential-configuration.json"
-
Substitua o valor de
serviceAccountRef
pelo novo secret. Exemplo:udca: serviceAccountRef: udca-fwi-secret
Vault
Atualize a chave da conta de serviço,
SAKEY
no Vault, com o arquivo de origem de credenciais. Por exemplo, para UDCA (o procedimento é semelhante em todos os componentes):SAKEY=$(cat ./fwi/credential-configuration.json); kubectl -n apigee exec vault-0 -- vault kv patch secret/apigee/orgsakeys udca="$SAKEY"
-
Crie um novo secret do Kubernetes usando o arquivo de origem da credencial.
-
Aplique as mudanças a cada componente afetado com o comando
helm update
:Se você estiver usando o Vault pela primeira vez com esse cluster, atualize o gráfico
apigee-operator
:helm upgrade operator apigee-operator/ \ --namespace apigee-system \ --atomic \ -f overrides.yaml
Atualize o restante dos gráficos afetados na seguinte ordem:
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
helm upgrade telemetry apigee-telemetry/ \ --namespace apigee \ --atomic \ -f overrides.yaml
helm upgrade $ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f overrides.yaml
Atualize o gráfico
apigee-env
para cada ambiente, substituindo ENV_NAME todas as vezes:helm upgrade $ENV_NAME apigee-env/ \ --namespace apigee \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml
Consulte a referência da Apigee híbrida Helm para ver uma lista de componentes e os gráficos correspondentes.
Saiba mais sobre a federação de identidade da carga de trabalho e as práticas recomendadas em Práticas recomendadas para usar a federação de identidade da carga de trabalho.