Mengaktifkan Workload Identity Federation di AKS dan EKS

Topik ini menjelaskan cara mengaktifkan Workload Identity untuk penginstalan hybrid Apigee di platform AKS dan EKS.

Ringkasan

Dengan workload identity federation, aplikasi yang berjalan di luar Google Cloud dapat meniru identitas akun layanan Google Cloud Platform menggunakan kredensial dari penyedia identitas eksternal.

Penggunaan workload identity federation dapat membantu Anda meningkatkan keamanan dengan memungkinkan aplikasi menggunakan mekanisme autentikasi yang disediakan oleh lingkungan eksternal dan dapat membantu mengganti kunci akun layanan.

Untuk ringkasan, lihat Praktik terbaik untuk menggunakan Workload Identity Federation.

Menyiapkan Workload Identity Federation

Untuk menggunakan Workload Identity Federation dengan Apigee Hybrid, pertama-tama konfigurasikan cluster Anda, lalu terapkan fitur tersebut ke penginstalan hybrid Apigee Anda.

Konfigurasi cluster Anda untuk menggunakan Workload Identity Federation.

Ikuti petunjuk Google Cloud untuk Mengonfigurasi Workload Identity Federation for Kubernetes, dengan modifikasi berikut:

  1. Pada langkah Configure Workload Identity Federation, audiens default untuk kumpulan dan penyedia Workload Identity yang dibuat adalah sebagai berikut. Gunakan setelan default ini atau tetapkan audiens kustom yang diharapkan, lalu simpan nilai ini untuk digunakan nanti.
    https://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
  2. Anda tidak perlu melakukan langkah-langkah di bagian Membuat pasangan akun layanan, karena akun layanan yang Anda perlukan seharusnya sudah dibuat:
    • Akun layanan IAM: Kemungkinan besar Anda sudah membuat akun layanan IAM (juga disebut "akun layanan Google") selama penginstalan awal Apigee Hybrid dengan alat create-service-account. Lihat Tentang akun layanan untuk mengetahui daftar akun layanan IAM yang diperlukan oleh Apigee Hybrid.

      Anda dapat melihat daftar akun layanan IAM di project dengan perintah berikut:

      gcloud iam service-accounts list --project PROJECT_ID
    • Akun layanan Kubernetes: Diagram hybrid Apigee membuat akun layanan Kubernetes yang diperlukan untuk setiap komponen saat Anda menjalankan perintah helm install atau helm update.

      Anda dapat melihat akun layanan Kubernetes di cluster Anda dengan perintah kubectl get sa:

      kubectl get sa -n APIGEE_NAMESPACE
      kubectl get sa -n apigee-system
  3. Hentikan setelah langkah 1 di bagian Men-deploy workload Kubernetes. Simpan file konfigurasi kredensial dan simpan jalur yang dimasukkan untuk parameter --credential-source-file, misalnya: /var/run/service-account/token.

Mengonfigurasi Apigee Hybrid untuk menggunakan Workload Identity Federation

  1. Salin file sumber kredensial dan file output (credential-configuration.json) ke direktori diagram berikut. Berikut adalah nilai yang Anda berikan pada langkah 1 di bagian Men-deploy workload Kubernetes.
    • apigee-datastore/
    • apigee-env
    • apigee-org/
    • apigee-telemetry/
  2. Buat perubahan global berikut pada file penggantian cluster Anda:
    gcp:
      workloadIdentity:
        enabled: false # must be set to false to use Workload Identity Federation
      federatedWorkloadIdentity:
        enabled: true
        audience: "AUDIENCE"
        credentialSourceFile: "CREDENTIAL_SOURCE_FILE"
    

    Dengan keterangan:

    • AUDIENCE adalah audiens yang diizinkan untuk Workload Identity Provider, nilai di bagian .audience dalam file json konfigurasi kredensial yang Anda konfigurasi pada langkah 1 di bagian Men-deploy workload Kubernetes.
    • CREDENTIAL_SOURCE_FILE adalah nama file dan jalur ke file sumber kredensial yang digunakan oleh Workload Identity Federation untuk mendapatkan kredensial bagi akun layanan. Ini adalah nilai yang Anda berikan untuk credential-source-file saat Anda mengonfigurasi Workload Identity Federation dengan perintah create-cred-config pada Slangkah 1 di bagian Men-deploy workload Kubernetes. Contoh:
    • Contoh:

      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. Konfigurasi penggantian untuk setiap komponen menggunakan Workload Identity Federation. Pilih petunjuk untuk file sertifikat, rahasia Kubernetes, atau Vault yang sesuai dengan penginstalan Anda. <

    File sertifikasi

    Ganti nilai serviceAccountPath dengan file sumber kredensial. Jalur ini harus berupa jalur yang terkait dengan direktori diagram. Contoh:

    udca:
      serviceAccountPath: fwi/credential-configuration.json
    

    Rahasia K8s

    1. Membuat secret Kubernetes baru menggunakan file sumber kredensial.
      kubectl create secret -n apigee generic SECRET_NAME --from-file="client_secret.json=CREDENTIAL_CONFIGURATION_FILE"

      Contoh:

      kubectl create secret -n apigee generic udca-fwi-secret --from-file="client_secret.json=./fwi/credential-configuration.json"
    2. Ganti nilai serviceAccountRef dengan secret baru. Contoh:
      udca:
        serviceAccountRef: udca-fwi-secret
      

    Vault

    Perbarui kunci akun layanan, SAKEY di Vault dengan file sumber kredensial. Misalnya, untuk UDCA (prosedurnya sama dengan semua komponen):

    SAKEY=$(cat ./fwi/credential-configuration.json); kubectl -n apigee exec vault-0 -- vault kv patch secret/apigee/orgsakeys udca="$SAKEY"
  4. Terapkan perubahan pada setiap komponen yang terpengaruh dengan perintah helm update:

    Jika Anda menggunakan Vault untuk pertama kalinya dengan cluster ini, perbarui diagram apigee-operator:

    helm upgrade operator apigee-operator/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f overrides.yaml
    

    Perbarui diagram lain yang terpengaruh dalam urutan berikut:

    helm upgrade datastore apigee-datastore/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f overrides.yaml
    
    helm upgrade telemetry apigee-telemetry/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f overrides.yaml
    
    helm upgrade $ORG_NAME apigee-org/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f overrides.yaml
    

    Perbarui diagram apigee-env untuk setiap env, dengan mengganti ENV_NAME setiap kali:

    helm upgrade $ENV_NAME apigee-env/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      --set env=$ENV_NAME \
      -f overrides.yaml
    

    Lihat Referensi Helm hybrid Apigee untuk mengetahui daftar komponen dan diagramnya yang terkait.

Untuk mengetahui informasi selengkapnya tentang Workload Identity Federation dan praktik terbaik, lihat Praktik terbaik untuk menggunakan workload identity federation.