Mengautentikasi ke API Google Cloud dari workload fleet dengan kepercayaan campuran

Halaman ini menunjukkan cara mengonfigurasi aplikasi untuk melakukan autentikasi ke Google Cloud API seperti Compute Engine API atau AI Platform API dari fleet yang memiliki model kepercayaan campuran di seluruh fleet. Jika fleet Anda memiliki model kepercayaan bersama di seluruh fleet, lihat Mengautentikasi ke Google Cloud API dari workload fleet kepercayaan bersama.

Halaman ini ditujukan untuk admin dan operator Platform serta untuk engineer Keamanan yang ingin mengautentikasi secara terprogram dari workload fleet ke API Google Cloud. Untuk mempelajari lebih lanjut peran pengguna dan contoh tugas yang kami referensikan dalam dokumentasi Google Cloud, lihat Tugas dan peran pengguna GKE Enterprise umum.

Sebelum membaca halaman ini, pastikan Anda memahami konsep berikut:

Tentang Workload Identity Federation armada untuk lingkungan kepercayaan campuran

Fleet Workload Identity Federation memungkinkan Anda memberikan peran IAM pada Google Cloud API dan resource ke entitas di fleet, seperti workload dalam namespace tertentu. Secara default, project host fleet Anda menggunakan workload identity pool yang dikelola Google untuk menyediakan identitas bagi entity di seluruh fleet. Namun, dalam lingkungan kepercayaan campuran seperti fleet multi-tenant atau dalam project host fleet yang menjalankan cluster mandiri, sebaiknya Anda mengonfigurasi workload identity pool terkelola mandiri terpisah untuk sebagian workload dan cluster Anda.

Entitas yang menggunakan workload identity pool mandiri memiliki ID yang berbeda dalam kebijakan IAM dibandingkan dengan entitas yang menggunakan workload identity pool yang dikelola Google dari project host fleet. Hal ini memastikan bahwa pemberian akses ke akun utama di namespace armada tertentu tidak secara tidak sengaja memberikan akses ke akun utama lain yang cocok dengan ID.

Workload identity pool yang dikelola sendiri mengharuskan Anda menggunakan cakupan tim. Cakupan tim memungkinkan Anda mengontrol akses ke subset resource fleet per tim. Anda mengikat cakupan tim tertentu ke cluster anggota fleet tertentu untuk mengizinkan tim tersebut men-deploy workload di cluster tersebut. Dalam cakupan tim, anggota tim hanya dapat men-deploy workload ke namespace fleet.

Menggunakan workload identity pool mandiri untuk memberikan identitas bagi workload cakupan tim memiliki manfaat seperti berikut:

  • Pastikan bahwa pemberian akses ke entitas di namespace fleet tidak diterapkan secara tidak sengaja ke entitas di namespace atau cluster lain.
  • Konfigurasikan sekumpulan cluster fleet untuk mendapatkan identitas dari kumpulan yang dikelola sendiri dengan mengikatkannya ke cakupan tim dan menyiapkan kumpulan yang dikelola sendiri sebagai penyedia identitas di cluster tersebut.
  • Konfigurasikan sebagian cluster terikat cakupan tim untuk mendapatkan identitas dari kumpulan yang dikelola sendiri dengan hanya menyiapkan kumpulan yang dikelola sendiri sebagai penyedia identitas di cluster tertentu.

Contoh kesamaan identitas di lingkungan kepercayaan campuran

Pertimbangkan skenario berikut:

  • Anda memiliki dua cluster anggota fleet: frontend-cluster dan finance-cluster.
  • Anda belum mengonfigurasi workload identity pool mandiri.
  • Anda membuat cakupan tim finance-team dan namespace fleet finance-ns dalam cakupan tim.
  • Anda mengikat cluster finance-cluster ke cakupan tim finance-team.
  • Anda memberikan peran IAM ke ServiceAccount Kubernetes finance-sa di namespace fleet finance-ns.

Setiap workload yang memenuhi kriteria berikut memiliki identitas yang sama:

  • Berjalan di namespace fleet finance-ns.
  • Gunakan ServiceAccount finance-sa.

