Abilitazione della federazione di Workload Identity su AKS ed EKS

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 all'esterno 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 contribuendo a sostituire le chiavi degli account di servizio.

Per una panoramica, consulta le best practice per l'utilizzo della federazione di Workload Identity.

Configura la federazione di Workload Identity

Per utilizzare la federazione di Workload Identity con Apigee hybrid, devi prima configurare il cluster, quindi applicare la funzionalità alla tua installazione ibrida di Apigee.

Configura il cluster per l'utilizzo della federazione di Workload Identity.

Segui le istruzioni di Google Cloud per configurare la federazione di Workload Identity per Kubernetes, con le seguenti modifiche:

  1. Nel passaggio Configura la federazione di Workload Identity, il segmento di pubblico predefinito per i provider e i pool Workload Identity creati è il seguente. 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
  2. Non è necessario eseguire i passaggi descritti in Creare una coppia di account di servizio, poiché gli account di servizio necessari dovrebbero essere già stati creati:
    • Account di servizio IAM: molto probabilmente hai già creato gli account di servizio IAM (chiamati anche "account di servizio Google") durante l'installazione iniziale di Apigee hybrid con lo strumento create-service-account. Consulta Informazioni sugli account di servizio per un elenco degli account di servizio IAM necessari per Apigee hybrid.

      Puoi visualizzare un elenco di account di servizio IAM nel tuo progetto con il comando seguente:

      gcloud iam service-accounts list --project PROJECT_ID
    • Account di servizio Kubernetes: i grafici ibridi di Apigee creano gli account di servizio Kubernetes necessari per ogni componente quando esegui il comando helm install o helm 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
  3. Interrompi dopo il passaggio 1 in Eseguire il deployment di un carico di lavoro Kubernetes. Salva il file di configurazione delle credenziali e salva il percorso inserito per il parametro --credential-source-file, ad esempio: /var/run/service-account/token.

Configura Apigee hybrid per usare la federazione delle identità per i carichi di lavoro

  1. 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 in Eseguire il deployment di un carico di lavoro Kubernetes.
    • apigee-datastore/
    • apigee-env
    • apigee-org/
    • apigee-telemetry/
  2. Apporta le seguenti modifiche globali al file di override del tuo 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 Workload Identity, il valore in .audience nel file JSON di configurazione delle credenziali che hai configurato nel passaggio 1 in Esegui il 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 di Workload Identity per ottenere le credenziali per gli account di servizio. Questo è il valore che fornisci per credential-source-file quando configuri la federazione delle identità per i carichi di lavoro con il comando create-cred-config nel passaggio 1 della sezione 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"
      
  3. Configura gli override per ogni componente utilizzando la federazione di Workload Identity. Seleziona le istruzioni per i file dei certificati, i secret di Kubernetes o Vault in base ai requisiti dell'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
    

    Secret di K8s

    1. Creare 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"
    2. 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 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"
  4. 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 env, 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 ibrido Apigee per un elenco dei componenti e le tabelle corrispondenti.

Per ulteriori informazioni 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.