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, Anda melakukan autentikasi dengan membuat IAM akun layanan, lalu gunakan Workload Identity Federation for GKE for GKE untuk melakukan binding IAM akun layanan dengan akun layanan Kubernetes. IAM memungkinkan Config Connector mengambil tindakan pada resource tertentu. Dengan membatasi izin ke akun layanan, Anda memiliki kontrol yang lebih besar atas jenis resource yang dapat dibuat oleh Config Connector.
Anda dapat mengelola resource dengan satu atau beberapa akun layanan akun layanan.
Satu akun layanan
Saat Anda menginstal Config Connector dengan add-on GKE atau manual
Anda dapat menyetel mode cluster di ConfigConnector
CustomResource.
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, di mana layanan yang sama mengelola dua project:
Beberapa akun layanan
Anda dapat menggunakan beberapa akun layanan dengan menyetel mode namespace di
ConfigConnector
CustomResource.
Mode namespace memungkinkan Anda membagi izin
berdasarkan masalah masing-masing
akun layanan IAM yang berbeda dan mengisolasi izin di antara
namespace Kubernetes yang berbeda karena Anda dapat mengaitkan layanan yang berbeda
untuk setiap namespace.
Pilih mode namespace jika Anda:
- Ingin mengisolasi izin IAM pada namespace Kubernetes level organisasi.
- Anda akan mengelola sejumlah besar resource Google Cloud dari beberapa project Google Cloud di satu cluster.
Sebagai contoh, Anda membuat satu akun layanan IAM untuk masing-masing mengelola resource dari setiap project dalam namespace Kubernetes yang sama, lalu mengikat akun layanan IAM yang sesuai ke Namespace Kubernetes. Hal ini memungkinkan Anda memisahkan izin akses IAM untuk setiap proyek sehingga setiap proyek memiliki kumpulan izin akses yang berbeda dan tidak terkait.
Diagram berikut menampilkan ringkasan cara kerja mode dengan namespace, saat setiap project dikelola oleh akun layanan yang berbeda:
Dalam mode dengan namespace, setiap akun layanan IAM terikat dengan sebuah
namespace secara default. Saat Anda membuat resource
dalam namespace tersebut,
Config Connector menggunakan akun layanan ini untuk membuat Google Cloud
Google Cloud Platform. Ada pod Config Connector cnrm-controller-manager
khusus
untuk setiap namespace yang meniru akun layanan IAM
yang terkait dengan namespace.
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 dan menetapkan peran ke akun layanan yang telah Anda konfigurasi Konektor Konfigurasi. Jika Anda telah mengonfigurasi Config Connector di namespaced , Anda mungkin memiliki daripada satu akun layanan IAM.
Setelah menyelesaikan penginstalan, Anda mungkin perlu menghapus atau memperbarui izin akses untuk menyelaraskan dengan pertimbangan keamanan dan praktik terbaik.
Salah satu keuntungan inti dari Config Connector adalah alat terpadu. Ini berarti Anda dapat menggunakan Config Connector sendiri untuk menyesuaikan peran IAM dan izin akses. Anda dapat menggunakan IAMPolicyMember atau IAMPartialPolicy resource di Config Connector untuk mengonfigurasi izin IAM. Ini memerlukan akun layanan IAM dengan izin administrator di seluruh project, folder, atau organisasi Anda. Akun layanan ini harus dikonfigurasikan untuk mengikat ke Config Connector melalui mode cluster atau mode 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, 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: 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 di folder yang diberikan, 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
Untuk mengizinkan Config Connector 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 Config Connector Anda penginstalan dengan membuat beberapa IAMPolicyMember atau gabungan dari IAMPartialPolicy resource Anda Peran berikut umumnya ditetapkan ke Config Connector akun layanan:
Editor: Memberikan peran editor mengizinkan sebagian besar fitur Config Connector kecuali Project atau Organization seperti modifikasi IAM.
Peran IAM Service Account Admin: Memberikan
roles/iam.serviceAccountAdmin
mengizinkan Config Connector untuk mengonfigurasi layanan IAM menggunakan akun layanan.Resource Manager: Memberikan Peran Resource Manager seperti
roles/resourcemanager.folderCreator
memungkinkan Config Connector untuk mengelola folder dan tidak di organisasi lain.
Peran khusus
Jika peran standar 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.
Langkah selanjutnya
- Pelajari cara mengatur resource menurut folder, project, atau organisasi.