Namun, jika seseorang di cluster frontend-cluster membuat namespace Kubernetes finance-ns dan ServiceAccount finance-sa, dia akan mendapatkan identitas yang sama dengan workload di cluster finance-cluster. Hal ini karena seluruh fleet menggunakan workload identity pool yang dikelola Google dari project host fleet, dan karena ID utama tidak menentukan cluster host.

Pertimbangkan perubahan berikut pada skenario sebelumnya:

  • Anda menyiapkan workload identity pool mandiri di fleet.
  • Anda mengonfigurasi cluster finance-cluster untuk mendapatkan identitas dari kumpulan yang dikelola sendiri, bukan dari kumpulan yang dikelola Google.
  • Anda membuat pemberian peran IAM yang menentukan kumpulan yang dikelola sendiri di ID akun utama, bukan kumpulan yang dikelola Google.

Workload yang berjalan di namespace fleet finance-ns di finance-cluster kini mendapatkan identitas dari kumpulan yang dikelola sendiri. Namun, entitas di namespace Kubernetes finance-ns di cluster frontend-cluster terus mendapatkan identitas dari workload identity pool yang dikelola Google dari project host armada.

Perubahan ini menghasilkan manfaat berikut:

  • Anda dapat memberikan peran secara eksplisit ke entitas di namespace armada finance-ns.
  • Entitas dalam cluster frontend-cluster tidak bisa mendapatkan akses yang sama karena identitas dalam cluster frontend-cluster berasal dari workload identity pool yang dikelola Google.

Sebelum memulai

  • Pastikan Anda telah menginstal alat command line berikut:

    • Google Cloud CLI versi terbaru, yang mencakup gcloud, alat command line untuk berinteraksi dengan Google Cloud.
    • kubectl

    Jika Anda menggunakan Cloud Shell sebagai lingkungan shell untuk berinteraksi dengan Google Cloud, alat ini akan diinstal untuk Anda.

  • Pastikan Anda telah melakukan inisialisasi gcloud CLI untuk digunakan dengan project Anda.

Persyaratan

Anda harus menggunakan fitur pengelolaan tim fleet seperti cakupan tim dan namespace fleet di fleet Anda. Petunjuk di halaman ini menunjukkan cara mengonfigurasi contoh cakupan tim dan namespace armada.

Menyiapkan cluster

Sebelum aplikasi di fleet Anda dapat menerima identitas gabungan, cluster tempat aplikasi tersebut berjalan harus terdaftar ke fleet Anda dan dikonfigurasi dengan benar untuk menggunakan Workload Identity Federation fleet. Bagian berikut menjelaskan cara menyiapkan Workload Identity Federation untuk berbagai jenis cluster.

GKE

Untuk cluster GKE, lakukan hal berikut:

  1. Aktifkan Federasi Workload Identity untuk GKE di cluster Google Kubernetes Engine, jika belum diaktifkan.
  2. Daftarkan cluster ke fleet.

Anda juga dapat mengaktifkan Workload Identity Federation untuk GKE selama proses pembuatan cluster dan pendaftaran fleet.

Cluster di luar Google Cloud

Jenis cluster berikut akan otomatis mengaktifkan Workload Identity Federation fleet dan terdaftar ke fleet Anda selama pembuatan cluster:

  • Google Distributed Cloud (khusus software) di VMware
  • Google Distributed Cloud (khusus software) di bare metal
  • GKE di AWS
  • GKE di Azure

Cluster terpasang

Cluster yang terpasang EKS dan AKS yang terdaftar menggunakan GKE Multi-Cloud API terdaftar dengan Workload Identity Federation fleet yang diaktifkan secara default. Cluster lain yang terpasang dapat didaftarkan dengan mengaktifkan Workload Identity Federation fleet jika memenuhi persyaratan yang diperlukan. Ikuti petunjuk untuk jenis cluster Anda di Mendaftarkan cluster.

Menyiapkan workload identity pool IAM

