Kubernetes Role-Based Access Control(RBAC)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kubernetes'in API sunucusuna kullanım izinleri ayarlamaya yardımcı olan bir yetkilendirme modülü olan Role-Based Access Control (RBAC) vardır.
RBAC'nin izin modeli üç ayrı bölümden oluşmaktadır:
Subject (Kullanıcı, Grup veya ServiceAccount) – İzinleri alacak nesne.
RoleBinding\ClusterRoleBinding – Role\ClusterRole ile konu arasındaki bağlantı.
“Roles” ile “ClusterRoles” arasındaki fark, rolün nerede uygulanacağıdır – bir “Role” yalnızca bir belirli namespace için erişim verirken, bir “ClusterRole” tüm namespace'lerde kullanılabilir. Ayrıca, ClusterRoles şunlara da erişim verebilir:
küme kapsamlı kaynaklar (örneğin düğümler).
kaynak dışı uç noktalar (örneğin /healthz).
tüm namespace'lerde namespaced kaynaklar (örneğin Pod'lar).
Kubernetes 1.6'dan itibaren, RBAC politikaları varsayılan olarak etkin durumdadır. Ancak RBAC'yi etkinleştirmek için şunu kullanabilirsiniz:
Bir Rol veya ClusterRole şablonunda rolün adını, namespace'i (rollerde) ve ardından rolün apiGroups, resources ve verbs'lerini belirtmeniz gerekecek:
apiGroups, bu kuralın uygulandığı farklı API namespace'lerini içeren bir dizidir. Örneğin, bir Pod tanımı apiVersion: v1 kullanır. rbac.authorization.k8s.io veya [*] gibi değerler alabilir.
resources, bu kuralın uygulandığı kaynakları tanımlayan bir dizidir. Tüm kaynakları bulmak için: kubectl api-resources --namespaced=true
komutunu kullanabilirsiniz.
verbs, izin verilen fiilleri içeren bir dizidir. Kubernetes'teki fiil, kaynağa uygulamanız gereken hareket türünü tanımlar. Örneğin, liste fiili koleksiyonlar için kullanılırken "get" tek bir kaynak için kullanılır.
(Bu bilgi belgelerden alınmıştır)
POST
oluştur
GET, HEAD
al (bireysel kaynaklar için), listele (koleksiyonlar için, tam nesne içeriği dahil), izle (bireysel bir kaynak veya kaynak koleksiyonunu izlemek için)
PUT
güncelle
PATCH
yaman
DELETE
sil (bireysel kaynaklar için), deletecollection (koleksiyonlar için)
Kubernetes bazen özel fiiller kullanarak ek izinler için yetkilendirmeyi kontrol eder. Örneğin:
policy
API grubundaki podsecuritypolicies
kaynaklarında use
fiili.
rbac.authorization.k8s.io
API grubundaki roles
ve clusterroles
kaynaklarında bind
ve escalate
fiilleri.
çekirdek API grubundaki users
, groups
ve serviceaccounts
üzerinde impersonate
fiili, ve authentication.k8s.io
API grubundaki userextras
.
Her kaynağın desteklediği tüm fiilleri bulmak için kubectl api-resources --sort-by name -o wide
komutunu çalıştırabilirsiniz.
Örneğin, belirli bir kullanıcının çalıştırmasına izin vermek için bir ClusterRole kullanabilirsiniz:
Belgelerden: Bir rol bağlaması, bir rolde tanımlanan izinleri bir kullanıcıya veya kullanıcılar grubuna verir. Bir konu listesi (kullanıcılar, gruplar veya hizmet hesapları) ve verilen role bir referans tutar. Bir RoleBinding, belirli bir namespace içinde izinler verirken, bir ClusterRoleBinding bu erişimi küme genelinde verir.
İzinler toplamsaldır bu nedenle eğer “listele” ve “sil” izinlerine sahip bir clusterRole'unuz varsa, bunu “al” iznine sahip bir Role ile ekleyebilirsiniz. Bu yüzden her zaman rollerinizi ve izinlerinizi test edin ve İZİN VERİLENİ belirtin, çünkü varsayılan olarak her şey REDDEDİLİR.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)