Kubernetes Role-Based Access Control(RBAC)
Role-Based Access Control (RBAC)
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 को सक्षम करने के लिए आप कुछ इस तरह का उपयोग कर सकते हैं:
Templates
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.
Rules Verbs
(This info was taken from the docs)
Kubernetes sometimes checks authorization for additional permissions using specialized verbs. For example:
use
verb onpodsecuritypolicies
resources in thepolicy
API group.bind
andescalate
verbs onroles
andclusterroles
resources in therbac.authorization.k8s.io
API group.impersonate
verb onusers
,groups
, andserviceaccounts
in the core API group, and theuserextras
in theauthentication.k8s.io
API group.
You can find all the verbs that each resource support executing kubectl api-resources --sort-by name -o wide
Examples
उदाहरण के लिए, आप एक ClusterRole का उपयोग कर सकते हैं ताकि एक विशेष उपयोगकर्ता को चलाने की अनुमति दी जा सके:
RoleBinding और ClusterRoleBinding
दस्तावेज़ों से: एक रोल बाइंडिंग एक भूमिका में परिभाषित अनुमतियों को एक उपयोगकर्ता या उपयोगकर्ताओं के सेट को प्रदान करती है। इसमें विषयों (उपयोगकर्ता, समूह, या सेवा खाते) की एक सूची होती है, और दी जा रही भूमिका का संदर्भ होता है। एक RoleBinding एक विशिष्ट namespace के भीतर अनुमतियाँ प्रदान करता है जबकि एक ClusterRoleBinding उस पहुँच को क्लस्टर-व्यापी प्रदान करता है।
अनुमतियाँ जोड़ने योग्य हैं इसलिए यदि आपके पास "सूची" और "हटाएँ" रहस्यों के साथ एक clusterRole है, तो आप इसे "प्राप्त करें" के साथ एक Role के साथ जोड़ सकते हैं। इसलिए सतर्क रहें और हमेशा अपनी भूमिकाओं और अनुमतियों का परीक्षण करें और यह निर्दिष्ट करें कि क्या अनुमत है, क्योंकि डिफ़ॉल्ट रूप से सब कुछ अस्वीकृत है।
RBAC की गणना करना
Abuse Role/ClusterRoles for Privilege Escalation
Last updated