Di bagian ini, Anda akan membuat workload identity pool IAM baru di project host fleet dan memberi agen layanan fleet akses ke kumpulan baru.

  1. Buat workload identity pool:

    gcloud iam workload-identity-pools create POOL_NAME \
        --location=global \
        --project=POOL_HOST_PROJECT_ID \
        --mode=TRUST_DOMAIN
    

    Ganti kode berikut:

    • POOL_NAME: nama workload identity pool baru.
    • POOL_HOST_PROJECT_ID: project ID dari project tempat Anda ingin membuat workload identity pool mandiri. Anda dapat menggunakan project Google Cloud apa pun, termasuk project host fleet.
  2. Berikan peran IAM Workload Identity Pool Admin (roles/iam.workloadIdentityPoolAdmin) di workload identity pool baru kepada agen layanan armada:

    gcloud iam workload-identity-pools add-iam-policy-binding POOL_NAME \
        --project=POOL_HOST_PROJECT_ID \
        --location=global \
        --member=serviceAccount:service-FLEET_HOST_PROJECT_NUMBER@gcp-sa-gkehub. \
        --role=roles/iam.workloadIdentityPoolAdmin \
        --condition=None
    

    Ganti FLEET_HOST_PROJECT_NUMBER dengan nomor project untuk project host fleet.

Menambahkan kumpulan yang dikelola sendiri ke konfigurasi armada

Di bagian ini, Anda mengaktifkan kumpulan yang dikelola sendiri dengan Workload Identity Federation fleet dan menambahkan kumpulan yang Anda buat ke konfigurasi fleet. Bagian ini juga memberikan petunjuk untuk membuat cakupan tim dan namespace fleet baru. Jika fleet Anda sudah mengonfigurasi cakupan tim dan namespace fleet, lewati langkah-langkah tersebut.

  1. Aktifkan Workload Identity Federation armada di tingkat armada:

    gcloud beta container fleet workload-identity enable \
      --project=FLEET_HOST_PROJECT_ID
    

    Ganti FLEET_HOST_PROJECT_ID dengan project ID untuk project host fleet Anda.

  2. Tambahkan workload identity pool mandiri ke konfigurasi fleet:

    gcloud beta container fleet workload-identity scope-tenancy-pool set POOL_NAME
    

    Ganti POOL_NAME dengan nama kumpulan identitas beban kerja yang dikelola sendiri. Nilai ini memiliki sintaksis berikut:

    POOL_NAME.global.POOL_HOST_PROJECT_NUMBER.workload.id.goog
    

    TODO

  3. Buat cakupan tim baru. Jika Anda sudah memiliki cakupan tim dan namespace armada, lanjutkan ke bagian Memverifikasi konfigurasi workload identity pool.

    gcloud container fleet scopes create SCOPE_NAME
    

    Ganti SCOPE_NAME dengan nama cakupan tim baru Anda.

  4. Buat namespace fleet baru dalam cakupan tim:

    gcloud container fleet scopes namespaces create NAMESPACE_NAME \
        --scope=SCOPE_NAME
    

    Ganti NAMESPACE_NAME dengan nama namespace fleet baru Anda.

  5. Ikat cluster di fleet Anda ke cakupan tim:

    gcloud container fleet memberships bindings create BINDING_NAME \
        --membership=FLEET_CLUSTER_NAME \
        --location=global \
        --scope=SCOPE_NAME
    

    Ganti kode berikut:

    • BINDING_NAME: nama untuk binding keanggotaan baru Anda.
    • FLEET_CLUSTER_NAME: nama cluster armada yang ada untuk diikat ke cakupan tim.

Memverifikasi konfigurasi workload identity pool

Di bagian ini, Anda akan memastikan bahwa konfigurasi workload identity pool mandiri Anda berhasil.

  1. Jelaskan konfigurasi keanggotaan fleet:

    gcloud container fleet memberships describe FLEET_CLUSTER_NAME \
        --location=global
    

    Ganti FLEET_CLUSTER_NAME dengan nama cluster fleet yang ada dan terikat dengan cakupan tim apa pun di fleet Anda.

    Outputnya mirip dengan hal berikut ini:

    authority:
    ...
      scopeTenancyIdentityProvider: https://gkehub.googleapis.com/projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/FLEET_CLUSTER_NAME
      scopeTenancyWorkloadIdentityPool: POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog
      workloadIdentityPool: FLEET_HOST_PROJECT_ID.svc.id.goog
    ...
    

    Output ini harus berisi kolom berikut:

    • scopeTenancyIdentityProvider: penyedia identitas untuk beban kerja yang berjalan di namespace fleet dalam cakupan tim. Nilainya adalah ID resource untuk cluster Anda.
    • scopeTenancyWorkloadIdentityPool: workload identity pool tempat workload di namespace fleet dalam cakupan tim mendapatkan ID. Nilainya adalah workload identity pool yang dikelola sendiri, dengan format POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog.
    • workloadIdentityPool: nama kumpulan identitas workload yang dikelola Google dari project host fleet, tempat semua workload lain di fleet mendapatkan identitas secara default.
  2. Opsional: Periksa apakah kumpulan identitas beban kerja Anda memiliki namespace yang memiliki nama yang sama dengan namespace fleet Anda:

    gcloud iam workload-identity-pools namespaces list \
        --workload-identity-pool=POOL_NAME \
        --location=global
    

    Outputnya mirip dengan hal berikut ini:

    ---
    description: Fleet namespace NAMESPACE_NAME
    name: projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME/namespaces/NAMESPACE_NAME
    state: ACTIVE
    
  3. Opsional: Periksa apakah namespace workload identity pool memiliki aturan pengesahan yang mereferensikan namespace fleet Anda:

    gcloud iam workload-identity-pools namespaces list-attestation-rules NAMESPACE_NAME \
        --workload-identity-pool=POOL_NAME \
        --location=global
    

    Outputnya mirip dengan hal berikut ini:

    ---
    googleCloudResource:
    //gkehub.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/name/locations/global/scopes/-/namespaces/NAMESPACE_NAME
    

Sekarang, fleet Anda dapat menggunakan kumpulan workload identity mandiri untuk mendapatkan identitas untuk workload yang berjalan di namespace fleet. Untuk mulai menggunakan kumpulan yang dikelola sendiri, konfigurasikan cara cluster tertentu mendapatkan identitas, seperti yang dijelaskan di bagian berikutnya.

Membuat beban kerja menggunakan kumpulan yang dikelola sendiri untuk identitas

Agar workload menggunakan kumpulan yang dikelola sendiri, Anda harus mengonfigurasi namespace fleet tertentu di cluster anggota fleet menggunakan ConfigMap Kubernetes. Konfigurasi per cluster dan per namespace ini memungkinkan Anda lebih lanjut mengurangi cakupan pemberian akses dari seluruh namespace fleet ke workload yang berjalan di namespace fleet tertentu di cluster tertentu.

  1. Hubungkan ke cluster anggota fleet Anda:

    gcloud container clusters get-credentials FLEET_CLUSTER_NAME \
        --project=CLUSTER_PROJECT_ID \
        --location=CLUSTER_LOCATION
    

    Ganti kode berikut:

    • FLEET_CLUSTER_NAME: nama cluster anggota fleet yang sudah terikat dengan cakupan tim.
    • CLUSTER_PROJECT_ID: project ID project cluster.
    • CLUSTER_LOCATION: lokasi cluster.
  2. Mendapatkan nama lengkap workload identity pool yang dikelola sendiri. Anda memerlukannya nanti.

    kubectl get membership membership -o json | jq -r ".spec.scope_tenancy_workload_identity_pool"
    

    Outputnya mirip dengan hal berikut ini:

    POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog
    
  3. Mendapatkan nama penyedia identitas untuk cakupan tim. Anda akan membutuhkannya nanti.

    kubectl get membership membership -o json | jq -r ".spec.scope_tenancy_identity_provider"
    

    Outputnya mirip dengan hal berikut ini:

    https://gkehub.googleapis.com/projects/FLEET_HOST_PROJECT_ID/locations/global/memberships/FLEET_CLUSTER_NAME
    
  4. Di editor teks, simpan manifes YAML berikut untuk ConfigMap sebagai self-managed-pool.yaml:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      namespace: NAMESPACE_NAME
      name: google-application-credentials
    data:
      config: |
        {
          "type": "external_account",
          "audience": "identitynamespace:SELF_MANAGED_POOL_FULL_NAME:IDENTITY_PROVIDER",
          "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
          "token_url": "https://sts.googleapis.com/v1/token",
          "credential_source": {
            "file": "/var/run/secrets/tokens/gcp-ksa/token"
          }
        }
    

    Ganti kode berikut:

    • NAMESPACE_NAME: nama namespace fleet.
    • SELF_MANAGED_POOL_FULL_NAME: nama lengkap workload identity pool yang dikelola sendiri dari output langkah sebelumnya di bagian ini. Contoh, example-pool.global.1234567890.workload.id.goog.
    • IDENTITY_PROVIDER: nama penyedia identitas dari output langkah sebelumnya di bagian ini. Sebagai contoh, https://gkehub.googleapis.com/projects/1234567890/locations/global/memberships/example-cluster.
  5. Deploy ConfigMap di cluster Anda:

    kubectl create -f self-managed-pool.yaml
    

