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 पहुंच न दें
एक विशेष सहायक समूह जो pod में सभी कंटेनरों पर लागू होता है। कुछ वॉल्यूम प्रकार Kubelet को उस वॉल्यूम के स्वामित्व को बदलने की अनुमति देते हैं: 1. स्वामित्व GID FSGroup होगा 2. सेटगिड बिट सेट है (वॉल्यूम में बनाए गए नए फ़ाइलें FSGroup द्वारा स्वामित्व होंगी) 3. अनुमति बिट rw-rw---- के साथ OR'd हैं यदि अनसेट किया गया, तो Kubelet किसी भी वॉल्यूम के स्वामित्व और अनुमतियों को संशोधित नहीं करेगा
यह वॉल्यूम के स्वामित्व और अनुमति को बदलने के व्यवहार को परिभाषित करता है, जो Pod के अंदर प्रदर्शित होने से पहले होता है।
कंटेनर प्रक्रिया के एंट्रीपॉइंट को चलाने के लिए GID। यदि अनसेट किया गया तो रनटाइम डिफ़ॉल्ट का उपयोग करता है।
यह इंगित करता है कि कंटेनर को गैर-रूट उपयोगकर्ता के रूप में चलाना चाहिए। यदि सही है, तो Kubelet रनटाइम पर छवि को मान्य करेगा ताकि यह सुनिश्चित हो सके कि यह UID 0 (रूट) के रूप में नहीं चल रहा है और यदि ऐसा होता है तो कंटेनर शुरू करने में विफल हो जाएगा।
कंटेनर प्रक्रिया के एंट्रीपॉइंट को चलाने के लिए UID। यदि निर्दिष्ट नहीं किया गया है तो छवि मेटाडेटा में निर्दिष्ट उपयोगकर्ता पर डिफ़ॉल्ट होता है।
सभी कंटेनरों पर लागू होने वाला SELinux संदर्भ। यदि निर्दिष्ट नहीं किया गया है, तो कंटेनर रनटाइम प्रत्येक कंटेनर के लिए एक यादृच्छिक SELinux संदर्भ आवंटित करेगा।
इस Pod में कंटेनरों द्वारा उपयोग किए जाने वाले seccomp विकल्प।
प्रत्येक कंटेनर में पहले चलाए गए प्रक्रिया पर लागू समूहों की एक सूची, कंटेनर के प्राथमिक 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 नियंत्रित करता है कि क्या एक प्रक्रिया अपने माता-पिता प्रक्रिया से अधिक विशेषाधिकार प्राप्त कर सकती है। यह bool सीधे नियंत्रित करता है कि क्या no_new_privs ध्वज कंटेनर प्रक्रिया पर सेट किया जाएगा। AllowPrivilegeEscalation हमेशा सही होता है जब कंटेनर Privileged के रूप में चलाया जाता है या CAP_SYS_ADMIN है
कंटेनरों को चलाते समय जोड़ने/हटाने के लिए क्षमताएँ। डिफ़ॉल्ट रूप से क्षमताओं के डिफ़ॉल्ट सेट पर।
विशेषाधिकार मोड में कंटेनर चलाएँ। विशेषाधिकार प्राप्त कंटेनरों में प्रक्रियाएँ मूल रूप से होस्ट पर रूट के बराबर होती हैं। डिफ़ॉल्ट रूप से गलत।
procMount कंटेनरों के लिए उपयोग करने के लिए proc माउंट के प्रकार को दर्शाता है। डिफ़ॉल्ट DefaultProcMount है जो केवल-पढ़ने वाले पथों और मास्क किए गए पथों के लिए कंटेनर रनटाइम डिफ़ॉल्ट का उपयोग करता है।
क्या यह कंटेनर में एक केवल-पढ़ने वाली रूट फ़ाइल प्रणाली है। डिफ़ॉल्ट रूप से गलत।
कंटेनर प्रक्रिया के एंट्रीपॉइंट को चलाने के लिए GID। यदि अनसेट किया गया तो रनटाइम डिफ़ॉल्ट का उपयोग करता है।
यह इंगित करता है कि कंटेनर को गैर-रूट उपयोगकर्ता के रूप में चलाना चाहिए। यदि सही है, तो Kubelet रनटाइम पर छवि को मान्य करेगा ताकि यह सुनिश्चित हो सके कि यह UID 0 (रूट) के रूप में नहीं चल रहा है और यदि ऐसा होता है तो कंटेनर शुरू करने में विफल हो जाएगा।
कंटेनर प्रक्रिया के एंट्रीपॉइंट को चलाने के लिए UID। यदि निर्दिष्ट नहीं किया गया है तो छवि मेटाडेटा में निर्दिष्ट उपयोगकर्ता पर डिफ़ॉल्ट होता है।
कंटेनर पर लागू होने वाला SELinux संदर्भ। यदि निर्दिष्ट नहीं किया गया है, तो कंटेनर रनटाइम प्रत्येक कंटेनर के लिए एक यादृच्छिक SELinux संदर्भ आवंटित करेगा।
इस कंटेनर द्वारा उपयोग किए जाने वाले seccomp विकल्प।
सभी कंटेनरों पर लागू होने वाली Windows विशिष्ट सेटिंग्स।
integer
string
integer
boolean
integer
More info about seLinux
More info about Seccomp
integer array
array More info about
boolean
More info about Capabilities
boolean
string
boolean
integer
boolean
integer
More info about seLinux
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)