यह सुनिश्चित करना कि कंटेनर इमेज परिनियोजन से पहले ज्ञात कमजोरियों से मुक्त हों।
→Trivy, Clair, या Grype जैसे image scanner को CI/CD पाइपलाइन में एकीकृत करें ताकि इमेज को स्कैन किया जा सके और यदि गंभीर कमजोरियां पाई जाती हैं तो बिल्ड को विफल किया जा सके।
क्यों: कमजोरियों का जल्दी पता लगाना ("shift left") स्वचालित करता है, कमजोर कोड को प्रोडक्शन तक पहुंचने से रोकता है।
यह सुनिश्चित करना कि क्लस्टर में केवल विश्वसनीय, अपरिवर्तित कंटेनर इमेज तैनात की जाएं।
→CI पाइपलाइन में Cosign जैसे टूल से इमेज पर हस्ताक्षर करें। परिनियोजन के समय हस्ताक्षर को सत्यापित करने के लिए एक validating admission controller (जैसे, Kyverno, Gatekeeper) का उपयोग करें।
क्यों: इमेज की अखंडता (इसके साथ छेड़छाड़ नहीं की गई है) और provenance (यह एक विश्वसनीय स्रोत से आया है) का क्रिप्टोग्राफिक प्रमाण प्रदान करता है।
चल रहे कंटेनर के अंदर दुर्भावनापूर्ण गतिविधि का पता लगाना (जैसे, shell spawned, संवेदनशील फ़ाइल पहुंच)।
→Falco जैसे runtime सुरक्षा टूल को तैनात करें, जो syscalls की निगरानी के लिए eBPF का उपयोग करता है और एक परिभाषित नियमसेट के आधार पर संदिग्ध व्यवहार पर अलर्ट करता है।
क्यों: runtime गतिविधि में दृश्यता प्रदान करता है, जिसे static scanning और admission control नहीं देख सकते हैं। यह सक्रिय उल्लंघनों का पता लगाने के लिए महत्वपूर्ण है।
कस्टम, संगठन-विशिष्ट सुरक्षा नीतियों को लागू करना (उदाहरण के लिए, "सभी इमेज हमारी कॉर्पोरेट रजिस्ट्री से आनी चाहिए")।
→Rego या YAML में लिखी गई नीतियों को लागू करने के लिए OPA Gatekeeper या Kyverno जैसे policy engine का उपयोग validating admission controller के रूप में करें।
क्यों: सुरक्षा नीतियों के लचीले, घोषणात्मक और स्वचालित प्रवर्तन की अनुमति देता है जो Kubernetes के बिल्ट-इन नियंत्रणों से परे जाते हैं।
क्लस्टर के भीतर सभी service-to-service ट्रैफिक को एन्क्रिप्ट करना और प्रमाणित करना।
→सभी meshed services के लिए स्वचालित रूप से mutual TLS (mTLS) प्रदान करने के लिए एक service mesh (जैसे, Istio, Linkerd) लागू करें।
क्यों: यह सुनिश्चित करके zero-trust नेटवर्किंग प्राप्त करता है कि सभी इन-क्लस्टर ट्रैफिक एन्क्रिप्टेड है और सेवाएं एक-दूसरे की पहचान को पारस्परिक रूप से सत्यापित करती हैं।
अविश्वसनीय या मल्टी-टेनेट वर्कलोड चलाना जिन्हें मानक कंटेनरों की तुलना में अधिक मजबूत अलगाव की आवश्यकता होती है।
→gVisor या Kata Containers जैसे sandboxed container runtime का उपयोग करें, जो कंटेनर और host kernel के बीच एक अतिरिक्त अलगाव परत प्रदान करते हैं।
क्यों: host kernel के अटैक सरफेस को कम करता है, जिससे कंटेनर एस्केप काफी अधिक कठिन हो जाता है।
kernel स्तर पर एक कंटेनर की अनुमतियों पर बारीक नियंत्रण।
→अनुमत syscalls को फ़िल्टर करने के लिए Seccomp profiles का उपयोग करें और फ़ाइल और नेटवर्क पहुंच पर mandatory access controls (MAC) को लागू करने के लिए AppArmor/SELinux profiles का उपयोग करें।
क्यों: ये Linux-native सुरक्षा सुविधाएँ रक्षा की एक गहरी परत प्रदान करती हैं, यह प्रतिबंधित करती हैं कि एक समझौता किया गया कंटेनर प्रक्रिया मौलिक रूप से क्या कर सकती है।
एक कंटेनर इमेज के भीतर अटैक सरफेस को कम करना।
→केवल एप्लिकेशन और उसकी प्रत्यक्ष निर्भरता वाले न्यूनतम या "distroless" base images का उपयोग करके एप्लिकेशन इमेज बनाएं।
क्यों: शेल्स, पैकेज मैनेजर और अन्य उपयोगिताओं को हटाता है जो उत्पादन के लिए अनावश्यक हैं और समझौता होने के बाद एक हमलावर द्वारा उपयोग किए जा सकते हैं।