Files
hacktricks-cloud/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/kubernetes-securitycontext-s.md
T

25 KiB

Kubernetes SecurityContext(s)

{{#include ../../../banners/hacktricks-training.md}}

PodSecurityContext

From the docs:

जब आप एक 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
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

विशेषाधिकार मोड में कंटेनर चलाएँ। विशेषाधिकार वाले कंटेनरों में प्रक्रियाएँ मूल रूप से होस्ट पर रूट के बराबर होती हैं। डिफ़ॉल्ट रूप से false।

procMount
string

procMount कंटेनरों के लिए उपयोग करने के लिए proc माउंट के प्रकार को दर्शाता है। डिफ़ॉल्ट DefaultProcMount है जो केवल-पढ़ने वाले पथों और मास्क किए गए पथों के लिए कंटेनर रनटाइम डिफ़ॉल्ट का उपयोग करता है।

readOnlyRootFilesystem
boolean

क्या यह कंटेनर के पास एक केवल-पढ़ने वाली रूट फ़ाइल प्रणाली है। डिफ़ॉल्ट रूप से false।

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

{{#include ../../../banners/hacktricks-training.md}}