Men-deploy ConfigMap menunjukkan kepada GKE bahwa workload di namespace tersebut harus menggunakan workload identity pool mandiri untuk mendapatkan identitas.

Memberikan peran IAM ke akun utama

Di bagian ini, Anda akan membuat Akun Layanan Kubernetes di namespace fleet dan memberikan peran IAM ke Akun Layanan. Pod yang menggunakan ServiceAccount ini kemudian dapat mengakses resource Google Cloud tempat Anda memberikan peran.

  1. Buat Akun Layanan Kubernetes di namespace fleet Anda:

    kubectl create serviceaccount SERVICEACCOUNT_NAME \
        --namespace=NAMESPACE_NAME
    

    Ganti kode berikut:

    • SERVICEACCOUNT_NAME: nama ServiceAccount baru Anda.
    • NAMESPACE_NAME: nama namespace fleet.
  2. Berikan peran IAM ke ServiceAccount. Contoh perintah berikut memberikan peran Storage Object Viewer (roles/storage.objectViewer) pada bucket ke ServiceAccount:

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member=principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog/subject/ns/NAMESPACE_NAME/sa/SERVICEACCOUNT_NAME \
        --role=roles/storage.objectViewer \
        --condition=None
    

Flag member berisi ID akun utama untuk ServiceAccount baru yang Anda buat. Permintaan yang dikirim workload Anda ke API Google Cloudmenggunakan token akses gabungan. Token akses gabungan ini menyertakan ID akun utama entitas yang mengirim permintaan. Jika akun utama dalam kebijakan izin yang memberikan peran pada resource target cocok dengan akun utama dalam token akses gabungan, autentikasi dan otorisasi dapat dilanjutkan.

Men-deploy workload yang menggunakan kumpulan yang dikelola sendiri

Manifes Kubernetes yang Anda terapkan di namespace fleet harus dikonfigurasi untuk mendapatkan identitas dari kumpulan yang dikelola sendiri. Workload yang Anda deploy yang perlu memanggil API Google Cloud harus menyertakan kolom berikut:

  • metadata.namespace: nama namespace fleet.
  • spec.serviceAccountName: nama ServiceAccount Kubernetes di namespace fleet.
  • spec.containers.env: variabel lingkungan bernama GOOGLE_APPLICATION_CREDENTIALS yang menunjukkan jalur ke file Kredensial Default Aplikasi (ADC).
  • spec.containers.volumeMounts: volume hanya baca yang memungkinkan penampung menggunakan token pembawa untuk ServiceAccount.
  • spec.volumes: volume yang diproyeksikan yang memasang token ServiceAccount ke dalam Pod. Audiens token adalah workload identity pool yang dikelola sendiri. ConfigMap yang berisi konfigurasi Workload Identity Federation fleet adalah sumber untuk volume.

Untuk contoh file manifes yang dikonfigurasi dengan benar, lihat bagian Memverifikasi autentikasi dari workload.

Memverifikasi autentikasi dari workload

