Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Mongodb

Ubuntu 16.04 पर MongoDB को कैसे सुरक्षित करें

<घंटा/>

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

प्रमाणीकरण सक्षम करना और व्यवस्थापक उपयोगकर्ता जोड़ना

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

व्यवस्थापक उपयोगकर्ता जोड़ना

एक व्यवस्थापक उपयोगकर्ता जोड़ने के लिए हम पहले मोंगो शेल से जुड़ेंगे।

$ मोंगो

जब हम मोंगो डीबी खोल खोलते हैं तो यह कई चेतावनियां दिखाता है कि डेटाबेस के लिए एक्सेस कंट्रोल सक्षम नहीं है और डेटाबेस में पढ़ने या लिखने की पहुंच और कॉन्फ़िगरेशन अप्रतिबंधित है।

आउटपुट:MongoDB शेल संस्करण v3.4.4 से कनेक्ट करना:MongoDB://127.0.0.1:27017MongoDB सर्वर संस्करण:3.4.4 MongoDB शेल में आपका स्वागत है। इंटरैक्टिव सहायता के लिए, "सहायता" टाइप करें। अधिक व्यापक दस्तावेज़ीकरण के लिए, देखेंhttps://docs.mongodb.org/Questions? सहायता समूह का प्रयास करेंhttps://groups.google.com/group/mongodb-userServer में स्टार्टअप चेतावनियां हैं:2017-05-16T12:33:46.819+0530 I STORAGE [initandlisten]2017-05-16T12:33:46.819+0530 I स्टोरेज [initandlisten] ** चेतावनी:WiredTiger स्टोरेज इंजन 2017-05-16T12:33:46.819+0530 I STORAGE [initandlisten] ** के साथ XF S फाइल सिस्टम का उपयोग करने की जोरदार सिफारिश की गई है। ** https://d ohub.mongodb.org/ देखें। core/prodnotes-filesystem2017-05-16T12:33:46.850+0530 मैं नियंत्रण [initandlisten]2017-05-16T12:33:46.850+0530 मैं नियंत्रण [initandlisten] ** चेतावनी:डेटाबेस के लिए एक्सेस नियंत्रण सक्षम नहीं है। 2017-05-16T12:33:46.850+0530 मैं नियंत्रण [initandlisten] ** डेटा और कॉन्फ़िगरेशन को पढ़ने और लिखने की पहुंच अप्रतिबंधित है।2017-05-16T12:33:46.850+0530 मैं नियंत्रण [initandlisten]2017-05- 16T12:33:46.850+0530 मैं [initandlisten]2017-05-16T12:33:46.850+0530 को नियंत्रित करता हूं [initandlisten] ** चेतावनी:/sys/kernel/mm/transparent_hugepage/enable 'हमेशा' है।2017-05 -16T12:33:46.850+0530 मैं नियंत्रण करता हूँ [initandlisten] ** हमारा सुझाव है कि इसे 'कभी नहीं' 2017-05-16T12:33:46.850+0530 मैं नियंत्रित करता हूं [initandlisten]2017-05-16T12:33:46.850+0530 मैं इसे नियंत्रित करता हूं [initandlisten] ** चेतावनी:/sys/kernel/mm/transparent_hugepage/defrag हमेशा 'हमेशा' होता है। 46.850+0530 मैं नियंत्रित करता हूँ [initandlisten]>

चूंकि व्यवस्थापक खाते का उपयोगकर्ता नाम चुनने पर कोई प्रतिबंध नहीं है क्योंकि विशेषाधिकार स्तर चर userAdminAnyDatabase से आता है। डेटाबेस व्यवस्थापक क्रेडेंशियल संग्रहीत करता है।

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

> admin.switched to db admin का उपयोग करें

एक बार डेटाबेस स्विच करने के बाद हम एक व्यवस्थापक उपयोगकर्ता बनाएंगे।

> db.createUser(... {... उपयोगकर्ता:"DBAdmin",... pwd:"DBAdmin'sSecurePassword",... भूमिकाएँ:[{भूमिका:"userAdminAnyDatabase", db:"व्यवस्थापक" } ]... }... )आउटपुट:सफलतापूर्वक जोड़ा गया उपयोगकर्ता:{ "उपयोगकर्ता":"DBAdmin", "भूमिकाएं":[ { "भूमिका":"userAdminAnyDatabase", "db":"व्यवस्थापक" }]}> 

चूंकि हमने एक सुरक्षित पासवर्ड के साथ DBAdmin नामक एक व्यवस्थापक उपयोगकर्ता बनाया है।

हमने अभी-अभी एक व्यवस्थापक उपयोगकर्ता बनाया है, लेकिन जब तक हम Mongo DB कॉन्फ़िगरेशन में प्रमाणीकरण सक्षम नहीं करते, तब तक इसकी आवश्यकता नहीं होगी।

MongoDB के लिए प्रमाणीकरण सक्षम करना

हमें कॉन्फ़िगरेशन फ़ाइल mongod.conf में प्रमाणीकरण को सक्षम करने की आवश्यकता है जो /etc में स्थित है और Mongo DB डेमॉन को पुनरारंभ करें।

अब हम mongod.conf फ़ाइल को संपादित करेंगे और $सुरक्षा अनुभाग में संशोधन करेंगे।

$ sudo vi /etc/mongod.conf

कॉन्फ़िगरेशन फ़ाइल नीचे की तरह दिखती है

# mongod.conf# सभी विकल्पों के दस्तावेज़ीकरण के लिए, देखें:# https://docs.mongodb.org/manual/reference/configuration-options/# data.storage:dbPath:/var/ कहां और कैसे स्टोर करें lib/mongodbjournal:सक्षम:सच # इंजन:# mmapv1:# वायर्ड टाइगर:# जहां लॉगिंग डेटा लिखना है। .0.1#प्रक्रिया प्रबंधन:#सुरक्षा:#ऑपरेशन प्रोफाइलिंग:#प्रतिकृति:#शार्डिंग:## उद्यम-केवल विकल्प:

