Halaman ini menjelaskan cara membuat kebijakan 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 melakukan tugas berikut:
- Mengaktifkan Google Kubernetes Engine API. Mengaktifkan Google Kubernetes Engine API
- Jika Anda 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
Sistem role-based access control (RBAC) bawaan pada Kubernetes juga mengelola akses ke resource di cluster Anda. RBAC mengontrol akses di level cluster dan namespace, sementara IAM bekerja 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 yang telah ditetapkan 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/ |
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/ |
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/ |
Kubernetes Engine Cluster Viewer |
Provides access to get and list GKE clusters. |
|
roles/ |
Kubernetes Engine Default Node Service Account | Least privilege role to use as the default service account for GKE Nodes. | |
roles/ |
Kubernetes Engine Developer |
Provides access to Kubernetes API objects inside clusters. |
|
roles/ |
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/ |
Kubernetes Engine Viewer |
Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects. |
|
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:
Buka bagian Peran di halaman IAM & Admin pada konsol Google Cloud.
Untuk melihat peran GKE, di kolom Filter tabel, masukkan
Kubernetes Engine
.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 izincontainer.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 kepada karyawan untuk akun layanan
PROJECT_NUMBER-compute@developer.gserviceaccount.com
, sehingga akun karyawan tersebut dapat mengakses akun layanan default Compute Engine. Akun layanan ini memiliki peran Editor, yang menyediakan serangkaian izin yang luas.