Este tópico explica como ativar a identidade de carga de trabalho para instalações híbridas do Apigee nas plataformas AKS e EKS.
Vista geral
A federação de identidades de cargas de trabalho permite que as aplicações executadas fora do Google Cloud se façam passar por uma conta de serviço da Google Cloud Platform através da utilização de credenciais de um fornecedor de identidade externo.
A utilização da federação de identidades de cargas de trabalho pode ajudar a melhorar a segurança, permitindo que as aplicações utilizem os mecanismos de autenticação fornecidos pelo ambiente externo, e pode ajudar a substituir as chaves de contas de serviço.
Para uma vista geral, consulte o artigo Práticas recomendadas para usar a Workload Identity Federation.
Configure a Workload Identity Federation
Para usar a Workload Identity Federation com o Apigee hybrid, primeiro configure o cluster e, em seguida, aplique a funcionalidade à sua instalação do Apigee hybrid.
Configure o cluster para usar a Workload Identity Federation.
Siga as instruções do Google Cloud para configurar a Federação de identidades da carga de trabalho para o Kubernetes, com as seguintes modificações:
-
Liste as suas contas de serviço IAM e contas de serviço Kubernetes com os seguintes comandos:
-
Contas de serviço do IAM: provavelmente, já criou as contas de serviço do IAM (também denominadas "contas de serviço Google") durante a instalação inicial do Apigee hybrid com a ferramenta
create-service-account
. Consulte o artigo Acerca das contas de serviço para ver uma lista das contas de serviço do IAM necessárias para o Apigee hybrid.Pode ver uma lista de contas de serviço da IAM no seu projeto com o seguinte comando:
gcloud iam service-accounts list --project PROJECT_ID
-
Contas de serviço do Kubernetes: os gráficos do Apigee Hybrid criam as contas de serviço do Kubernetes necessárias para cada componente quando executa o comando
helm install
ouhelm update
.Pode ver as contas de serviço do Kubernetes no seu 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: provavelmente, já criou as contas de serviço do IAM (também denominadas "contas de serviço Google") durante a instalação inicial do Apigee hybrid com a ferramenta
-
No passo Configure a federação de identidades da carga de trabalho, o público-alvo predefinido para os Workload Identity Pools e os fornecedores criados é o seguinte. Use esta predefinição ou defina um público-alvo esperado personalizado e guarde este valor para utilização posterior.
https://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
-
Pare após o passo 1 em Implemente uma carga de trabalho do Kubernetes. Existe um ficheiro de configuração de credenciais para cada conta de serviço Google. Guarde cada ficheiro de configuração de credenciais e guarde o caminho introduzido para o parâmetro
--credential-source-file
, por exemplo:/var/run/service-account/token
.
Configure o Apigee Hybrid para usar a Workload Identity Federation
-
Copie o ficheiro de origem das credenciais e o ficheiro de saída (
credential-configuration.json
) para os seguintes diretórios de gráficos. Estes foram os valores que indicou no passo 1 em Implemente uma carga de trabalho do Kubernetes.apigee-datastore/
apigee-env
apigee-org/
apigee-telemetry/
-
Faça as seguintes alterações globais ao ficheiro 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"
Onde:
-
AUDIENCE é o público-alvo permitido do Workload Identity Provider, o valor em
.audience
no ficheiro JSON de configuração de credenciais que configurou no passo 1 em Implemente uma carga de trabalho do Kubernetes. -
CREDENTIAL_SOURCE_FILE é o nome do ficheiro e o caminho para o ficheiro de origem das credenciais usado pela federação de identidades da carga de trabalho para obter as credenciais das contas de serviço. Este é o valor que fornece para
credential-source-file
quando configura a federação de identidade da carga de trabalho com o comandocreate-cred-config
no passo 1 em Implemente uma carga de trabalho do Kubernetes. Por exemplo:
Por 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-alvo permitido do Workload Identity Provider, o valor em
-
Configure as substituições para cada componente através da Workload Identity Federation. Selecione as instruções para ficheiros CERT, segredos do Kubernetes ou Vault, conforme adequado para a sua instalação.
Ficheiro de certificação
Substitua o valor de
serviceAccountPath
pelo ficheiro de origem das credenciais. Este tem de ser o caminho relativo ao diretório do gráfico. Por exemplo:udca: serviceAccountPath: fwi/credential-configuration.json
K8s Secret
-
Crie um novo segredo do Kubernetes para o ficheiro de origem das credenciais.
kubectl create secret -n apigee generic SECRET_NAME --from-file="client_secret.json=CREDENTIAL_CONFIGURATION_FILE"
Por 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 segredo. Por exemplo:udca: serviceAccountRef: udca-fwi-secret
Vault
Atualize a chave da conta de serviço
SAKEY
no Vault com o ficheiro de origem das credenciais. Por exemplo, para UDCA (o procedimento é semelhante para 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 segredo do Kubernetes para o ficheiro de origem das credenciais.
-
Aplique as alterações a cada componente afetado com o comando
helm update
:Se estiver a usar o Vault pela primeira vez com este cluster, atualize o gráfico
apigee-operator
:helm upgrade operator apigee-operator/ \ --namespace apigee-system \ --atomic \ -f overrides.yaml
Atualize os restantes tops afetados pela 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 de cada vez:helm upgrade $ENV_NAME apigee-env/ \ --namespace apigee \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml
Consulte a referência do Helm do Apigee hybrid para ver uma lista de componentes e os respetivos gráficos.
Para mais informações sobre a Workload Identity Federation e as práticas recomendadas, consulte o artigo Práticas recomendadas para usar a Workload Identity Federation.