全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan peran RBAC kustom untuk membatasi operasi sumber daya dalam kluster

更新时间:Jul 06, 2025

Jika ClusterRoles yang telah ditentukan sebelumnya di konsol Container Service for Kubernetes (ACK) tidak memenuhi persyaratan izin Anda, Anda dapat menyesuaikan ClusterRoles dan Roles untuk kontrol akses berbasis peran (RBAC) dengan granularitas halus. Ini memungkinkan konfigurasi fleksibel kebijakan izin sesuai kebutuhan bisnis dan kebijakan keamanan Anda. Topik ini menjelaskan cara membuat izin RBAC kustom.

Izin RBAC

Sebuah Role mendefinisikan izin dalam namespace tertentu, sedangkan ClusterRole mendefinisikan izin pada tingkat kluster. Anda dapat membuat manifes YAML Role dan ClusterRole kustom berdasarkan deskripsi kebijakan dari sumber daya berikut untuk kontrol akses halus pada sumber daya kluster ACK.

Role

Template YAML berikut mendefinisikan Role bernama my-role dengan izin baca pada sumber daya pod dalam namespace default.

   apiVersion: rbac.authorization.k8s.io/v1
   kind: Role
   metadata:
     namespace: default
     name: my-role 
   rules:                               # Daftar aturan izin.
   - apiGroups: [""]                    # Grup API tempat sumber daya tersebut berada.
     resources: ["pods"]                # Jenis sumber daya pod.
     verbs: ["get", "list"]             # Kebijakan izin get dan list.

ClusterRole

Template YAML berikut mendefinisikan ClusterRole bernama my-clusterrole dengan izin baca pada sumber daya pods dan Services dalam kluster.

Catatan

ClusterRole adalah sumber daya berskala kluster, sehingga parameter namespace tidak dapat ditentukan dalam file konfigurasi YAML.

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
# namespace: default                     
  name: my-clusterrole
rules:                                 # Daftar aturan izin.
  - apiGroups: [""]                    # Grup API tempat sumber daya tersebut berada.
    resources: ["pods"]                # Jenis sumber daya pod.
    verbs: ["get", "list"]             # Kebijakan izin get dan list.
  - apiGroups: [""]
    resources: ["services"]
    verbs: ["get", "list"]

Untuk mencapai kontrol akses halus bagi pengguna atau peran Resource Access Management (RAM) pada sumber daya kluster, Anda dapat membuat izin RBAC kustom untuk sumber daya yang berbeda berdasarkan deskripsi kebijakan dari jenis sumber daya umum berikut:

Deskripsi kebijakan dari jenis sumber daya umum

  • Izin Baca

    • get: Mengambil informasi rinci dari sumber daya yang ditentukan.

    • list: Mendapatkan daftar koleksi sumber daya.

    • watch: Memantau perubahan sumber daya dan menerima pembaruan secara real-time.

  • Izin Tulis

    • create: Membuat instance sumber daya.

    • update: Memodifikasi sumber daya yang ada.

    • patch: Memodifikasi sebagian sumber daya yang ada.

    • delete: Menghapus sumber daya yang ditentukan.

Nama Sumber Daya

Tipe Sumber Daya

Grup API

Kebijakan Izin

Pods

