MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB उत्पादन परिनियोजन के लिए एक सुरक्षा चेकलिस्ट

जब किसी एप्लिकेशन को किसी संगठन को निष्पादित करने के लिए एक बड़े भौगोलिक क्षेत्र की आवश्यकता होती है, तो उसे अक्सर अपने डेटा को क्लाउड में संग्रहीत करने के लिए मजबूर किया जाता है। MongoDB पर निर्मित एप्लिकेशन इस अवधारणा के अपवाद नहीं हैं। संवेदनशील डेटा की सुरक्षा करने में विफलता के कारण व्यवसाय को कुछ गंभीर झटके लग सकते हैं, जिसमें खराब प्रतिष्ठा, डेटा विसंगतियां, वित्तीय नुकसान और कभी-कभी पूर्ण डेटा हानि शामिल है।

क्लाउड में संग्रहीत डेटा में आपराधिक तत्वों की रुचि होने की संभावना होती है। दुर्भावनापूर्ण इरादे वाले लोग अधिक आसानी से पहुँच प्राप्त कर सकते हैं जब डेटाबेस सुरक्षा सुनिश्चित करने के लिए कोई मानक प्रक्रिया निर्धारित नहीं की गई हो। इनमें से कुछ घटिया प्रक्रियाओं में शामिल हैं...

  • खराब पासवर्ड प्रबंधन:कुछ डेवलपर्स प्रोजेक्ट स्रोत फ़ाइलों में पासवर्ड को हार्ड कोडिंग करते हैं, इसलिए यदि कोई हैकर एप्लिकेशन को डीकंपाइल करता है तो वे आसानी से सामग्री को पुनः प्राप्त कर सकते हैं।
  • डेटाबेस और कॉम्प्लिमेंट्री प्लगइन्स को अपडेट करने में अनिच्छा या विफलता। नए डेटाबेस संस्करणों में नई सुविधाएं सुरक्षा के संदर्भ में हो सकती हैं या इसके बजाय पूर्ववर्तियों से कुछ सुविधाएं तय की जा सकती हैं।
  • घटिया डेटाबेस कॉन्फ़िगरेशन उदाहरण के लिए एन्क्रिप्टेड डिक्रिप्शन कुंजियों का उपयोग नहीं करना या किसी भी सुरक्षा प्रोटोकॉल का उपयोग नहीं करना ।

डेटाबेस हमले दिन-ब-दिन बढ़ते जा रहे हैं (और प्रवृत्ति जारी रहने की उम्मीद है), लेकिन आप तब तक शिकार नहीं हो सकते जब तक कि आप उचित सुरक्षा विचारों को नियोजित नहीं करते। इस लेख में, हम कुछ प्रक्रियाओं पर चर्चा करने जा रहे हैं जिन्हें क्लाउड में MongoDB इंस्टॉलेशन के साथ जांचा जा सकता है। आपको उन सभी को लागू करने की ज़रूरत नहीं है, लेकिन कम से कम उन लोगों को चुनने की पूरी कोशिश करें जो अगर टाले जाते हैं, तो आपके डेटा को विनाशकारी स्थिति में डाल सकते हैं।

MongoDB प्री-प्रोडक्शन सुरक्षा संबंधी विचार

ये ऐसे विचार हैं जिन्हें सुनिश्चित करना चाहिए कि जब वे MongoDB को उत्पादन परिवेश में परिनियोजित करने वाले हों तो वे अच्छी तरह से कॉन्फ़िगर किए गए हों। इनमें शामिल हैं: 

  1. एक्सेस कंट्रोल के लिए प्रमाणीकरण को सक्षम और लागू करना
  2. भूमिका-आधारित अभिगम नियंत्रण कॉन्फ़िगर करें
  3. नेटवर्क एक्सपोजर सीमित करें
  4. संचार एन्क्रिप्ट करें
  5. डेटा एन्क्रिप्ट करें
  6. ऑडिट सिस्टम गतिविधियां 
  7. MongoDB चलाने के लिए समर्पित उपयोगकर्ता का उपयोग करें
  8. आधिकारिक और अपडेट किए गए MongoDB पैकेज का उपयोग करें
  9. जरूरत न होने पर Javascript निष्पादन अक्षम करें
  10. MongoDB सुरक्षा सुधारों के साथ अपडेट रहें

