सीआरडी का उपयोग करके कोड की नीति के रूप में कंटेनरों की सुरक्षा को स्वचालित कैसे करें



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

पत्रिका की टीम से अनुवाद कल बादल Mail.ru Cloud Solutionsस्रोत: Niteen Kole का उपयोग करके कोड के रूप में कंटेनर सुरक्षा को स्वचालित करने के लिए सुरक्षा नीति कैसे प्राप्त करें

आपको CRD की आवश्यकता क्यों है


सुरक्षा लंबे समय से DevOps टीमों के लिए सिरदर्द बनी हुई है । मौजूदा सॉफ़्टवेयर उपकरण सफलतापूर्वक असेंबली को स्वचालित करने और अनुप्रयोगों से बाहर निकलने की समस्याओं को हल करते हैं - कंटेनरों पर आधारित अनुप्रयोगों से स्वचालित रोलिंग मानक बन गया है। इसी समय, सुरक्षा सेटिंग्स का स्वचालन बहुत पीछे है।

आप स्वचालित भेद्यता स्कैनिंग को लागू कर सकते हैं, लेकिन एप्लिकेशन सुरक्षा के लिए नीतियों को मैन्युअल रूप से कॉन्फ़िगर करने की आवश्यकता सिरदर्द बन रही है।

की शुरूआत Kubernetes कस्टम संसाधन परिभाषाओं (CRDS) आवेदन विधानसभा और रोलआउट की प्रारंभिक अवस्था में कोड के रूप में सुरक्षा नीतियों को परिभाषित करने के संकल्प के मुद्दों के लिए मदद, और जब उत्पादन वातावरण के लिए आवेदन बाहर चल उनके उपयोग को स्वचालित करेगा।

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

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

CRD कैसे काम करता है?


सुरक्षा नीतियों को परिभाषित करने के लिए, हम NeuVector कंटेनर प्लेटफॉर्म के अंदर NeuVector CRD का उपयोग करेंगे । कंटेनर सुरक्षा के लिए न्युवेक्टर के विकल्प: एक्वासेक, स्टैकरॉक्स, सिस्डिग सिक्योर, ट्विस्टलॉक।

न्यूरवेक्टर सीआरडी में ऐसी नीतियां शामिल हैं जो पहले सामान्य एप्लिकेशन व्यवहार की एक पूरी प्रोफ़ाइल एकत्र करती हैं।

एकत्र किए गए व्यवहार को सभी नेटवर्क नियमों, प्रक्रियाओं, प्रोटोकॉल और फ़ाइल संचालन सहित सफेद सूची में जोड़ा जाता है। यह सब एक साथ मानक अनुप्रयोग संचालन का एक समूह बनाता है। फिर, सुरक्षा सेटिंग्स को लागू किया जाता है, जो कंटेनर के अंदर केवल पुष्टि किए गए नेटवर्क कनेक्शन की अनुमति देता है जो एप्लिकेशन बनाते हैं। इन कनेक्शनों की पहचान OSI मॉडल लेयर 7 (एप्लिकेशन प्रोटोकॉल लेयर) के निरीक्षण के दौरान की जाती है। इस प्रकार, अनधिकृत बाहरी कनेक्शन के किसी भी प्रयास को रोका जा सकेगा।

सुरक्षा नीतियां हमलावरों को अपने उद्देश्यों के लिए आवेदन का उपयोग करने के लिए कंटेनर के बाहर या अंदर संचार का उपयोग करने से रोकेंगी।

CRD आपको प्रत्येक सेवा के लिए वैश्विक नियम और नियम दोनों को अलग-अलग परिभाषित करने की अनुमति देता है। सीआरडी कुबेरनेट्स आरबीएसी के साथ भी संगत हैं, जिससे आप सुरक्षा नीतियों को लागू करने के लिए सेवा खातों और कुबेरनेट की भूमिकाओं का उपयोग कर सकते हैं।

इसके अलावा, अनुप्रयोग के प्रत्येक संस्करण के लिए अपनी नीतियां बनाने के लिए संस्करण उपलब्ध है, सुरक्षा नीति प्रबंधन उपयोगिताओं जैसे कि ओपन पॉलिसी एजेंट का समर्थन किया जाता है प्रोमेथियस और ग्राफाना पर आधारित विशेष रूप से अनुकूलित निगरानी प्रणाली के साथ

