Workload Identity

Workload Identity Federation for GKE (WIF) adalah mekanisme yang memungkinkan workload cluster Anda mengakses resource cloud eksternal dengan Akun Layanan Kubernetes. WIF adalah cara yang direkomendasikan bagi aplikasi yang berjalan dalam cluster terlampir GKE untuk mengakses Google Cloud layanan. Saat Anda mendaftarkan cluster, cluster terlampir GKE API akan membuat semua infrastruktur yang diperlukan untuk WIF, dengan dukungan untuk cluster yang menggunakan penerbit OIDC publik atau pribadi.

Semua komponen GKE yang terhubung kembali ke Google Cloud, seperti agen Connect dan telemetri, menggunakan Workload Identity Federation for GKE.

Akun layanan Kubernetes dan Workload Identity Federation for GKE

Saat Pod berjalan, Pod akan menggunakan akun layanan Kubernetes untuk mengotorisasi aksesnya ke resource yang dihosting dalam clusternya. Dengan menggunakan WIF, Pod dapat menggunakan Akun Layanan Kubernetes (KSA) yang sama untuk mendapatkan token berumur pendek guna mengakses resource yang dihosting di luar cluster.

WIF memerlukan hubungan kepercayaan antara penyedia identitas OIDC di dalam cluster dan penyedia resource eksternal, seperti Google Cloud IAM. Saat Anda mendaftarkan Cluster Terlampir, proses pendaftaran akan otomatis membuat hubungan kepercayaan ini dengan menambahkan layanan OIDC cluster Anda ke workload identity pool default yang terikat ke project Anda. Google Cloud

Workload identity pool ini adalah kumpulan penyedia identitas tepercaya project Google Anda dan diberi nama PROJECT_ID.svc.id.goog, dengan PROJECT_ID adalah Project ID Google yang terkait dengan cluster terlampir Anda.

Anda dapat menggunakan kebijakan Google Cloud IAM reguler untuk mengontrol akses oleh Akun Layanan Kubernetes ke layanan Google Cloud . Akun utama Layanan Kubernetes adalah representasi KSA dalam workload identity pool. Formatnya adalah sebagai berikut:

serviceAccount:WORKLOAD_IDENTITY_POOL_NAME[KSA_NAMESPACE/KSA_NAME]

Untuk memberikan peran ke akun layanan Kubernetes, gunakan perintah berikut:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[KSA_NAMESPACE/KSA_NAME]" \
  --role=IAM_ROLE

Ganti:

  • PROJECT_ID: Project ID Google Cloud Anda
  • KSA_NAMESPACE: namespace cluster tempat akun layanan ini berada
  • KSA_NAME: nama akun layanan Kubernetes yang ingin Anda berikan izinnya
  • IAM_ROLE: peran yang ingin Anda berikan ke KSA ini Google Cloud