Portal/Notes πŸ“
Cka

Kontrol Akses Berbasis Peran (RBAC)

Versi Bahasa Indonesia. Baca dalam Bahasa Inggris

Role-based access control (RBAC) adalah metode pengaturan akses ke sumber daya komputer atau jaringan berdasarkan peran masing-masing pengguna dalam organisasi Anda.

Otorisasi RBAC menggunakan grup API rbac.authorization.k8s.io untuk mendorong keputusan otorisasi, memungkinkan Anda mengonfigurasi kebijakan secara dinamis melalui API Kubernetes.

Role dan ClusterRole

RBAC Role atau ClusterRole berisi aturan yang mewakili sekumpulan izin. Izin bersifat murni aditif (tidak ada aturan "deny").

Role selalu mengatur izin dalam namespace tertentu; saat Anda membuat Role, Anda harus menentukan namespace tempatnya berada.

ClusterRole, sebaliknya, adalah sumber daya non-namespaced. Sumber daya ini memiliki nama yang berbeda (Role dan ClusterRole) karena objek Kubernetes harus selalu bersifat namespaced atau non-namespaced; tidak bisa keduanya.

RoleBinding dan ClusterRoleBinding

Role binding memberikan izin yang didefinisikan dalam role kepada pengguna atau sekumpulan pengguna. Ini berisi daftar subjek (pengguna, grup, atau service accounts), dan referensi ke role yang diberikan. RoleBinding memberikan izin dalam namespace tertentu sedangkan ClusterRoleBinding memberikan akses tersebut secara klaster-wide.

RoleBinding dapat mereferensikan Role apa pun di namespace yang sama. Atau, RoleBinding dapat mereferensikan ClusterRole dan mengikat ClusterRole tersebut ke namespace dari RoleBinding. Jika Anda ingin mengikat ClusterRole ke semua namespace di klaster, Anda menggunakan ClusterRoleBinding.

Contoh

  • Mari kita buat cluster role baru pod-reader dalam file role.yaml.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
  • Terapkan konfigurasi menggunakan kubectl apply -f role.yaml.
  • Periksa cluster role menggunakan kubectl get clusterrole. Cluster role pod-reader akan ada dalam daftar.
  • Sekarang mari kita coba mengikat role ini ke seorang pengguna.
  • Tambahkan konfigurasi di bawah ini ke dalam file role.yaml.
---
apiVersion: rbac.authorization.k8s.io/v1
# This role binding allows "jane" to read pods in the "default" namespace.
# You need to already have a Role named "pod-reader" in that namespace.
kind: ClusterRoleBinding
metadata:
  name: read-pods
subjects:
# You can specify more than one "subject"
- kind: User
  name: jane # "name" is case sensitive
  apiGroup: rbac.authorization.k8s.io
roleRef:
  # "roleRef" specifies the binding to a Role / ClusterRole
  kind: ClusterRole #this must be Role or ClusterRole
  name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
  apiGroup: rbac.authorization.k8s.io
  • Konfigurasi ini akan mengikat cluster role pod-reader ke pengguna jane.
  • Terapkan konfigurasi kubectl apply -f role.yaml.
  • Coba menggunakan perintah di bawah ini
kubectl --as=jane get pods
kubectl --as=jane get nodes
  • Perintah pertama akan mengembalikan daftar pods
  • Perintah kedua akan mengembalikan error seperti di bawah ini:
Error from server (Forbidden): nodes is forbidden: User "jane" cannot list resource "nodes" in API group "" at the cluster scope

Edit on GitHub

Last updated on

Kontrol Akses Berbasis Peran (RBAC) | Faisal Affan