Bagian ini memberikan petunjuk opsional untuk memverifikasi bahwa Anda telah mengonfigurasi workload identity pool mandiri dengan benar dengan mencantumkan isi contoh bucket Cloud Storage. Anda membuat bucket, memberikan peran pada bucket ke ServiceAccount di namespace fleet, dan men-deploy Pod untuk mencoba dan mengakses bucket.

  1. Membuat bucket Cloud Storage:

    gcloud storage buckets create gs://FLEET_HOST_PROJECT_ID-workload-id-bucket \
        --location=LOCATION \
        --project=FLEET_HOST_PROJECT_ID
    
  2. Berikan peran roles/storage.objectViewer di bucket ke ServiceAccount di namespace fleet:

    gcloud storage buckets add-iam-policy-binding gs://FLEET_HOST_PROJECT_ID-workload-id-bucket \
        --condition=None \
        --role=roles/storage.objectViewer \
        --member=principal://iam.googleapis.com/projects/FLEET_PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog/subject/ns/NAMESPACE_NAME/sa/SERVICEACCOUNT_NAME
    

    Ganti kode berikut:

    • FLEET_HOST_PROJECT_NUMBER: nomor project dari project host fleet Anda.
    • POOL_NAME: nama workload identity pool yang dikelola sendiri.
    • NAMESPACE_NAME: nama namespace fleet tempat Anda ingin menjalankan Pod.
    • SERVICEACCOUNT_NAME: nama Kubernetes ServiceAccount yang harus digunakan Pod.
  3. Simpan manifes berikut sebagai pod-bucket-access.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: bucket-access-pod
      namespace:  NAMESPACE_NAME
    spec:
      serviceAccountName: SERVICEACCOUNT_NAME
      containers:
      - name: sample-container
        image: google/cloud-sdk:slim
        command: ["sleep","infinity"]
        env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /var/run/secrets/tokens/gcp-ksa/google-application-credentials.json
        volumeMounts:
        - name: gcp-ksa
          mountPath: /var/run/secrets/tokens/gcp-ksa
          readOnly: true
      volumes:
      - name: gcp-ksa
        projected:
          defaultMode: 420
          sources:
          - serviceAccountToken:
              path: token
              audience: POOL_NAME.global.FLEET_HOST_PROJECT_NUMBER.workload.id.goog
              expirationSeconds: 172800
          - configMap:
              name: my-cloudsdk-config
              optional: false
              items:
              - key: "config"
                path: "google-application-credentials.json"
    

    Ganti kode berikut:

    • NAMESPACE_NAME: nama namespace fleet tempat Anda ingin menjalankan Pod.
    • SERVICEACCOUNT_NAME: nama Kubernetes ServiceAccount yang harus digunakan Pod.
    • POOL_NAME: nama workload identity pool yang dikelola sendiri.
    • FLEET_HOST_PROJECT_NUMBER: nomor project dari project host fleet Anda.
  4. Deploy Pod di cluster Anda:

    kubectl apply -f pod-bucket-access.yaml
    
  5. Buka sesi shell di Pod:

    kubectl exec -it bucket-access-pod -n NAMESPACE_NAME -- /bin/bash
    
  6. Coba buat daftar objek di bucket:

    curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        "https://storage.googleapis.com/storage/v1/b/FLEET_HOST_PROJECT_ID-workload-id-bucket/o"
    

    Outputnya adalah sebagai berikut:

    {
      "kind": "storage#objects"
    }
    

Secara opsional, Anda dapat memverifikasi bahwa namespace dan ServiceAccount yang serupa di cluster anggota fleet yang berbeda tidak akan dapat menyatakan identitas yang sama. Di cluster yang menggunakan Workload Identity Federation armada, tetapi tidak memiliki namespace armada atau konfigurasi kumpulan yang dikelola sendiri, lakukan langkah-langkah berikut:

  1. Buat namespace Kubernetes baru dengan nama yang sama dengan namespace fleet tempat Anda menyiapkan workload identity pool mandiri.
  2. Buat ServiceAccount Kubernetes baru dengan nama yang sama dengan ServiceAccount tempat Anda memberikan peran IAM di bagian sebelumnya.
  3. Deploy Pod yang menggunakan ServiceAccount dan namespace yang sama, tetapi kolom spec.volumes.projected.sources.serviceAccountToken menentukan workload identity pool yang dikelola Google. Kumpulan ini memiliki sintaksis berikut:

    FLEET_HOST_PROJECT_ID.svc.id.goog
    
  4. Coba akses bucket Cloud Storage dari sesi shell di Pod.

Output-nya harus berupa error 401: Unauthorized, karena ID akun utama untuk Pod yang menggunakan kumpulan workload identity yang dikelola Google berbeda dengan ID akun utama untuk Pod yang menggunakan kumpulan yang dikelola sendiri.

Langkah berikutnya