Membuat kebijakan izin IAM


Halaman ini menjelaskan cara membuat kebijakan izin Identity and Access Management (IAM) untuk otorisasi di Google Kubernetes Engine (GKE).

Ringkasan

Setiap panggilan Google Cloud, GKE, dan Kubernetes API mengharuskan akun yang membuat permintaan memiliki izin yang diperlukan. Secara default, tidak ada orang kecuali Anda yang dapat mengakses project Anda atau resource-nya. Anda dapat menggunakan IAM untuk mengelola siapa yang dapat mengakses project Anda dan apa yang boleh mereka lakukan. Izin IAM berfungsi bersama Kubernetes RBAC, yang menyediakan kontrol akses terperinci untuk objek tertentu di dalam cluster atau namespace. IAM memiliki fokus yang lebih kuat pada izin di level project dan organisasi, meskipun menyediakan beberapa peran bawaan khusus untuk GKE.

Untuk memberi pengguna dan akun layanan akses ke project Google Cloud, Anda dapat menambahkan mereka sebagai anggota tim project, lalu menetapkan peran kepada anggota tim. Peran menentukan resource Google Cloud yang dapat diakses oleh akun dan operasi yang dapat dilakukannya.

Di GKE, Anda juga dapat menggunakan IAM untuk mengelola pengguna dan akun layanan mana yang dapat mengakses, serta melakukan operasi di dalam cluster Anda.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Interaksi dengan Kubernetes RBAC

Kubernetes memiliki mekanisme kontrol akses bawaan, kontrol akses berbasis peran (RBAC). RBAC mengontrol akses di level cluster dan namespace, sementara IAM berfungsi di level project.

IAM dan RBAC dapat bekerja sama. Entity harus memiliki izin RBAC dan IAM yang memadai agar dapat bekerja dengan resource di cluster Anda.

Peran IAM

Bagian berikut menjelaskan peran IAM yang tersedia di Google Cloud.

Peran GKE yang telah ditetapkan

IAM menyediakan peran bawaan yang memberikan akses ke resource Google Cloud tertentu dan mencegah akses tidak sah ke resource lainnya.

IAM menawarkan peran bawaan berikut untuk GKE.

Role Title Description Lowest resource
roles/container.admin Kubernetes Engine Admin

Provides access to full management of clusters and their Kubernetes API objects.

To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.cloudKmsKeyUser Kubernetes Engine KMS Crypto Key User Allow the Kubernetes Engine service agent in the cluster project to call KMS with user provided crypto keys to sign payloads.
roles/container.clusterAdmin Kubernetes Engine Cluster Admin

Provides access to management of clusters.

To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

  • Project
roles/container.clusterViewer Kubernetes Engine Cluster Viewer

Provides access to get and list GKE clusters.

roles/container.defaultNodeServiceAccount Kubernetes Engine Default Node Service Account Least privilege role to use as the default service account for GKE Nodes.
roles/container.developer Kubernetes Engine Developer

Provides access to Kubernetes API objects inside clusters.

  • Project
roles/container.hostServiceAgentUser Kubernetes Engine Host Service Agent User

Allows the Kubernetes Engine service account in the host project to configure shared network resources for cluster management. Also gives access to inspect the firewall rules in the host project.

roles/container.viewer Kubernetes Engine Viewer

Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects.

  • Project

Untuk mengetahui daftar lengkap masing-masing izin dalam setiap peran, lihat peran Google Kubernetes Engine. Anda juga dapat melihat izin di setiap peran IAM menggunakan gcloud CLI atau konsol Google Cloud. Untuk mendapatkan petunjuk, baca bagian Melihat izin yang diberikan oleh peran IAM.

Peran IAM dasar

Peran IAM Dasar memberi pengguna akses global level project ke semua resource Google Cloud. Agar project dan cluster Anda tetap aman, gunakan Peran yang telah ditetapkan jika memungkinkan.

Untuk mempelajari peran dasar lebih lanjut, lihat Peran dasar dalam dokumentasi IAM.

Peran Pengguna Akun Layanan

Peran Pengguna Akun Layanan memberi akun pengguna Google Cloud izin untuk melakukan tindakan seolah-olah akun layanan melakukannya.

  • Memberikan peran iam.serviceAccountUser kepada pengguna untuk sebuah project akan memberi pengguna semua peran yang diberikan ke semua akun layanan dalam project tersebut, termasuk akun layanan yang dapat dibuat di masa depan.

  • Memberikan peran iam.serviceAccountUser kepada pengguna untuk akun layanan tertentu akan memberi pengguna semua peran yang diberikan ke akun layanan tersebut.