अनुभाग को सक्षम करने के लिए हमें सुरक्षा (#) से पहले टिप्पणी को हटाने की आवश्यकता थी और हमें नीचे प्राधिकरण सेटिंग जोड़ने की आवश्यकता है।

#processManagement - सुरक्षा - प्राधिकरण - "सक्षम" #ऑपरेशन प्रोफाइलिंग - #प्रतिकृति - #शार्डिंग -

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

MongoDB सेवाओं को पुनः आरंभ करने का आदेश नीचे दिया गया है -

$ sudo systemctl रीस्टार्ट mongod

एक बार, हम उन सेवाओं को पुनः आरंभ करते हैं जिन्हें हम नीचे दिए गए आदेश के साथ MongoDB सेवाओं की स्थिति की जांच कर सकते हैं -

$ sudo systemctl status mongodOutput:mongod.service - उच्च-प्रदर्शन, स्कीमा-मुक्त दस्तावेज़-उन्मुख डेटाबेसलोडेड:लोडेड (/lib/systemd/system/mongod.service; अक्षम; विक्रेता प्रीसेट:सक्षम) सक्रिय:सक्रिय (चल रहा है) ) मंगल 2017-05-16 12:52:09 IST से; 48s पहलेडॉक्स:https://docs.mongodb.org/manualMain PID:3281 (mongod)कार्य:20स्मृति:33.3MCPU:734msCroup:/system.slice/mongod.service└─3281 /usr/bin/mongod --quiet - -config /etc/mongod.conf16 मई 12:52:09 ubuntu-16 systemd[1]:उच्च-प्रदर्शन, स्कीमा-मुक्त दस्तावेज़-उन्मुख डेटाबेस प्रारंभ किया।

Mongo DB पर प्रमाणीकरण की पुष्टि करना

सबसे पहले, हम बिना किसी क्रेडेंशियल के MongoDB से जुड़ते हैं।

$ mongoOutput:MongoDB शेल संस्करण v3.4.4 से कनेक्ट करना:mongodb://127.0.0.1:27017MongoDB सर्वर संस्करण:3.4.4>

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

> dbs2017-05-16T12:56:17.306+0530 E QUERY [thread1] त्रुटि:listDatabases विफल:{ "ठीक":0, "errmsg":"व्यवस्थापक पर कमांड निष्पादित करने के लिए अधिकृत नहीं है { listDatabases:1.0} "," कोड ":13, "कोडनाम":"अनधिकृत"}:_getErrorWithCode@src/mongo/shell/utils.js:25:13Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1shellHelper .show@src/mongo/shell/utils.js:769:19shellHelper@src/mongo/shell/utils.js:659:15@(shellhelp2):1:1

हम देख सकते हैं कि हम प्रमाणीकरण के बिना डेटाबेस बनाने या उपयोग करने में सक्षम नहीं हैं, अब शेल से बाहर निकलें प्रमाणीकरण के साथ प्रयास करें।

व्यवस्थापक उपयोगकर्ता पहुंच सत्यापित करना

अब, व्यवस्थापक उपयोगकर्ता प्रमाणीकरण का उपयोग करके व्यवस्थापक डेटाबेस से कनेक्ट करने का प्रयास करें। उपयोगकर्ता प्रमाणीकरण का उपयोग करके डेटाबेस से कनेक्ट करने का आदेश नीचे दिया गया है -

$ mongo -u DBAdmin -p --authenticationDatabase adminMongoDB शेल संस्करण v3.4.4 पासवर्ड दर्ज करें:से कनेक्ट करना:mongodb://127.0.0.1:27017MongoDB सर्वर संस्करण:3.4.4> dbsadmin 0.000GBस्थानीय 0.000GB दिखाएँ> <ब्लॉकक्वॉट> 

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


  1. MongoDB में संग्रह कैसे छोड़ें?

    MongoDB में संग्रह छोड़ने के लिए, आपको ड्रॉप () कमांड का उपयोग करने की आवश्यकता है। वाक्य रचना इस प्रकार है: db.yourCollectionName.drop(); उपरोक्त सिंटैक्स सही या गलत लौटाता है। यदि संग्रह सफलतापूर्वक गिरा दिया जाता है तो यह सच हो जाता है अन्यथा गलत। आइए सबसे पहले MongoDB से सभी संग्रह नाम प्रदर्श

  1. MongoDB में कंसोल कैसे साफ़ करें?

    MongoDB में कंसोल को साफ़ करने के लिए, आप निम्न में से किसी भी दो सिंटैक्स का उपयोग कर सकते हैं। पहला सिंटैक्स इस प्रकार है, जो कि कीबोर्ड शॉर्टकट का उपयोग है - Ctrl + L उपरोक्त कुंजी को दबाने के बाद, आप MongoDB में कंसोल को साफ़ कर सकते हैं। दूसरा सिंटैक्स इस प्रकार है - cls उपरोक्त सिंटैक्स को

  1. MongoDB में सरणी में कैसे संलग्न करें?

    MongoDB में सरणी में जोड़ने के लिए, $concatArrays का उपयोग करें। आइए दस्तावेजों के साथ एक संग्रह बनाएं - db.demo435.insertOne({FirstName:[John],LastName:[Doe]});{ स्वीकृत :सच, insertId :ObjectId(5e7719c6bbc41e36cc3cae99)} संग्रह से सभी दस्तावेज़ों को खोजने () विधि की सहायता से प्रदर्शित करें - db