1. अभिगम नियंत्रण के लिए प्रमाणीकरण को सक्षम और लागू करना

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

कनेक्शन स्ट्रिंग कुछ इस तरह दिखनी चाहिए:

mongodb://[username:[email protected]]host[:port1][/[defaultauthdb]and not just

mongodb://host[:port1]/[defaultauthdb]

2. भूमिका-आधारित अभिगम नियंत्रण कॉन्फ़िगर करें

प्रशासनिक अनुमति वाले उपयोगकर्ताओं को जोड़ने के बाद, भूमिका-आधारित अभिगम नियंत्रण (RBAC) का उपयोग करके इन उपयोगकर्ताओं को असाइन की गई भूमिकाओं को सीमित करें। उपयोगकर्ता की भूमिकाओं में शामिल हो सकते हैं:विशिष्ट या सभी संग्रहों को पढ़ना, लिखना या दोनों। इसलिए, उपयोगकर्ता ऐसी भूमिका नहीं निभा सकता जो उन्हें असाइन नहीं की गई है या केवल असाइन किए गए संग्रहों के लिए संचालन कर सकता है।

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

यह सलाह दी जाती है कि कम संख्या में उपयोगकर्ता डेटाबेस तक पहुंचें जिससे उपयोगकर्ता लोग या क्लाइंट एप्लिकेशन हो सकते हैं।

मोंगोडीबी में कुछ भूमिकाओं के लिए उपयोगकर्ता अनुमतियां बनाने और प्रदान करने के लिए आप इस उदाहरण का उपयोग मोंगो खोल में कर सकते हैं

use finance

db.createUser(

  {

    user: "manager",

    pwd: passwordPrompt(),  // or cleartext password

    roles: [

       { role: "read", db: "loans" },

       { role: "read", db: "interests" },

       { role: "read", db: "useraccounts" },

       { role: "readWrite", db: "wages" }

    ]

  }

)

 साथ ही, बाहरी प्रमाणीकरण विकल्पों जैसे LDAP और Kerberos को चुनें।

3. नेटवर्क एक्सपोजर सीमित करें

डेटाबेस को होस्ट करने वाले नेटवर्क टोपोलॉजी को व्यापक रूप से सुरक्षित करने की आवश्यकता है और सबसे महत्वपूर्ण बात यह है कि केवल लोकलहोस्ट इंटरफ़ेस को सुनें। यह बाहरी कनेक्शन से जोखिम से बचने के लिए है जैसे कि यह MongoDB पुराने संस्करणों के मामले में था। सुनिश्चित करें कि MongoDB एक विश्वसनीय नेटवर्क वातावरण में चलता है जिसमें सुरक्षा फ़ायरवॉल सक्षम है। सुरक्षा समूहों के साथ इनबाउंड और आउटबाउंड ट्रैफ़िक को नियंत्रित करें जिनका उपयोग अन्य उदाहरणों के साथ नहीं किया जा सकता है। विश्वसनीय IP पतों से एक्सेस की अनुमति देने के लिए IP श्वेतसूची का उपयोग करें इसलिए केवल विश्वसनीय क्लाइंट से नेटवर्क इंटरफेस और पोर्ट के साथ MongoDB इंस्टेंस से कनेक्शन की अनुमति दें।

इसके अलावा, सीधे SSH रूट एक्सेस को अक्षम करें।

4. संचार एन्क्रिप्ट करें

MongoDB कॉन्फ़िगरेशन को इनकमिंग और आउटगोइंग कनेक्शन को केवल TLS/SSL तक ही सीमित रखना चाहिए। TLS/SSL MongoDB परिनियोजन के mongod और mongos घटकों और इससे जुड़े सभी अनुप्रयोगों के बीच संचार को एन्क्रिप्ट करता है।

उत्पादन परिवेश में, MongoDB परिनियोजन को एकल प्रमाणपत्र प्राधिकारी द्वारा जेनरेट और हस्ताक्षरित मान्य प्रमाणपत्रों का उपयोग करना चाहिए।

5. डेटा एन्क्रिप्ट करें

