Kubernetes एक क्लाउड नेटिव आर्किटेक्चर पर आधारित है और क्लाउड नेटिव सूचना सुरक्षा के लिए अच्छे अभ्यास के बारे में CNCF की सलाह का उपयोग करता है।
आगे पढ़ें और जानें कि Kubernetes आपको एक सुरक्षित क्लाउड नेटिव प्लेटफ़ॉर्म तैनात करने में कैसे मदद करने के लिए डिज़ाइन किया गया है।
क्लाउड नेटिव सुरक्षा पर CNCF का श्वेत पत्र सुरक्षा नियंत्रणों और प्रथाओं को परिभाषित करता है जो विभिन्न जीवनचक्र चरणों के लिए उपयुक्त हैं।
इसे प्राप्त करने के लिए, आप यह कर सकते हैं:
इसे प्राप्त करने के लिए, आप यह कर सकते हैं:
यह सुनिश्चित करें कि क्या तैनात किया जा सकता है, कौन इसे तैनात कर सकता है, और इसे कहाँ तैनात किया जा सकता है, इस पर उचित प्रतिबंध हों। आप distribute चरण के उपाय लागू कर सकते हैं, जैसे कंटेनर इमेज आर्टिफैक्ट की क्रिप्टोग्राफ़िक पहचान सत्यापित करना।
आप विभिन्न एप्लिकेशन और क्लस्टर घटकों को अलग-अलग namespaces में तैनात कर सकते हैं। कंटेनर और namespaces दोनों अलगाव तंत्र प्रदान करते हैं जो सूचना सुरक्षा के लिए प्रासंगिक हैं।
जब आप Kubernetes तैनात करते हैं, तो आप अपने एप्लिकेशन के रनटाइम परिवेश की नींव भी रखते हैं: एक Kubernetes क्लस्टर (या कई क्लस्टर)। उस इंफ्रास्ट्रक्चर को वे सुरक्षा गारंटी प्रदान करनी होगी जिनकी उच्च परतें अपेक्षा करती हैं।
Runtime चरण में तीन महत्वपूर्ण क्षेत्र शामिल हैं: एक्सेस, कंप्यूट, और स्टोरेज।
Kubernetes API ही आपके क्लस्टर को काम करवाती है। इस API की सुरक्षा करना प्रभावी क्लस्टर सुरक्षा प्रदान करने की कुंजी है।
Kubernetes दस्तावेज़ीकरण के अन्य पृष्ठों में एक्सेस नियंत्रण के विशिष्ट पहलुओं को कैसे सेट करें इस बारे में अधिक विवरण है। security checklist आपके क्लस्टर के लिए सुझाए गए बुनियादी जाँच प्रदान करती है।
इसके अलावा, आपके क्लस्टर को सुरक्षित करने का अर्थ है API एक्सेस के लिए प्रभावी authentication और authorization लागू करना। वर्कलोड और क्लस्टर घटकों के लिए सुरक्षा पहचान प्रदान करने और प्रबंधित करने के लिए ServiceAccounts का उपयोग करें।
Kubernetes API ट्रैफ़िक की सुरक्षा के लिए TLS का उपयोग करता है; सुनिश्चित करें कि आप TLS का उपयोग करके क्लस्टर तैनात करें (नोड्स और कंट्रोल प्लेन के बीच ट्रैफ़िक सहित) और एन्क्रिप्शन कुंजियों की सुरक्षा करें। यदि आप CertificateSigningRequests के लिए Kubernetes के अपने API का उपयोग करते हैं, तो वहाँ दुरुपयोग को प्रतिबंधित करने पर विशेष ध्यान दें।
Containers दो चीज़ें प्रदान करते हैं: एप्लिकेशन के बीच अलगाव और उन अलग-अलग एप्लिकेशन को एक ही होस्ट कंप्यूटर पर चलाने के लिए संयोजित करने का एक तंत्र। वे दो पहलू—अलगाव और एकत्रीकरण—का अर्थ है कि रनटाइम सुरक्षा में ट्रेडऑफ़ की पहचान करना और एक उचित संतुलन खोजना शामिल है।
Kubernetes कंटेनर सेट अप और चलाने के लिए एक container runtime पर निर्भर करता है। Kubernetes प्रोजेक्ट किसी विशिष्ट कंटेनर रनटाइम की अनुशंसा नहीं करता है, और आपको यह सुनिश्चित करना चाहिए कि आपके द्वारा चुना गया रनटाइम आपकी सूचना सुरक्षा आवश्यकताओं को पूरा करता है।
रनटाइम पर अपने कंप्यूट की सुरक्षा के लिए, आप यह कर सकते हैं:
एप्लिकेशन के लिए Pod Security Standards लागू करें ताकि यह सुनिश्चित हो सके कि वे केवल आवश्यक privileges के साथ चलें।
अपने नोड्स पर एक विशेष ऑपरेटिंग सिस्टम चलाएँ जो विशेष रूप से containerized वर्कलोड चलाने के लिए डिज़ाइन किया गया हो। यह आमतौर पर एक रीड-ओनली ऑपरेटिंग सिस्टम (immutable image) पर आधारित होता है जो केवल कंटेनर चलाने के लिए आवश्यक सेवाएँ प्रदान करता है।
कंटेनर-विशिष्ट ऑपरेटिंग सिस्टम सिस्टम घटकों को अलग करने में मदद करते हैं और कंटेनर एस्केप की स्थिति में एक कम अटैक सर्फेस प्रस्तुत करते हैं।
साझा संसाधनों को उचित रूप से आवंटित करने के लिए ResourceQuotas परिभाषित करें, और यह सुनिश्चित करने के लिए कि Pods अपनी संसाधन आवश्यकताओं को निर्दिष्ट करें, LimitRanges जैसे तंत्रों का उपयोग करें।
अलगाव में सुधार के लिए वर्कलोड को विभिन्न नोड्स में विभाजित करें। यह सुनिश्चित करने के लिए कि विभिन्न ट्रस्ट संदर्भों वाले Pods अलग नोड सेट पर चलें, Kubernetes से या पारिस्थितिकी तंत्र से node isolation तंत्रों का उपयोग करें।
एक container runtime का उपयोग करें जो सुरक्षा प्रतिबंध प्रदान करता है।
Linux नोड्स पर, Linux सुरक्षा मॉड्यूल जैसे AppArmor या seccomp का उपयोग करें।
अपने क्लस्टर और उस पर चलने वाले एप्लिकेशन के लिए स्टोरेज की सुरक्षा के लिए, आप यह कर सकते हैं:
एन्क्रिप्शन कुंजियों के लिए, विशेष हार्डवेयर के भीतर इन्हें उत्पन्न करना प्रकटीकरण जोखिमों के विरुद्ध सर्वोत्तम सुरक्षा प्रदान करता है। एक hardware security module आपको क्रिप्टोग्राफ़िक ऑपरेशन करने की अनुमति दे सकता है बिना सुरक्षा कुंजी को कहीं और कॉपी होने दिए।
आपको नेटवर्क सुरक्षा उपायों पर भी विचार करना चाहिए, जैसे NetworkPolicy या एक service mesh। Kubernetes के कुछ नेटवर्क प्लगइन वर्चुअल प्राइवेट नेटवर्क (VPN) ओवरले जैसी तकनीकों का उपयोग करके आपके क्लस्टर नेटवर्क के लिए एन्क्रिप्शन प्रदान करते हैं। डिज़ाइन के अनुसार, Kubernetes आपको अपने क्लस्टर के लिए अपना नेटवर्किंग प्लगइन उपयोग करने देता है। यदि आप managed Kubernetes का उपयोग करते हैं, तो प्रदाता ने शायद पहले से ही आपके लिए एक नेटवर्क प्लगइन चुना हो।
आप जो नेटवर्क प्लगइन चुनते हैं और जिस तरह से आप इसे एकीकृत करते हैं, वह ट्रांज़िट में सूचना की सुरक्षा पर महत्वपूर्ण प्रभाव डाल सकता है।
Kubernetes आपको अतिरिक्त टूलिंग के साथ अपने क्लस्टर का विस्तार करने देता है। आप अपने एप्लिकेशन और उन्हें चलाने वाले क्लस्टर की निगरानी या समस्या निवारण में मदद के लिए थर्ड-पार्टी समाधान सेट अप कर सकते हैं। आपको Kubernetes में बनी हुई कुछ बुनियादी अवलोकनीयता सुविधाएँ भी मिलती हैं। कंटेनरों में चलने वाला आपका कोड लॉग उत्पन्न कर सकता है, मेट्रिक्स प्रकाशित कर सकता है, या अन्य अवलोकनीयता डेटा प्रदान कर सकता है; तैनाती के समय, आपको यह सुनिश्चित करना होगा कि आपका क्लस्टर वहाँ सुरक्षा का उचित स्तर प्रदान करे।
यदि आप कोई मेट्रिक्स डैशबोर्ड या इसी तरह की कोई चीज़ सेट करते हैं, तो उस डैशबोर्ड में डेटा भरने वाले घटकों की श्रृंखला के साथ-साथ डैशबोर्ड की भी समीक्षा करें। सुनिश्चित करें कि पूरी श्रृंखला पर्याप्त लचीलेपन और अखंडता सुरक्षा के साथ डिज़ाइन की गई है ताकि आप किसी घटना के दौरान भी इस पर भरोसा कर सकें जब आपका क्लस्टर डिग्रेड हो सकता है।
जहाँ उचित हो, Kubernetes परत के नीचे सुरक्षा उपाय तैनात करें, जैसे क्रिप्टोग्राफ़िक रूप से मापा गया बूट या समय का प्रमाणित वितरण (जो लॉग और ऑडिट रिकॉर्ड की निष्ठा सुनिश्चित करने में मदद करता है)।
उच्च-आश्वासन परिवेश के लिए, यह सुनिश्चित करने के लिए क्रिप्टोग्राफ़िक सुरक्षा तैनात करें कि लॉग छेड़छाड़-रोधी और गोपनीय दोनों हों।