Questo argomento spiega come attivare Workload Identity per le installazioni ibride di Apigee sulle piattaforme AKS ed EKS.
Panoramica
La federazione delle identità dei carichi di lavoro consente alle applicazioni in esecuzione al di fuori di Google Cloud di rappresentare un account di servizio Google Cloud Platform utilizzando le credenziali di un provider di identità esterno.
L'utilizzo della federazione delle identità per i workload può aiutarti a migliorare la sicurezza consentendo alle applicazioni di utilizzare i meccanismi di autenticazione forniti dall'ambiente esterno e può contribuire a sostituire le account di servizio account.
Per una panoramica, consulta Best practice per l'utilizzo della federazione delle identità dei carichi di lavoro.
Configura la federazione delle identità per i workload
Per utilizzare Workload Identity Federation con Apigee hybrid, configura prima il cluster e poi applica la funzionalità all'installazione di Apigee hybrid.
Configura il cluster in modo che utilizzi la federazione delle identità per i workload.
Segui le istruzioni di Google Cloud per configurare la federazione delle identità per i carichi di lavoro per Kubernetes, con le seguenti modifiche:
-
Elenca i tuoi service account IAM e i service account Kubernetes con i seguenti comandi:
-
Service account IAM:molto probabilmente hai già creato i service account IAM (chiamati anche "service account Google") durante l'installazione iniziale di Apigee Hybrid con lo strumento
create-service-account. Consulta la sezione Informazioni sui service account per un elenco dei service account IAM necessari per Apigee Hybrid.Puoi visualizzare un elenco dei service account IAM nel tuo progetto con il seguente comando:
gcloud iam service-accounts list --project PROJECT_ID
-
Service account Kubernetes:i grafici ibridi Apigee creano i service account Kubernetes necessari per ogni componente quando esegui il comando
helm installohelm update.Puoi visualizzare i service account Kubernetes nel tuo cluster con i comandi
kubectl get sa:kubectl get sa -n APIGEE_NAMESPACE
kubectl get sa -n apigee-system
-
Service account IAM:molto probabilmente hai già creato i service account IAM (chiamati anche "service account Google") durante l'installazione iniziale di Apigee Hybrid con lo strumento
-
Nel passaggio Configura la federazione delle identità per i carichi di lavoro, il pubblico predefinito per i pool e i provider di Workload Identity creati è il seguente. Utilizza questo valore predefinito o imposta un pubblico previsto personalizzato e salva questo valore per un uso futuro.
https://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
-
Arrestati dopo il passaggio 1 in Esegui il deployment di un carico di lavoro Kubernetes. Ci sarà un file di configurazione delle credenziali per ogni account di servizio Google. Salva ogni file di configurazione delle credenziali e il percorso inserito per il parametro
--credential-source-file, ad esempio:/var/run/service-account/token.
Configura Apigee hybrid per utilizzare la federazione delle identità per i workload
-
Copia il file di origine delle credenziali e il file di output (
credential-configuration.json) nelle seguenti directory del grafico. Questi erano i valori che hai fornito nel passaggio 1 nella sezione Esegui il deployment di un carico di lavoro Kubernetes.apigee-datastore/apigee-envapigee-org/apigee-telemetry/
-
Apporta le seguenti modifiche globali al file di override del cluster:
gcp: workloadIdentity: enabled: false # must be set to false to use Workload Identity Federation federatedWorkloadIdentity: enabled: true audience: "AUDIENCE" credentialSourceFile: "CREDENTIAL_SOURCE_FILE"Dove:
-
AUDIENCE è il pubblico consentito del provider di identità per i workload, il valore in
.audiencenel file JSON di configurazione delle credenziali che hai configurato nel passaggio 1 in Deploy a Kubernetes workload (Esegui il deployment di un carico di lavoro Kubernetes). -
CREDENTIAL_SOURCE_FILE è il nome e il percorso del file di origine delle credenziali utilizzato dalla federazione delle identità per i workload per ottenere le credenziali per i service account. Questo è il valore che fornisci per
credential-source-filequando configuri la federazione delle identità per i carichi di lavoro con il comandocreate-cred-confignel passaggio 1 in Deploy a Kubernetes workload (Esegui il deployment di un carico di lavoro Kubernetes). Ad esempio:
Ad esempio:
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 è il pubblico consentito del provider di identità per i workload, il valore in
-
Configura gli override per ogni componente utilizzando la federazione delle identità per i carichi di lavoro. Seleziona le istruzioni per i file di certificato, i secret di Kubernetes o Vault in base alla tua installazione.
File del certificato
Sostituisci il valore di
serviceAccountPathcon il file di origine delle credenziali. Deve essere il percorso relativo alla directory del grafico. Ad esempio:udca: serviceAccountPath: fwi/credential-configuration.json
K8s Secret
-
Crea un nuovo secret Kubernetes utilizzando il file di origine delle credenziali.
kubectl create secret -n apigee generic SECRET_NAME --from-file="client_secret.json=CREDENTIAL_CONFIGURATION_FILE"
Ad esempio:
kubectl create secret -n apigee generic udca-fwi-secret --from-file="client_secret.json=./fwi/credential-configuration.json"
-
Sostituisci il valore di
serviceAccountRefcon il nuovo secret. Ad esempio:udca: serviceAccountRef: udca-fwi-secret
Vault
Aggiorna la chiave del account di servizio,
SAKEYin Vault, con il file di origine delle credenziali. Ad esempio, per UDCA (la procedura è simile per tutti i componenti):SAKEY=$(cat ./fwi/credential-configuration.json); kubectl -n apigee exec vault-0 -- vault kv patch secret/apigee/orgsakeys udca="$SAKEY"
-
Crea un nuovo secret Kubernetes utilizzando il file di origine delle credenziali.
-
Applica le modifiche a ogni componente interessato con il comando
helm update:Se utilizzi Vault per la prima volta con questo cluster, aggiorna il grafico
apigee-operator:helm upgrade operator apigee-operator/ \ --namespace apigee-system \ --atomic \ -f overrides.yaml
Aggiorna gli altri grafici interessati nel seguente ordine:
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
Aggiorna il grafico
apigee-envper ogni ambiente, sostituendo ENV_NAME ogni volta:helm upgrade $ENV_NAME apigee-env/ \ --namespace apigee \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml
Consulta il riferimento Helm di Apigee hybrid per un elenco dei componenti e dei grafici corrispondenti.
Per ulteriori informazioni su Workload Identity Federation e sulle best practice, consulta Best practice per l'utilizzo della federazione delle identità per i workload.