Kubernetes SecurityContext में Linux क्षमताओं को जोड़ें या निकालें

Kubernetes Securitycontext Mem Linux Ksamata Om Ko Jorem Ya Nikalem



कुबेरनेट्स कंटेनर में प्रत्येक पॉड और कंटेनर को प्रदान किए जाने वाले विशेषाधिकारों की डिग्री को प्रबंधित करना मुश्किल हो सकता है। हम कंटेनर की सुरक्षा बढ़ाने के लिए पॉड और कंटेनर से लिनक्स क्षमताओं को जोड़ने या हटाने के लिए Kubernetes SecurityContext क्षमताओं का उपयोग कर सकते हैं। यह आलेख क्षमताओं को जोड़ने और हटाने का एक सरल उदाहरण लागू करने के लिए सुरक्षा कॉन्टेक्स्ट का उपयोग करने पर केंद्रित है। नमूना उदाहरण में सभी क्षमताओं को हटाने और कंटेनर में केवल एक क्षमता जोड़ने के लिए एक YAML फ़ाइल का कॉन्फ़िगरेशन प्रदान किया गया है। इस लेख में, कंटेनर की क्षमताओं को प्रदर्शित करने के लिए प्रोक और कैपश कमांड का उपयोग किया जाता है।

चरण 1: मिनिक्यूब सर्वर प्रारंभ करें







सबसे पहले, मिनीक्यूब सर्वर शुरू करें ताकि आप अपना एप्लिकेशन चला सकें और क्यूबेक्टल निर्देशों का उपयोग कर सकें। आप कुबेरनेट्स वातावरण में मिनीक्यूब सर्वर का उपयोग करके अपने नोड्स, पॉड्स और यहां तक ​​​​कि क्लस्टर को तैनात कर सकते हैं। मिनिक्यूब को सक्रिय मोड में बनाए रखने के लिए निम्न आदेश का उपयोग किया जाना चाहिए:



> मिनिक्यूब शुरू करें



ऐसा करने से, मिनिक्यूब सर्वर चालू हो जाता है और कुबेरनेट्स वातावरण उपयोग के लिए तैयार हो जाता है।





चरण 2: कुबेरनेट्स YAML फ़ाइल बनाएँ



दूसरे चरण में, पॉड को तैनात करने के लिए एक YAML फ़ाइल बनाएँ।

नैनो का उपयोग करके एक YAML फ़ाइल बनाने के लिए चरणों का पालन करें:

  • उस निर्देशिका पथ पर जाएँ जहाँ आप फ़ाइल बनाना चाहते हैं या किसी मौजूदा फ़ाइल को संशोधित करना चाहते हैं।
  • फ़ाइल नाम के बाद नैनो कमांड टाइप करें।

निम्नलिखित नैनो कमांड चलाएँ। यह 'nano podsample.yaml' नाम की एक YAML कॉन्फ़िगरेशन फ़ाइल बनाता है।

> नैनो podsample.yaml

चलिए अगले चरण पर चलते हैं जो आपको यह जानने में मदद करता है कि podsample.yaml फ़ाइल को कैसे कॉन्फ़िगर करें।

चरण 3: YAML फ़ाइल को कॉन्फ़िगर करें

हम कैपश टूल को पूर्ववर्ती चरण में जोड़ते हैं ताकि हम अपने कंटेनर की क्षमताओं को देख सकें।

ध्यान दें कि इनमें से कोई भी पैरामीटर इस कंटेनर के लिए सुरक्षा कॉन्टेक्स्ट सेक्शन के लिए कॉन्फ़िगर नहीं किया गया है। इस प्रकार, वे सभी सिस्टम डिफॉल्ट्स के लिए तैयार हैं। इस तथ्य पर विचार करें कि यह कंटेनर डिफ़ॉल्ट उपयोगकर्ता के रूप में संचालित होता है जो कि डॉकरफाइल में प्रदान किया जाता है जिससे इसे बनाया गया है यदि कुबेरनेट्स में इसके लिए कोई उपयोगकर्ता परिभाषित नहीं किया गया है। कई कंटेनरों के लिए, यह डिफ़ॉल्ट उपयोगकर्ता रूट है।

चरण 4: एक पॉड बनाएँ

इस चरण में, निम्न संलग्न आदेश के साथ podsample.yaml बनाएँ:

> कुबेक्टल लागू करें -एफ podsample.yaml

