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 akun layanan IAM, lalu menggunakan Workload Identity Federation untuk GKE agar GKE dapat mengikat akun layanan IAM dengan akun layanan Kubernetes. IAM memungkinkan Konektor Konfigurasi 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 oleh 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, dengan akun layanan yang sama mengelola dua project:

Diagram yang menunjukkan Config Connector yang mengelola beberapa Project menggunakan akun layanan yang sama

Beberapa akun layanan

Anda dapat menggunakan beberapa akun layanan dengan menetapkan mode dengan namespace di CustomResource ConfigConnector. Mode dengan 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 akun layanan yang berbeda untuk setiap namespace.

Pilih mode dengan namespace jika Anda:

  • Ingin mengisolasi izin IAM di level namespace Kubernetes.
  • Anda akan mengelola sejumlah besar resource Google Cloud dari beberapa project Google Cloud di satu cluster.

Misalnya, Anda membuat satu akun layanan IAM untuk setiap project, mengatur resource dari setiap project di namespace Kubernetes yang sama, lalu mengikat akun layanan IAM yang sesuai ke namespace Kubernetes. Hal ini memungkinkan Anda 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:

Diagram yang menunjukkan Config Connector yang mengelola beberapa Project menggunakan dua akun layanan yang berbeda

Dalam mode dengan namespace, setiap akun layanan IAM terikat ke namespace secara default. Saat Anda membuat resource dalam namespace tersebut, Config Connector 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.

Untuk mempelajari cara mengonfigurasi mode dengan namespace, lihat Menginstal Config Connector menggunakan mode dengan namespace.

Menyesuaikan izin setelah penginstalan

Selama penginstalan Config Connector, Anda mungkin telah memilih sementara peran dasar dan menetapkan peran tersebut ke akun layanan yang Anda konfigurasikan untuk Config Connector. Jika telah mengonfigurasi Config Connector dalam mode dengan 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 inti Config Connector adalah alat terpadu. Artinya, Anda dapat menggunakan Config Connector itu sendiri untuk menyesuaikan 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 mengikat ke penginstalan 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:

  1. 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 Anda
    • SERVICE_ACCOUNT_NAME dengan nama akun layanan Anda
    • HOST_PROJECT_ID dengan project ID host akun layanan Anda
    • roles/owner dengan peran yang sesuai
    • ORGANIZATION_ID dengan ID organisasi Anda
  2. 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:

  1. 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 Anda
    • SERVICE_ACCOUNT_NAME dengan nama akun layanan Anda
    • HOST_PROJECT_ID dengan project ID host akun layanan Anda
    • roles/owner dengan peran yang sesuai
    • FOLDER_ID dengan ID folder Anda
  2. 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:

  1. 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 Anda
    • SERVICE_ACCOUNT_NAME dengan nama akun layanan Anda
    • HOST_PROJECT_ID dengan project ID host akun layanan Anda
    • roles/owner dengan peran yang sesuai
    • PROJECT_ID dengan project ID target Anda
  2. Terapkan manifes YAML ke cluster Anda menggunakan kubectl atau alat pengelolaan konfigurasi pilihan Anda.

Peran yang telah ditetapkan

Jika memilih untuk 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 memungkinkan sebagian besar fitur Config Connector kecuali konfigurasi seluruh Project atau Organisasi seperti modifikasi IAM.

  • Peran Admin Akun Layanan IAM: Memberikan izin roles/iam.serviceAccountAdmin memungkinkan Config Connector mengonfigurasi akun layanan IAM.

  • Resource Manager: Memberikan peran Resource Manager seperti roles/resourcemanager.folderCreator memungkinkan Config Connector untuk mengelola folder dan organisasi.

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.

Langkah selanjutnya