Peran ini mencakup izin berikut:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Untuk mengetahui informasi selengkapnya tentang peran ServiceAccountUser, lihat ServiceAccountUser di dokumentasi IAM.

Perintah berikut menunjukkan sintaksis untuk memberikan peran Pengguna Akun Layanan:

gcloud iam service-accounts add-iam-policy-binding \
  SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --member=user:USER \
  --role=roles/iam.serviceAccountUser

Ganti kode berikut:

  • SA_NAME: nama akun layanan.
  • PROJECT_ID: ID project Google Cloud Anda.
  • USER: alamat email untuk pengguna.

Peran Pengguna Host Agen Layanan

Peran Pengguna Host Agen Layanan hanya digunakan di cluster VPC Bersama. Peran ini mencakup izin berikut:

  • compute.firewalls.get
  • container.hostServiceAgent.*
  • dns.networks.bindDNSResponsePolicy
  • dns.networks.bindPrivateDNSPolicy
  • dns.networks.bindPrivateDNSZone

Peran khusus

Jika peran yang telah ditetapkan tidak memenuhi kebutuhan Anda, Anda dapat membuat peran khusus dengan izin yang Anda tentukan.

Untuk mempelajari cara membuat dan menetapkan peran khusus, baca artikel Membuat dan mengelola peran khusus.

Melihat izin yang diberikan oleh peran IAM

Anda dapat melihat izin yang diberikan oleh setiap peran menggunakan gcloud CLI atau konsol Google Cloud.

gcloud

Untuk melihat izin yang diberikan oleh peran tertentu, jalankan perintah berikut:

gcloud iam roles describe roles/ROLE

Ganti ROLE dengan peran IAM apa saja. Peran GKE diawali dengan roles/container, seperti gcloud iam roles describe roles/container.admin.

Konsol

Untuk melihat izin yang diberikan oleh peran tertentu, lakukan langkah-langkah berikut:

  1. Buka bagian Peran di halaman IAM & Admin pada konsol Google Cloud.

    Buka IAM & Admin

  2. Untuk melihat peran GKE, di kolom Filter tabel, masukkan Kubernetes Engine.

  3. Pilih peran yang ingin Anda lihat. Deskripsi peran dan daftar izin yang ditetapkan akan ditampilkan.

Mengelola peran IAM

Untuk mempelajari cara mengelola peran dan izin IAM untuk pengguna manusia, baca artikel Memberikan, mengubah, dan mencabut akses ke anggota project dalam dokumentasi IAM.

Untuk akun layanan, lihat bagian Memberikan peran ke akun layanan.

Contoh

Berikut beberapa contoh cara kerja IAM dengan GKE:

  • Seorang karyawan baru telah bergabung dengan sebuah perusahaan. Keduanya perlu ditambahkan ke project Google Cloud, tetapi mereka hanya perlu melihat cluster project dan resource Google Cloud lainnya. Pemilik project menetapkan peran Compute Viewer di level project. Peran ini memberikan akses hanya baca untuk mendapatkan dan membuat daftar node, yang merupakan resource Compute Engine.
  • Karyawan tersebut sedang bekerja di bidang operasi, dan perlu mengupdate cluster menggunakan gcloud atau konsol Google Cloud. Operasi ini memerlukan izin container.clusters.update, sehingga pemilik project memberinya peran Admin Cluster Kubernetes Engine. Karyawan tersebut kini memiliki izin yang diberikan oleh peran Admin Cluster Kubernetes Engine dan Compute Viewer.
  • Karyawan perlu menyelidiki alasan terjadinya masalah pada Deployment. Mereka perlu menjalankan kubectl get pods untuk melihat Pod yang berjalan di cluster. Karyawan tersebut sudah memiliki peran Compute Viewer, yang berarti tidak cukup untuk membuat daftar Pod. Karyawan memerlukan peran Kubernetes Engine Viewer.
  • Karyawan perlu membuat cluster baru. Pemilik project memberikan peran Pengguna Akun Layanan di akun layanan PROJECT_NUMBER-compute@developer.gserviceaccount.com kepada karyawan sehingga akun karyawan tersebut dapat mengakses akun layanan default Compute Engine. GKE melampirkan akun layanan ini ke node secara default sehingga workload sistem dapat mengirim data seperti log dan metrik ke Google Cloud.

Langkah selanjutnya