Workload Identity

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

Semua layanan GKE Enterprise yang terhubung kembali ke Google Cloud, seperti agen Connect dan telemetri, menggunakan Workload Identity.

Akun layanan Kubernetes dan Workload Identity

Saat berjalan, Pod menggunakan akun layanan Kubernetes untuk mengizinkan aksesnya ke resource yang dihosting dalam cluster-nya. Dengan menggunakan WIF, Pod dapat menggunakan Akun Layanan Kubernetes (KSA) yang sama untuk mendapatkan token berumur singkat 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 kumpulan identitas beban kerja default yang terikat dengan project Google Cloud Anda.

Kumpulan identitas workload ini adalah kumpulan penyedia identitas tepercaya project Google Anda dan diberi nama PROJECT_ID.svc.id.goog, dengan PROJECT_ID sebagai Project ID Google yang terkait dengan cluster yang terpasang.

Anda dapat menggunakan kebijakan Google Cloud IAM reguler untuk mengontrol akses oleh Akun Layanan Kubernetes ke layanan Google Cloud. Entity utama Akun Layanan Kubernetes adalah representasi KSA dalam kumpulan workload identity. Formatnya 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 izinnya ingin Anda berikan
  • IAM_ROLE: peran Google Cloud yang ingin Anda berikan ke KSA ini