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 में एक अधिकार मॉड्यूल है जिसे Role-Based Access Control (RBAC) कहा जाता है, जो API सर्वर के लिए उपयोग अनुमति सेट करने में मदद करता है।
RBAC का अनुमति मॉडल तीन व्यक्तिगत भागों से बना है:
Subject (User, Group या ServiceAccount) – वह वस्तु जो अनुमतियाँ प्राप्त करेगी।
RoleBinding\ClusterRoleBinding – Role\ClusterRole और विषय के बीच का संबंध।
“Roles” और “ClusterRoles” के बीच का अंतर केवल यह है कि भूमिका कहाँ लागू होगी – एक “Role” केवल एक विशिष्ट namespace तक पहुँच प्रदान करेगा, जबकि एक “ClusterRole” क्लस्टर में सभी namespaces में उपयोग किया जा सकता है। इसके अलावा, ClusterRoles निम्नलिखित तक पहुँच भी प्रदान कर सकते हैं:
cluster-scoped संसाधन (जैसे nodes)।
non-resource endpoints (जैसे /healthz)।
namespaced संसाधन (जैसे Pods), सभी namespaces में।
Kubernetes 1.6 से आगे, RBAC नीतियाँ डिफ़ॉल्ट रूप से सक्षम होती हैं। लेकिन RBAC को सक्षम करने के लिए आप कुछ इस तरह का उपयोग कर सकते हैं:
In the template of a Role or a ClusterRole you will need to indicate the name of the role, the namespace (in roles) and then the apiGroups, resources and verbs of the role:
The apiGroups is an array that contains the different API namespaces that this rule applies to. For example, a Pod definition uses apiVersion: v1. यह rbac.authorization.k8s.io या [*] जैसे मान हो सकते हैं।
The resources is an array that defines which resources this rule applies to. You can find all the resources with: kubectl api-resources --namespaced=true
The verbs is an array that contains the allowed verbs. The verb in Kubernetes defines the type of action you need to apply to the resource. For example, the list verb is used against collections while "get" is used against a single resource.
(This info was taken from the docs)
HTTP verb | request verb |
---|---|
POST | create |
GET, HEAD | get (for individual resources), list (for collections, including full object content), watch (for watching an individual resource or collection of resources) |
PUT | update |
PATCH | patch |
DELETE | delete (for individual resources), deletecollection (for collections) |
Kubernetes sometimes checks authorization for additional permissions using specialized verbs. For example:
use
verb on podsecuritypolicies
resources in the policy
API group.
bind
and escalate
verbs on roles
and clusterroles
resources in the rbac.authorization.k8s.io
API group.
impersonate
verb on users
, groups
, and serviceaccounts
in the core API group, and the userextras
in the authentication.k8s.io
API group.
You can find all the verbs that each resource support executing kubectl api-resources --sort-by name -o wide
उदाहरण के लिए, आप एक ClusterRole का उपयोग कर सकते हैं ताकि एक विशेष उपयोगकर्ता को चलाने की अनुमति दी जा सके:
दस्तावेज़ों से: एक रोल बाइंडिंग एक भूमिका में परिभाषित अनुमतियों को एक उपयोगकर्ता या उपयोगकर्ताओं के सेट को प्रदान करती है। इसमें विषयों (उपयोगकर्ता, समूह, या सेवा खाते) की एक सूची होती है, और दी जा रही भूमिका का संदर्भ होता है। एक RoleBinding एक विशिष्ट namespace के भीतर अनुमतियाँ प्रदान करता है जबकि एक ClusterRoleBinding उस पहुँच को क्लस्टर-व्यापी प्रदान करता है।
अनुमतियाँ जोड़ने योग्य हैं इसलिए यदि आपके पास "सूची" और "हटाएँ" रहस्यों के साथ एक clusterRole है, तो आप इसे "प्राप्त करें" के साथ एक Role के साथ जोड़ सकते हैं। इसलिए सतर्क रहें और हमेशा अपनी भूमिकाओं और अनुमतियों का परीक्षण करें और यह निर्दिष्ट करें कि क्या अनुमत है, क्योंकि डिफ़ॉल्ट रूप से सब कुछ अस्वीकृत है।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)