resources: ["pods"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete", "exec", "proxy"]

Service

resources: ["services"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

ConfigMaps

resources: ["configmaps"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Secrets

resources: ["secrets"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

PersistentVolumes

resources: ["persistentvolumes"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

PersistentVolumeClaim

resources: ["persistentvolumeclaims"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

NameSpaces

resources: ["namespaces"]

apiGroups: [""]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Deployments

resources: ["deployments"]

apiGroups: ["apps"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

DaemonSet

resources: ["daemonsets"]

apiGroups: ["apps"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

StatefulSet

resources: ["statefulsets"]

apiGroups: ["apps"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Ingresses

resources: ["ingresses"]

apiGroups: ["networking.k8s.io"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Networkpolicies

resources: ["networkpolicies"]

apiGroups: ["networking.k8s.io"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Jobs

resources: ["jobs"]

apiGroups: ["batch"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

CronJobs

resources: ["cronjobs"]

apiGroups: ["batch"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

StorageClasses

resources: ["storageclasses"]

apiGroups: ["storage.k8s.io"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

HorizontalPodAutoscalers

resources: ["horizontalpodautoscalers"]

apiGroups: ["autoscaling"]

verbs: ["get", "list", "watch", "update", "create", "patch", "delete"]

Prosedur

Anda dapat menyesuaikan izin RBAC melalui konsol atau kubectl.

Penting

Konsol ACK hanya mendukung pengikatan ClusterRoles kustom dengan izin RBAC dalam kluster. Untuk mengikat Roles kustom dengan izin tertentu, Anda dapat menggunakan perintah kubectl.

Konsol

Langkah 1: Buat izin RBAC kustom

  1. Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sebelah kiri, pilih Security > Role.

  3. Di halaman Role, pilih tab Cluster Role. Kemudian, klik OK.

  4. Di panel Create YAML, masukkan konten YAML dari ClusterRole dan klik OK untuk membuat ClusterRole.

    Langkah ini menggunakan template YAML untuk ClusterRole sebagai contoh. Anda dapat melihat izin kustom my-clusterrole di bawah tab Cluster Role setelah pembuatan.

Langkah 2: Gunakan izin RBAC kustom untuk otorisasi

  1. Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Authorizations.

  2. Di halaman Authorizations, berikan izin.

    • Berikan Izin kepada Pengguna RAM

      Klik tab RAM Users, temukan pengguna RAM yang ingin Anda kelola dalam daftar, lalu klik Modify Permissions untuk membuka panel Permission Management. Anda juga dapat memilih beberapa pengguna RAM untuk memberikan izin.

    • Berikan Izin kepada Peran RAM

      Klik tab RAM Roles, tentukan Nama Peran RAM, lalu klik Modify Permissions untuk membuka panel Permission Management.

      Catatan

      Anda dapat memasukkan nama peran RAM secara manual atau memilih peran RAM dari daftar drop-down. Anda dapat mengklik kotak kosong di sebelah kolom Nama Peran RAM. Daftar peran RAM yang ada akan ditampilkan. Lalu, pilih peran RAM yang ada dari daftar untuk memberikan izin.

  3. Di panel Permission Management, klik + Add Permissions. Di bagian Add Permissions, pilih Clusters yang terkait dengan ClusterRole yang dibuat dan Namespace yang akan diberi otorisasi. Pilih Custom di bawah Permission Management, lalu pilih my-clusterrole dari daftar drop-down di sebelah kanan, dan klik Submit.

kubectl

Langkah 1: Buat izin RBAC kustom

  1. Gunakan template YAML berikut untuk membuat file bernama my-clusterrole.yaml:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: my-clusterrole
      namespace: default
    rules:
      - apiGroups: [""]
        resources: ["pods"]
        verbs: ["get", "list", "watch"]
      - apiGroups: [""]
        resources: ["services"]
        verbs: ["get", "list", "watch"]
  2. Jalankan perintah berikut untuk membuat ClusterRole:

    kubectl apply -f  my-clusterrole.yaml

Langkah 2: Dapatkan ID objek otorisasi

  • Untuk memberikan otorisasi kepada pengguna RAM, dapatkan UserId dengan menanyakan nama pengguna RAM. Untuk informasi lebih lanjut, lihat GetUser.

  • Untuk memberikan otorisasi kepada peran RAM, dapatkan RoleId dengan menanyakan nama peran RAM. Untuk informasi lebih lanjut, lihat GetRole.

Langkah 3: Gunakan izin RBAC kustom untuk otorisasi

  1. Gunakan template YAML berikut untuk membuat file bernama my-clusterrole-binding.yaml:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: my-clusterrole-binding
    subjects:
    - kind: User
      name: "20811XXXXXXXXX2288"  # UserId atau RoleId dari objek otorisasi yang diperoleh di Langkah 2.
    roleRef:
      kind: ClusterRole
      name: my-clusterrole
      apiGroup: rbac.authorization.k8s.io
  2. Jalankan perintah berikut untuk membuat ClusterRoleBinding:

    kubectl apply -f  my-clusterrole-binding.yaml

Setelah pengguna RAM diberikan izin RBAC kustom, konfirmasikan akses mereka dengan mengambil KubeConfig dari kluster target dan menghubungkan ke kluster menggunakan alat kubectl.