Kontrol akses dengan IAM
Topik ini menjelaskan cara menggunakan Identity and Access Management untuk mengontrol cara Config Connector dapat membuat dan mengelola resource Google Cloud.
Untuk menginstal Config Connector, lakukan autentikasi dengan membuat akun layanan IAM, lalu menggunakan Workload Identity for GKE untuk mengikat akun layanan IAM dengan akun layanan Kubernetes. IAM memungkinkan Config Connector mengambil tindakan pada resource tertentu. Dengan membatasi izin yang ditetapkan ke akun layanan, Anda memiliki kontrol yang lebih besar atas jenis resource yang dapat dibuat Config Connector.
Anda dapat memilih untuk mengelola resource dengan satu akun layanan atau beberapa akun layanan.
Satu akun layanan
Saat menginstal Config Connector dengan add-on GKE atau penginstalan manual, Anda dapat menetapkan mode cluster di CustomResource ConfigConnector
.
Dengan mode cluster, Anda dapat menggunakan satu akun layanan IAM untuk membuat dan mengelola resource, meskipun Anda menggunakan Config Connector untuk mengelola beberapa project.
Diagram berikut menunjukkan cara kerja mode ini, saat akun layanan yang sama mengelola dua project:
Beberapa akun layanan
Anda dapat menggunakan beberapa akun layanan dengan menetapkan mode dengan namespace di
ConfigConnector
CustomResource.
Dengan mode namespace, Anda dapat membagi izin berdasarkan pertimbangan masing-masing akun layanan IAM yang berbeda dan mengisolasi izin di antara namespace Kubernetes yang berbeda karena Anda dapat mengaitkan akun layanan yang berbeda untuk setiap namespace.
Pilih mode dengan namespace jika Anda:
- Ingin mengisolasi izin IAM pada level namespace Kubernetes.
- Anda dapat mengelola resource Google Cloud dalam jumlah besar dari beberapa project Google Cloud di satu cluster.
Sebagai contoh, Anda membuat satu akun layanan IAM untuk setiap project, mengatur resource dari setiap project dalam namespace Kubernetes yang sama, lalu mengikat akun layanan IAM terkait ke namespace Kubernetes. Dengan begitu, Anda dapat memisahkan izin IAM untuk setiap project, sehingga setiap project memiliki kumpulan izin yang berbeda dan tidak terkait.
Diagram berikut menunjukkan ringkasan cara kerja mode dengan namespace, dengan setiap project dikelola oleh akun layanan yang berbeda:
Dalam mode namespace, setiap akun layanan IAM terikat dengan namespace secara default. Saat Anda membuat resource dalam namespace tersebut,
Config Connector akan menggunakan akun layanan ini untuk membuat resource
Google Cloud. Ada pod cnrm-controller-manager
Config Connector khusus untuk setiap namespace yang meniru akun layanan IAM yang terkait dengan namespace tersebut.
Untuk mempelajari cara mengonfigurasi mode dengan namespace, lihat Menginstal Config Connector menggunakan mode namespace.
Sesuaikan izin setelah penginstalan
Selama penginstalan Config Connector, Anda mungkin telah memilih peran dasar sementara dan menetapkan peran ke akun layanan yang Config Connector-nya telah Anda konfigurasi. Jika telah mengonfigurasi Config Connector dalam mode namespace, Anda mungkin memiliki lebih dari satu akun layanan IAM.
Setelah menyelesaikan penginstalan, Anda mungkin perlu menghapus atau memperbarui izin yang luas agar sesuai dengan pertimbangan keamanan dan praktik terbaik.
Salah satu keunggulan utama Config Connector adalah alat terpadu. Artinya, Anda dapat menggunakan Config Connector sendiri untuk meningkatkan kualitas peran dan izin IAM. Anda dapat menggunakan resource IAMPolicyMember atau IAMPartialPolicy di Config Connector untuk mengonfigurasi izin IAM. Tindakan ini memerlukan akun layanan IAM dengan izin administrator di seluruh project, folder, atau organisasi Anda. Akun layanan ini harus dikonfigurasi untuk terikat ke penginstalan Config Connector melalui mode cluster atau mode dengan namespace.
Bagian berikut mencantumkan berbagai contoh kebijakan yang menggunakan Config Connector untuk mengelola izin IAM.
Izin pemilik organisasi
Untuk memperluas izin Config Connector agar dapat mengelola semua project dan folder untuk organisasi tertentu, lakukan langkah-langkah berikut:
Buat manifes YAML berikut:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Organization external: ORGANIZATION_ID
Ganti kode berikut:
NAMESPACE
dengan nama namespace AndaSERVICE_ACCOUNT_NAME
dengan nama akun layanan AndaHOST_PROJECT_ID
dengan project ID host akun layanan Andaroles/owner
dengan peran yang sesuaiORGANIZATION_ID
dengan ID organisasi Anda
Terapkan manifes YAML ke cluster Anda menggunakan
kubectl
atau alat pengelolaan konfigurasi pilihan Anda.
Izin pemilik folder
Untuk memperluas izin Config Connector agar dapat mengelola semua project dan folder dalam folder tertentu, selesaikan langkah-langkah berikut:
Buat manifes YAML berikut:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Folder external: folders/FOLDER_ID
Ganti kode berikut:
NAMESPACE
dengan nama namespace AndaSERVICE_ACCOUNT_NAME
dengan nama akun layanan AndaHOST_PROJECT_ID
dengan project ID host akun layanan Andaroles/owner
dengan peran yang sesuaiFOLDER_ID
dengan ID folder Anda
Terapkan manifes YAML ke cluster Anda menggunakan
kubectl
atau alat pengelolaan konfigurasi pilihan Anda.
Izin pemilik project
Agar Config Connector dapat mengelola resource project tertentu, selesaikan langkah-langkah berikut:
Buat manifes YAML berikut:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Project external: projects/PROJECT_ID
Ganti kode berikut:
NAMESPACE
dengan nama namespace AndaSERVICE_ACCOUNT_NAME
dengan nama akun layanan AndaHOST_PROJECT_ID
dengan project ID host akun layanan Andaroles/owner
dengan peran yang sesuaiPROJECT_ID
dengan project ID target Anda
Terapkan manifes YAML ke cluster Anda menggunakan
kubectl
atau alat pengelolaan konfigurasi pilihan Anda.
Peran yang telah ditetapkan
Jika ingin memberikan izin yang lebih terbatas ke Config Connector, Anda dapat menetapkan satu atau beberapa peran IAM ke penginstalan Config Connector dengan membuat beberapa resource IAMPolicyMember atau resource IAMPartialPolicy gabungan. Peran berikut biasanya ditetapkan ke akun layanan Config Connector:
Editor: Memberikan peran editor akan memungkinkan sebagian besar fitur Config Connector kecuali konfigurasi di seluruh Project atau Organisasi seperti modifikasi IAM.
Peran Admin Akun Layanan IAM: Dengan memberikan izin
roles/iam.serviceAccountAdmin
, Config Connector dapat mengonfigurasi akun layanan IAM.Resource Manager: Dengan memberikan peran Resource Manager seperti
roles/resourcemanager.folderCreator
, Config Connector dapat mengelola folder dan organisasi.
Peran khusus
Jika peran yang telah ditetapkan tidak memenuhi kebutuhan, 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.