डेटाबेस डेटा दो रूप लेता है:डेटा आराम से और ट्रांज़िट में। ट्रांज़िट में डेटा क्लाइंट-साइड फ़ील्ड स्तर एन्क्रिप्शन का उपयोग करके सुरक्षित किया जा सकता है लेकिन यह केवल संस्करण 4.2 में उपलब्ध है। TLS/SSL एन्क्रिप्शन ट्रांज़िट में डेटा का भी ध्यान रखता है।

संस्करण 3.2 एंटरप्राइज़ से WiredTiger स्टोरेज इंजन स्टोरेज लेयर एन्क्रिप्शन में डेटा प्रदान करता है। यह पुष्टि करता है कि केवल डिक्रिप्शन कुंजी वाले प्रमाणित उपयोगकर्ता ही डेटा तक पहुंच सकते हैं। यदि आप आराम से WiredTiger के एन्क्रिप्शन का उपयोग नहीं कर रहे हैं, तो फ़ाइल-सिस्टम एन्क्रिप्शन का उपयोग करें। बाकी एन्क्रिप्शन पर डेटा किसी को आपके डेटाबेस की सामग्री तक पहुँचने से रोकता है यदि वे भौतिक सर्वर तक पहुँच प्राप्त करते हैं इसलिए MongoDB को सुरक्षित करने में एक महत्वपूर्ण हिस्सा है।

6. ऑडिट सिस्टम गतिविधियां 

यह एक एंटरप्राइज़ विकल्प है जो डेटा और डेटाबेस कॉन्फ़िगरेशन में सभी परिवर्तनों को ट्रैक करने की अनुमति देता है। घटनाओं को एक syslog कनेक्शन या कुछ लॉग फ़ाइल में लिखा जाता है। लॉग में स्रोत आईपी पते सहित डीबी प्रमाणीकरण प्रयास शामिल हो सकते हैं और जानकारी यह निर्धारित करने में सहायता कर सकती है कि कौन से होस्ट को डेटाबेस तक पहुंचने से फ़ायरवॉल द्वारा अवरुद्ध किया जाना चाहिए। इसके अलावा, कौन-सी घटनाओं को लॉग करना है, यह ठीक से समझ में आ सकता है।

सामान्य तौर पर ऑडिट लॉग से व्यवस्थापक को कुछ फोरेंसिक विश्लेषण करने में मदद मिलेगी और इसलिए मानक सुरक्षा नियंत्रण स्थापित होंगे।

7. MongoDB चलाने के लिए समर्पित उपयोगकर्ता का उपयोग करें

मोंगोडीबी प्रक्रियाओं को एक समर्पित ऑपरेटिंग सिस्टम उपयोगकर्ता खाते के साथ चलाया जाना चाहिए जिसमें एक्सेस अनुमतियां सक्षम होनी चाहिए।

8. आधिकारिक और अपडेट किए गए MongoDB पैकेज का उपयोग करें

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

 9. यदि आवश्यक न हो तो Javascript निष्पादन अक्षम करें

mapReduce और  $कहाँ कुछ निष्पादन योग्य JavaScript कोड MongoDB के भीतर हैं और यदि वे अच्छी तरह से प्रबंधित नहीं हैं तो वे कुछ अवांछित डेटा असंगति का परिणाम दे सकते हैं या किसी को डेटा को अप्रत्यक्ष रूप से एक्सेस करने की अनुमति दे सकते हैं और यदि वे चाहें तो कुछ परिवर्तन लागू कर सकते हैं। .

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

10. MongoDB सुरक्षा सुधारों के साथ अपडेट प्राप्त करें

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

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

निष्कर्ष

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

अपने संस्करण से संबंधित नवीनतम सुरक्षा और बग फिक्स को ध्यान में रखते हुए MongoDB और प्लगइन्स के नवीनतम संस्करणों का उपयोग करना महत्वपूर्ण है।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. स्प्रिंग डेटा MongoDB और बल्क अपडेट

  2. एसक्यूएल में पैडिंग

  3. ClusterControl - 2017 से सभी फ़ीचर हाइलाइट्स और सुधार

  4. दूरस्थ कनेक्शन सुनने के लिए Linux पर MongoDB प्राप्त करना

  5. MongoDB में डुप्लिकेट रिकॉर्ड खोजें