तैयार - कुबेरनेट क्लस्टर , साथ ही टीएलएस और आरबीएसी को वितरित अधिकारों के प्रबंधन और वितरण टीमों में विकास के मानकीकरण के लिए मेलविना क्लाउड सॉल्यूशंस क्लाउड में मुफ्त में परीक्षण किया जा सकता है।

न्यूरवेक्टर सीआरडी का निर्माण


NeuVector CRD आपको सुरक्षा नियम बनाने के लिए देशी YAML Kubernetes फ़ाइलों का उपयोग करने की अनुमति देता है।

एक nvsecurityrule.yaml फ़ाइल बनाएँ जिसमें NeuVector CRD का विवरण हो। यह फ़ाइल NvSecurityRuleप्रकृति से संबंधित namespacedऔर NvClusterSecurityRuleक्लस्टर से संबंधित है।

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: nvsecurityrules.neuvector.com
spec:
  group: neuvector.com
  names:
    kind: NvSecurityRule
    listKind: NvSecurityRuleList
    plural: nvsecurityrules
    singular: nvsecurityrule
  scope: Namespaced
  version: v1
  versions:
  — name: v1
    served: true
    storage: true

---

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: nvclustersecurityrules.neuvector.com
spec:
  group: neuvector.com
  names:
    kind: NvClusterSecurityRule
    listKind: NvClusterSecurityRuleList
    plural: nvclustersecurityrules
    singular: nvclustersecurityrule
  scope: Cluster
  version: v1
  versions:
  — name: v1
    served: true
    storage: true

CRD बनाने के लिए, दौड़ें:

$ kubectl create -f nvsecurityrule.yaml

जैसे ही न्यूरवेक्टर सीआरडी बनाया जाता है, पैरामीटर के साथ बाद में बनाए गए सभी संसाधन kind: NvSecurityRuleइस सीआरडी द्वारा संसाधित किए जाएंगे। इस प्रकार, आप कनेक्टेड सुरक्षा नीतियों के साथ अपने स्वयं के संसाधन बना सकते हैं। कुछ भी करने से पहले, न्यूरवेक्टर प्रलेखन का अध्ययन करना clusterrolesऔर आवश्यक जोड़ना आवश्यक है और clusterrolebindings

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

नीचे डेमो-सुरक्षा-v1.yaml से परीक्षण कोड का एक टुकड़ा है, जो केवल HTTP के माध्यम से उसी नाम स्थान के अन्य कंटेनरों तक पहुंच प्रदान करके nginx-podनेमस्पेस में कंटेनरों को प्रतिबंधित demoकरता है।

apiVersion: v1
items:
- apiVersion: neuvector.com/v1
  kind: NvSecurityRule
  metadata:
    name: nv.nginx-pod.demo
  spec:
    egress:
    — Selector:
        criteria:
        — key: service
          op: =
          value: node-pod.demo
        — key: domain
          op: =
          value: demo
        name: nv.node-pod.demo
      action: allow
      applications:
      - HTTP
      name: nv.node-pod.demo-egress-0
      ports: any
    — Selector:
        criteria:
        — key: service
          op: =

स्निपेट के नीचे सभी नेटवर्क कनेक्शनों का विवरण होना चाहिए demo, जैसे नामस्थान में कंटेनरों को अनुमति दी जाती है , उदाहरण के लिए, सर्वर से कनेक्शन redis, साथ ही प्रक्रियाओं और डिस्क गतिविधि की अनुमति प्रत्येक कंटेनर को दी जाती है। पहले NeuVector सुरक्षा नीतियों को लागू करने और उसके बाद अनुप्रयोग को लागू करने के लिए मत भूलना। इस प्रकार, सुरक्षा नीतियां उस समय से प्रभावी होंगी जब आवेदन शुरू होगा।

सुरक्षा नीति लागू करने के लिए:

$ kubectl create -f demo-security-v1.yaml

न्यूरवेक्टर निर्मित संसाधनों में सुरक्षा नीतियों को पढ़ता है और न्यूरवेक्टर नियंत्रक से संपर्क करने के लिए REST API का उपयोग करता है, जो हस्तांतरित सुरक्षा नीतियों के अनुसार नियम और कॉन्फ़िगरेशन बनाता है।

कोड के रूप में सुरक्षा नीतियों को लागू करने के लिए विकल्प


कोड के रूप में सुरक्षा नीतियों का उपयोग करना DevOps / DevSecOps कमांड और प्रोग्रामर दोनों के लिए बहुत सारे अवसरों को खोलता है। यहाँ कुछ उदाहरण हैं।

बिल्डिंग अनुप्रयोगों के प्रारंभिक चरण में सुरक्षा मैनिफ़ेस्ट का विकास और परीक्षण


विकास के प्रारंभिक चरण में एप्लिकेशन को सुरक्षित बनाने के लिए डेवलपर्स CRD का उपयोग कर सकते हैं। वे एक साथ सुरक्षा नीतियों को लागू करने और लागू करने के लिए कई तरह के प्रदर्शन कर सकते हैं।

छवि को असेंबल करने के बाद, स्वचालित रूप से कमजोरियों के लिए जाँच, और DevOps टीम द्वारा अनुमोदन, DevOps दोनों घोषणापत्र को सत्यापित कर सकते हैं और सुरक्षा दृष्टिकोण से विकास टीम को सिफारिशें कर सकते हैं। नए अनुप्रयोगों को पहले से तैनाती से लेकर उत्पादन तक प्रभावी सुरक्षा नीतियों के साथ एक साथ तैनात किया जाएगा।



सुरक्षा नीतियों का निर्माण करने के लिए व्यवहार विश्लेषण का उपयोग करना


DevOps टीमें सुरक्षा नीतियों को विकसित करने और NeuVector CRD में उपयोग के लिए उपयुक्त yaml फाइलें बनाने के लिए परीक्षण वातावरण में NeuVector व्यवहार विश्लेषण क्षमताओं का उपयोग कर सकती हैं।

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

ये नियम उन डेवलपर्स को निर्यात और पारित किए जाते हैं जो आवश्यक समायोजन करते हैं, और DevOps, जो उत्पादन में उपयोग करने से पहले उनका परीक्षण करते हैं।



वैश्विक सुरक्षा नीतियां


NeuVector CRD आपको वैश्विक सुरक्षा नीतियों को परिभाषित करने की अनुमति देता है जो किसी विशेष अनुप्रयोग या क्लस्टर में अनुप्रयोगों के समूह से बंधे नहीं होते हैं। उदाहरण के लिए, आपकी सुरक्षा या परिनियोजन टीम सभी कंटेनरों में किसी भी कनेक्शन को अवरुद्ध करने या क्लस्टर में सभी प्रक्रियाओं तक निगरानी पहुंच को कॉन्फ़िगर करने के लिए वैश्विक नेटवर्क नियमों को परिभाषित कर सकती है।



सामान्य सुरक्षा नीतियों और अनुप्रयोग सुरक्षा नीतियों के संयोजन के उपयोग से, आप उन जटिल और सटीक सुरक्षा सेटिंग्स का निर्माण कर सकते हैं जिनकी आपके संगठन को आवश्यकता है।

निम्नलिखित कंटेनरों से बाहरी कनेक्शनों पर प्रतिबंध लगाने का एक उदाहरण है:

- apiVersion: neuvector.com/v1
  kind: NvClusterSecurityRule
  metadata:
    name: containers
    namespace: default
  spec:
    egress: []
    file: []
    ingress:
    — Selector:
        criteria: []
        name: external
      action: deny
      applications:
      - SSH
      name: containers-ingress-0
      ports: tcp/22
    process:
    — action: deny
      name: ssh
      path: /bin/ssh
    target:    
      Selector:
        criteria:
        — key: container
          op: =
          value: '*'
        name: containers
      policymode: null
    version: v1  
 

परीक्षण से उत्पादन तक सुरक्षा नीतियां पलायन


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

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

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


All Articles