Kubernetes SecurityContext(s)
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)
जब आप एक Pod के सुरक्षा संदर्भ को निर्दिष्ट करते हैं, तो आप कई विशेषताओं का उपयोग कर सकते हैं। एक रक्षात्मक सुरक्षा दृष्टिकोण से, आपको विचार करना चाहिए:
runASNonRoot को True रखना
runAsUser को कॉन्फ़िगर करना
यदि संभव हो, तो seLinuxOptions और seccompProfile को निर्दिष्ट करके permissions को सीमित करने पर विचार करें
runAsGroup और supplementaryGroups के माध्यम से privilege group पहुंच न दें
fsGroup integer | एक विशेष पूरक समूह जो pod में सभी कंटेनरों पर लागू होता है। कुछ वॉल्यूम प्रकार Kubelet को उस वॉल्यूम के स्वामित्व को बदलने की अनुमति देते हैं: 1. स्वामित्व GID FSGroup होगा 2. सेटगिड बिट सेट है (वॉल्यूम में बनाए गए नए फ़ाइलें FSGroup द्वारा स्वामित्व होंगी) 3. अनुमति बिट rw-rw---- के साथ OR'd हैं यदि अनसेट है, तो Kubelet किसी भी वॉल्यूम के स्वामित्व और अनुमतियों को संशोधित नहीं करेगा |
fsGroupChangePolicy string | यह वॉल्यूम के स्वामित्व और अनुमति को बदलने के व्यवहार को परिभाषित करता है, जो Pod के अंदर प्रदर्शित होने से पहले होता है। |
runAsGroup integer | कंटेनर प्रक्रिया के एंट्रीपॉइंट को चलाने के लिए GID। यदि अनसेट है तो रनटाइम डिफ़ॉल्ट का उपयोग करता है। |
runAsNonRoot boolean | यह इंगित करता है कि कंटेनर को गैर-रूट उपयोगकर्ता के रूप में चलाना चाहिए। यदि सही है, तो Kubelet रनटाइम पर छवि को मान्य करेगा ताकि यह सुनिश्चित हो सके कि यह UID 0 (रूट) के रूप में नहीं चल रहा है और यदि ऐसा है तो कंटेनर शुरू करने में विफल हो जाएगा। |
runAsUser integer | कंटेनर प्रक्रिया के एंट्रीपॉइंट को चलाने के लिए UID। यदि निर्दिष्ट नहीं किया गया है तो छवि मेटाडेटा में निर्दिष्ट उपयोगकर्ता का डिफ़ॉल्ट होता है। |
seLinuxOptions SELinuxOptions More info about seLinux | सभी कंटेनरों पर लागू होने वाला SELinux संदर्भ। यदि निर्दिष्ट नहीं किया गया है, तो कंटेनर रनटाइम प्रत्येक कंटेनर के लिए एक यादृच्छिक SELinux संदर्भ आवंटित करेगा। |
seccompProfile SeccompProfile More info about Seccomp | इस pod में कंटेनरों द्वारा उपयोग किए जाने वाले seccomp विकल्प। |
supplementalGroups integer array | प्रत्येक कंटेनर में पहले चलाए गए प्रक्रिया पर लागू होने वाले समूहों की एक सूची, कंटेनर के प्राथमिक GID के अतिरिक्त। |
Sysctls pod के लिए उपयोग किए जाने वाले namespaced sysctls की एक सूची रखते हैं। जिन pods में असमर्थित sysctls होते हैं (कंटेनर रनटाइम द्वारा) वे लॉन्च करने में विफल हो सकते हैं। | |
सभी कंटेनरों पर लागू होने वाली Windows विशिष्ट सेटिंग्स। यदि निर्दिष्ट नहीं किया गया है, तो कंटेनर के SecurityContext के भीतर विकल्पों का उपयोग किया जाएगा। |
यह संदर्भ कंटेनरों की परिभाषाओं के अंदर सेट किया गया है। एक रक्षात्मक सुरक्षा दृष्टिकोण से, आपको विचार करना चाहिए:
allowPrivilegeEscalation को False पर सेट करें
संवेदनशील capabilities न जोड़ें (और जिनकी आपको आवश्यकता नहीं है उन्हें हटा दें)
privileged को False पर सेट करें
यदि संभव हो, तो readOnlyFilesystem को True पर सेट करें
runAsNonRoot को True पर सेट करें और एक runAsUser सेट करें
यदि संभव हो, तो seLinuxOptions और seccompProfile को निर्दिष्ट करके permissions को सीमित करने पर विचार करें
runAsGroup के माध्यम से privilege group पहुंच न दें।
ध्यान दें कि SecurityContext और PodSecurityContext में सेट की गई विशेषताओं में, SecurityContext में निर्दिष्ट मान प्राथमिकता लेता है।
allowPrivilegeEscalation boolean | AllowPrivilegeEscalation नियंत्रित करता है कि क्या एक प्रक्रिया अपने माता-पिता की प्रक्रिया से अधिक विशेषाधिकार प्राप्त कर सकती है। यह bool सीधे नियंत्रित करता है कि क्या no_new_privs ध्वज कंटेनर प्रक्रिया पर सेट किया जाएगा। AllowPrivilegeEscalation हमेशा सही होता है जब कंटेनर Privileged के रूप में चलाया जाता है या CAP_SYS_ADMIN होता है |
capabilities Capabilities More info about Capabilities | कंटेनरों को चलाते समय जोड़ने/हटाने के लिए क्षमताएँ। डिफ़ॉल्ट रूप से क्षमताओं का डिफ़ॉल्ट सेट होता है। |
privileged boolean | विशेषाधिकार मोड में कंटेनर चलाएँ। विशेषाधिकार वाले कंटेनरों में प्रक्रियाएँ मूल रूप से होस्ट पर रूट के बराबर होती हैं। डिफ़ॉल्ट रूप से गलत। |
procMount string | procMount कंटेनरों के लिए उपयोग करने के लिए proc माउंट के प्रकार को दर्शाता है। डिफ़ॉल्ट DefaultProcMount है जो केवल-पढ़ने वाले पथों और मास्क किए गए पथों के लिए कंटेनर रनटाइम डिफ़ॉल्ट का उपयोग करता है। |
readOnlyRootFilesystem boolean | क्या इस कंटेनर का एक केवल-पढ़ने वाला रूट फ़ाइल सिस्टम है। डिफ़ॉल्ट रूप से गलत। |
runAsGroup integer | कंटेनर प्रक्रिया के एंट्रीपॉइंट को चलाने के लिए GID। यदि अनसेट है तो रनटाइम डिफ़ॉल्ट का उपयोग करता है। |
runAsNonRoot boolean | यह इंगित करता है कि कंटेनर को गैर-रूट उपयोगकर्ता के रूप में चलाना चाहिए। यदि सही है, तो Kubelet रनटाइम पर छवि को मान्य करेगा ताकि यह सुनिश्चित हो सके कि यह UID 0 (रूट) के रूप में नहीं चल रहा है और यदि ऐसा है तो कंटेनर शुरू करने में विफल हो जाएगा। |
runAsUser integer | कंटेनर प्रक्रिया के एंट्रीपॉइंट को चलाने के लिए UID। यदि निर्दिष्ट नहीं किया गया है तो छवि मेटाडेटा में निर्दिष्ट उपयोगकर्ता का डिफ़ॉल्ट होता है। |
seLinuxOptions SELinuxOptions More info about seLinux | कंटेनर पर लागू होने वाला SELinux संदर्भ। यदि निर्दिष्ट नहीं किया गया है, तो कंटेनर रनटाइम प्रत्येक कंटेनर के लिए एक यादृच्छिक SELinux संदर्भ आवंटित करेगा। |
इस कंटेनर द्वारा उपयोग किए जाने वाले seccomp विकल्प। | |
सभी कंटेनरों पर लागू होने वाली Windows विशिष्ट सेटिंग्स। |
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)