Kubernetes SecurityContext(s)

Reading time: 9 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

PodSecurityContext

From the docs:

जब आप एक Pod के सुरक्षा संदर्भ को निर्दिष्ट करते हैं, तो आप कई विशेषताओं का उपयोग कर सकते हैं। एक रक्षात्मक सुरक्षा दृष्टिकोण से, आपको विचार करना चाहिए:

  • runASNonRoot को True रखना
  • runAsUser को कॉन्फ़िगर करना
  • यदि संभव हो, तो seLinuxOptions और seccompProfile को इंगित करते हुए permissions को सीमित करने पर विचार करें
  • runAsGroup और supplementaryGroups के माध्यम से privilege group पहुंच न दें

| Parameter | Description | |

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
Sysctl array
More info about sysctls

| Sysctls pod के लिए उपयोग किए जाने वाले namespaced sysctls की एक सूची रखते हैं। जिन pods में असमर्थित sysctls होते हैं (कंटेनर रनटाइम द्वारा) वे लॉन्च करने में विफल हो सकते हैं। | |

windowsOptions
WindowsSecurityContextOptions

| सभी कंटेनरों पर लागू होने वाली Windows विशिष्ट सेटिंग्स। यदि निर्दिष्ट नहीं किया गया है, तो कंटेनर के SecurityContext के भीतर विकल्पों का उपयोग किया जाएगा। |

SecurityContext

From the docs:

यह संदर्भ कंटेनरों की परिभाषाओं के अंदर सेट किया गया है। एक रक्षात्मक सुरक्षा दृष्टिकोण से, आपको विचार करना चाहिए:

  • 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 संदर्भ आवंटित करेगा।

seccompProfile
SeccompProfile

इस कंटेनर द्वारा उपयोग किए जाने वाले seccomp विकल्प

windowsOptions
WindowsSecurityContextOptions

सभी कंटेनरों पर लागू होने वाली Windows विशिष्ट सेटिंग्स

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें