CodeBlanks Logo Icon CodeBlanks

Özet - RBAC

Role, Binding ve ServiceAccount'u birleştirerek yetki yazarsın.

Özet: RBAC

Bu grupta:

  • RBAC varsayılan olarak her şeyi reddeder; izinler toplamsaldır.
  • Role (namespace) ve ClusterRole (cluster) izin kümeleridir: apiGroups, resources, verbs, isteğe bağlı resourceNames.
  • RoleBinding ve ClusterRoleBinding rolü özneye (User, Group, ServiceAccount) bağlar; RoleBinding + ClusterRole tek namespace'te geçerlidir.
  • ServiceAccount pod kimliğidir; uygulamaya özel SA ve en az yetki verilir, gerekmezse belirteç bağlanmaz.
  • Alt kaynaklar (pods/log, pods/exec) ayrı izin ister; "*"'dan kaçınılır. auth can-i sınar.
kubectl auth can-i --list --as system:serviceaccount:dev:api -n dev

Uygulama Bağlamayı YAML ile yaz

Bir RoleBinding YAML'ı yaz: adı ayse-pod-okuyucu, namespace'i dev; özne kind: User, name: ayse, apiGroup: rbac.authorization.k8s.io; roleRef kind: Role, name: pod-okuyucu, apiGroup: rbac.authorization.k8s.io.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ayse-pod-okuyucu
  namespace: dev
subjects:
  - kind: User
    name: ayse
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-okuyucu
  apiGroup: rbac.authorization.k8s.io

Beklenen çıktı

rolebinding.rbac.authorization.k8s.io/ayse-pod-okuyucu created
$ kubectl auth can-i list pods -n dev --as ayse
yes

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir geliştiriciye yalnızca dev namespace'inde çoğu kaynağı değiştirme izni vermenin en kısa yolu hangisidir?

  • dev'de edit ClusterRole'ünü veren bir RoleBinding Doğru cevap
  • cluster-admin ClusterRoleBinding
  • Her kaynak için ayrı Role
  • default ServiceAccount'u paylaşmak

Açıklama: Hazır rolü namespace'e bağlamak yeterlidir.

2 Pod'a belirteç bağlamayı kapat.

Soru
    spec:
      ____: false
Cevap
    spec:
      automountServiceAccountToken: false

Açıklama: API'ye erişmeyen pod'larda belirteç bağlanmaz.

3 Eşleştir.

Kavram Anlamı
Role Namespace izinleri
ClusterRole Cluster izinleri
RoleBinding Namespace bağlaması
ServiceAccount Pod kimliği

İleri seviye bölümündeki tüm dersler