चरण 5: क्षमताओं के लिए जाँच करें

पिछले चरण में, एक पॉड बनाया और चलाया गया।

अब जबकि हमारे पास इसके अंदर एक शेल है, हम निम्नलिखित कमांड का उपयोग करके इसकी क्षमताओं को सत्यापित करने के लिए कैपश का उपयोग कर सकते हैं:

> $ क्यूबेक्ट्ल कार्यकारी - -stdin - -टी टोपी - - राख

Capsh कमांड का उपयोग करके, कंटेनर की डिफ़ॉल्ट क्षमताओं को देखना संभव है जो निम्नानुसार सूचीबद्ध हैं:

हम दिए गए आउटपुट से देख सकते हैं कि कंटेनर में कई डिफ़ॉल्ट क्षमताएं हैं जो कंटेनर को रनटाइम पर दी जाती हैं।

चरण 6: गिराओ अकेला क्षमता वाई कुबेरनेट्स सुरक्षा संदर्भ में

इस चरण में, हम कंटेनर की एकल क्षमता को छोड़ देते हैं।

निम्न आदेश का उपयोग करके yaml फ़ाइल को कॉन्फ़िगर करें:

> नैनो dropod.yaml

उसके बाद, दिए गए आदेश का उपयोग करके droppod.yaml फ़ाइल को कॉन्फ़िगर करने के लिए आगे बढ़ें:

> कुबेक्टल लागू करें -एफ droppod.yaml

कदम 7 : YAML फ़ाइल में एकल क्षमता जोड़ने के लिए कॉन्फ़िगर करें

इस चरण में, yaml फ़ाइल (dropped.yaml) खोलें जो चरण 6 में बनाई गई थी। फिर, कंटेनर को इस तरह सेट करें कि उसके पास अब CAP_MKNOD क्षमता तक पहुंच न हो, जो नई फ़ाइल सिस्टम नोड बनाने की क्षमता को हटा देता है।

कॉन्फ़िगर की गई फ़ाइल को दिखाया गया है:

कदम 8 : क्षमताओं के लिए जाँच करें

YAML फ़ाइल को CAP_MKNOD क्षमता छोड़ने के लिए कॉन्फ़िगर किया गया है।

इस चरण में, निम्न आदेश का उपयोग करके कंटेनर की क्षमताओं की जांच करने के लिए dropcaps.yaml फ़ाइल निष्पादित करें और चलाएं:

> $ क्यूबेक्ट्ल कार्यकारी - -stdin - -टी ड्रॉपकैप्स - - राख

क्षमता की जाँच ड्रॉपकैप्स फ़ाइल चलाकर की जा सकती है:

> # कैपश - -प्रिंट

हम देख सकते हैं कि इस पॉड ने पहले पॉड की तुलना में CAP_MKNOD क्षमता को गिरा दिया।

कदम 9 : Kubernetes SecurityContext में सभी क्षमताओं को छोड़ दें

चूंकि कुबेरनेट्स एक क्षमता को छोड़ सकते हैं, यह सुरक्षा कॉन्टेक्स्ट के माध्यम से सभी क्षमताओं को भी छोड़ सकता है। इस चरण में, दिए गए आदेश को लागू करके कंटेनर की सभी क्षमताओं को छोड़ दें:

> नैनो नमूनानोकैप.यामल

उसके बाद, निम्न आदेश का उपयोग करके samplenocap.yaml फ़ाइल को कॉन्फ़िगर करें:

> kubectl create -एफ नमूनानोकैप.यामल

अब, अपनी सुरक्षा कॉन्टेक्स्ट सेटिंग्स में सभी क्षमताओं को छोड़ने के लिए अगले चरण पर चलते हैं।

चरण 10: YAML फ़ाइल में सभी क्षमताओं को कॉन्फ़िगर करें

इस चरण में, चरण 9 में बनाई गई yaml फ़ाइल खोलें। फिर, कंटेनर के अंदर कॉन्फ़िगर करें। सुरक्षा कॉन्टेक्स्ट  और कंटेनर की सभी क्षमताओं को छोड़ दें।

कॉन्फ़िगर की गई फ़ाइल को दिखाया गया है:

कदम ग्यारह : क्षमताओं के लिए जाँच करें

क्षमताओं के बारे में जानकारी देखने के लिए कैपश में नोकैप्स चलाएँ। इस चरण में, निम्न आदेश का उपयोग करें और कंटेनर की सभी क्षमताओं को प्रदर्शित करें:

