Questo argomento spiega come abilitare Workload Identity per le installazioni ibride di Apigee sulle piattaforme AKS ed EKS.
Panoramica
La federazione delle identità per i carichi di lavoro consente alle applicazioni in esecuzione al di fuori di Google Cloud di impersonare un account di servizio Google Cloud Platform utilizzando le credenziali di un provider di identità esterno.
L'utilizzo della federazione delle identità per i carichi di lavoro può aiutarti a migliorare la sicurezza consentendo alle applicazioni di utilizzare i meccanismi di autenticazione forniti dall'ambiente esterno e può aiutare a sostituire le chiavi degli account di servizio.
Per una panoramica, consulta le best practice per l'utilizzo della federazione delle identità per i carichi di lavoro.
Configura la federazione delle identità per i carichi di lavoro
Per utilizzare la federazione delle identità per i carichi di lavoro con Apigee hybrid, prima configura il cluster e quindi applica la funzionalità alla tua installazione ibrida di Apigee.
Configura il cluster per utilizzare la federazione delle identità per i carichi di lavoro.
Segui le istruzioni di Google Cloud per configurare la federazione delle identità per i carichi di lavoro per Kubernetes, apportando le seguenti modifiche:
-
Nel passaggio Configura la federazione delle identità per i carichi di lavoro, di seguito viene mostrato il segmento di pubblico predefinito per i provider e i pool di Workload Identity creati. Utilizza questo valore predefinito o imposta un segmento di pubblico previsto personalizzato e salva questo valore per un utilizzo futuro.
https://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
-
Non è necessario eseguire i passaggi descritti in Creare una coppia di account di servizio perché gli account di servizio necessari dovrebbero essere già stati creati:
-
Account di servizio IAM: molto probabilmente hai già creato gli account di servizio IAM (detti anche "account di servizio Google") durante l'installazione iniziale di Apigee hybrid con lo strumento
create-service-account
. Consulta la pagina Informazioni sugli account di servizio per un elenco degli account di servizio IAM richiesti da Apigee hybrid.Puoi visualizzare un elenco degli account di servizio IAM nel tuo progetto con il seguente comando:
gcloud iam service-accounts list --project PROJECT_ID
-
Account di servizio Kubernetes: i grafici ibridi Apigee creano gli account di servizio Kubernetes necessari per ciascun componente quando esegui il comando
helm install
ohelm update
.Puoi visualizzare gli account di servizio Kubernetes nel tuo cluster con i comandi
kubectl get sa
:kubectl get sa -n APIGEE_NAMESPACE
kubectl get sa -n apigee-system
-
Account di servizio IAM: molto probabilmente hai già creato gli account di servizio IAM (detti anche "account di servizio Google") durante l'installazione iniziale di Apigee hybrid con lo strumento
-
Interrompi dopo il passaggio 1 in Deployment di un carico di lavoro Kubernetes. Salva il 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 carichi di lavoro
-
Copia il file di origine delle credenziali e il file di output (
credential-configuration.json
) nelle directory del grafico che seguono. Questi erano i valori che hai fornito nel passaggio 1 della sezione Deployment di un carico di lavoro Kubernetes.apigee-datastore/
apigee-env
apigee-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 segmento di pubblico consentito del provider di identità per i carichi di lavoro, il valore in
.audience
nel file JSON di configurazione delle credenziali che hai configurato nel passaggio 1 in Deployment di un carico di lavoro Kubernetes. -
CREDENTIAL_SOURCE_FILE è il nome file e il percorso del file di origine delle credenziali utilizzato dalla federazione delle identità per i carichi di lavoro per ottenere le credenziali per gli account di servizio. Questo è il valore da te specificato per
credential-source-file
quando configuri la federazione delle identità per i carichi di lavoro con il comandocreate-cred-config
nel passaggio 1 della sezione 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 segmento di pubblico consentito del provider di identità per i carichi di lavoro, 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 certificazione, i secret di Kubernetes o Vault in base alla tua installazione.
<
File di certificazione
Sostituisci il valore di
serviceAccountPath
con il file di origine delle credenziali. Deve essere il percorso relativo alla directory del grafico. Ad esempio:udca: serviceAccountPath: fwi/credential-configuration.json
Segreto K8s
-
Crea un nuovo secret Kubernetes utilizzando per 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
serviceAccountRef
con il nuovo secret. Ad esempio:udca: serviceAccountRef: udca-fwi-secret
Vault
Aggiorna la chiave dell'account di servizio,
SAKEY
in Vault, con il file di origine delle credenziali. Ad esempio, per l'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 per 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-env
per 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 di Apigee hybrid Helm per un elenco dei componenti e dei grafici corrispondenti.
Per saperne di più sulla federazione delle identità per i carichi di lavoro e sulle best practice, vedi Best practice per l'utilizzo della federazione delle identità per i carichi di lavoro.