> kubectl कार्यकारी - -stdin - -टी कोई सीमाएँ नहीं - - राख

Capsh में samplenocaps yaml फ़ाइल चलाकर निम्नलिखित उदाहरण में क्षमताओं की जाँच की जा सकती है:

> # कैपश - -प्रिंट

पिछले आउटपुट से पता चलता है कि वर्तमान = '' और बाउंडिंग सेट = '' अब खाली हैं। क्षमताओं को सफलतापूर्वक गिरा दिया गया है।

चरण 1 2 : बैश स्थापित करें

इस चरण में, एपीके के माध्यम से बैश स्थापित करें क्योंकि यदि हमारे पास कोई क्षमता नहीं है तो कुछ सिस्टम फ़ंक्शन काम नहीं करेंगे। भले ही हमारा कंटेनर रूट के रूप में काम कर रहा हो, बैश पैकेज की स्थापना विफल हो जाती है।

> # एपीके बैश जोड़ें

चरण 1 3 : क्षमताओं की जानकारी की जाँच करें

हमारे कंटेनर की क्षमताओं को देखने के कई तरीके हैं जैसे कि कैपश और प्रो कमांड का उपयोग करना। इस चरण में, हम proc कमांड का उपयोग करके कंटेनर क्षमता प्रदर्शित करते हैं और बिटमैप के रूप में proc क्षमता प्रदर्शित करते हैं। हालांकि यह कैप्श के परिणाम के रूप में काफी पठनीय नहीं है, यहां परिभाषित प्रत्येक बिट एक निश्चित क्षमता के लिए खड़ा है।

> # सीडी /प्रोक /1/

यहां, हम देख सकते हैं कि इस विशेष कंटेनर में कोई सक्षम क्षमताएं नहीं हैं; ये सभी मान शून्य हैं।

चरण 1 4 : Kubernetes SecurityContext में एकल क्षमता जोड़ना

पिछले चरणों में, हमने CAP_MKNOD की एकल क्षमता को छोड़ दिया और सभी क्षमताओं को हटा दिया। लेकिन, इस चरण में, हम क्षमताओं को वापस जोड़ सकते हैं।

YAML फ़ाइल बनाने के लिए निम्न आदेश निष्पादित करें:

> नैनो sampleadd.yaml

उसके बाद, sampleadd.yaml फ़ाइल को कॉन्फ़िगर करें।

> kubectl create -एफ sampleadd.yaml

अब, चलिए sampleadd.yaml फाइल को आजमाते हैं और हमारी सुरक्षा कॉन्टेक्स्ट सेटिंग्स में एक ही क्षमता जोड़ते हैं।

चरण 1 5 : YAML फ़ाइल में एकल क्षमता को कॉन्फ़िगर करें

अब, चलिए फ़ाइल को spec.container.securityContext में क्षमता जोड़कर ['MKNOD'] में क्षमता जोड़कर कॉन्फ़िगर करते हैं।

क्षमता YAML फ़ाइल में प्रदर्शित होती है।

कदम 16 : क्षमताओं के लिए जाँच करें

इस चरण में, निम्नलिखित कमांड का उपयोग करके क्षमताओं की जांच करने के लिए ऐडकैप्स चलाएँ:

> kubectl कार्यकारी - -stdin - -टी एडकैप्स - - जैसा

अतिरिक्त क्षमता को निम्नलिखित दिए गए आउटपुट में देखा जा सकता है:

वर्तमान = cap_mknod+ep

बाउंडिंग सेट = cap_mknod

> # कैपश - -प्रिंट

निष्कर्ष

आपने सबसे पहले कार्यान्वित उदाहरण से कंटेनर की डिफ़ॉल्ट क्षमताओं के बारे में सीखा जो कैपश कमांड के साथ प्रदर्शित होने वाले रन टाइम पर असाइन किए गए हैं। इसके बाद, आपने CAP_MKNOD नामक कंटेनर में एकल क्षमता को छोड़ना सीखा। फिर, आपने यह भी सीखा कि // ड्रॉप: -ऑल कॉन्फ़िगरेशन का उपयोग करके कंटेनर की सभी क्षमताओं को कैसे छोड़ा जाए। फिर, हमने कंटेनरों की क्षमताओं को प्रदर्शित करने के लिए दो तरीकों का उपयोग किया - कैपश और प्रो कमांड का उपयोग करना।