এই নিবন্ধে, আমরা শিখব কিভাবে উবুন্টু 16.04 এ মঙ্গো ডিবি সুরক্ষিত করা যায়। পূর্ববর্তী সংস্করণগুলিতে মঙ্গো ডিবি স্বয়ংক্রিয় শোষণের জন্য ঝুঁকিপূর্ণ কারণ, ডিফল্টরূপে, ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেওয়া হয়নি এমন কোনও প্রমাণীকরণ নেই, যে কোনও ব্যবহারকারী ডাটাবেস এবং বিষয়বস্তু তৈরি, পড়তে, সংশোধন এবং ধ্বংস করতে পারে, এর কারণে মঙ্গো ডিবি ডেমন যা ডিফল্ট সেটিংস হিসাবে সমস্ত ইন্টারফেস শুনতে পারে।
প্রমাণিকরণ সক্ষম করা এবং অ্যাডমিন ব্যবহারকারী যোগ করা
সংস্করণ 3.x প্রকাশের পরে মঙ্গো ডিবি-র সর্বশেষ সংস্করণগুলিতে এই সমস্যাটি প্রশমিত করা হয়েছে, তবে, প্রমাণীকরণটি এখনও ডিফল্ট সেটিংস হিসাবে অক্ষম করা হয়েছে, তাই যে কোনও ব্যবহারকারী ডাটাবেসে সম্পূর্ণ অ্যাক্সেস পেতে পারে। এটি সুরক্ষিত করতে আমরা একটি প্রশাসনিক ব্যবহারকারী তৈরি করব এবং প্রমাণীকরণ সক্ষম করব এবং অ্যাডমিন ব্যবহারকারীর সাথে প্রমাণীকরণ পরীক্ষা করব৷
একজন অ্যাডমিন ব্যবহারকারী যোগ করা
একজন অ্যাডমিন ব্যবহারকারী যোগ করতে আমরা প্রথমে মঙ্গো শেলের সাথে সংযোগ করব।
$ মঙ্গো
আমরা যখন মঙ্গো ডিবি শেল খুলি তখন এটি অনেক সতর্কতা দেখায় যে ডেটাবেসের জন্য অ্যাক্সেস নিয়ন্ত্রণ সক্ষম করা নেই এবং ডাটাবেসে পড়ার বা লেখার অ্যাক্সেস এবং কনফিগারেশন সীমাবদ্ধ নয়৷
আউটপুট:MongoDB শেল সংস্করণ v3.4.4 এর সাথে সংযুক্ত হচ্ছে:MongoDB://127.0.0.1:27017MongoDB সার্ভার সংস্করণ:3.4.4 MongoDB শেলে স্বাগতম। ইন্টারেক্টিভ সাহায্যের জন্য, "help" টাইপ করুন। আরও বিস্তৃত ডকুমেন্টেশনের জন্য, http দেখুন://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.8319 I স্টোরেজ [initandlisten] ** সতর্কতা:WiredTiger স্টোরেজ ইঞ্জিনের সাথে XF S ফাইল সিস্টেম ব্যবহার করার জন্য দৃঢ়ভাবে সুপারিশ করা হয়2017-05-16T12:33:46.819+0530 I স্টোরেজ [initandlisten] ** দেখুন https://d ochub.mongodb.org/ core/prodnotes-filesystem2017-05-16T12:33:46.850+0530 I কন্ট্রোল [initandlisten]2017-05-16T12:33:46.850+0530 I কন্ট্রোল [initandlisten] ** ডাটা অ্যাক্সেস করা যাবে না। 2017-05-16T12:33:46.850+0530 আমি নিয়ন্ত্রণ করি [শুরু করা] ** ডেটা এবং কনফিগারেশনের অ্যাক্সেস সীমাহীন পড়ুন এবং লিখুন। 16T12:33:46.850+0530 আমি নিয়ন্ত্রণ করি [initandlisten]2017-05-16T12:33:46.850+0530 আমি নিয়ন্ত্রণ করি [initandlisten] ** সতর্কতা:/sys/kernel/ mm/transparent_dwayen's-52017-05-16 পাতা -16T12:33:46.850+0530 আমি নিয়ন্ত্রণ করি [initandlisten] ** আমরা এটিকে 'কখনই না' এ সেট করার পরামর্শ দিই2017-05-16T12:33:46.850+0530 I CONTROL [initandlisten]2017-05-16T12:33:46.850+0530 I CONTROL:[initandlisten] /sys/kernel/ mm/transparent_hugepage/defrag হল 'সর্বদা'।2017-05-16T12:33:46.850+0530 I CONTROL [initandlisten] ** আমরা এটিকে 'কখনও না'তে সেট করার পরামর্শ দিই2017-05-16T12:33 46.850+0530 আমি নিয়ন্ত্রণ করি [initandlisten]>
যেহেতু প্রিভিলেজ লেভেল পরিবর্তনশীল userAdminAnyDatabase থেকে আসে তাই অ্যাডমিন অ্যাকাউন্টের ইউজারনেম বেছে নেওয়ার কোনো সীমাবদ্ধতা নেই। ডাটাবেস অ্যাডমিন শংসাপত্র সংরক্ষণ করে।
আমরা আমাদের পছন্দের ব্যবহারকারীর নাম নির্বাচন করব এবং নীচের কমান্ডগুলি ব্যবহার করে সুরক্ষিত পাসওয়ার্ড বেছে নেওয়ার বিষয়টি নিশ্চিত করব।
> admin.switched to db admin ব্যবহার করুন
ডাটাবেস স্যুইচ হয়ে গেলে আমরা একজন অ্যাডমিন ব্যবহারকারী তৈরি করব।
> db.createUser(... {... ব্যবহারকারী:"DBAdmin",... pwd:"DBAdmin'sSecurePassword",... ভূমিকা:[ { ভূমিকা:"userAdminAnyDatabase", db:"admin" } ]... }... )আউটপুট:সফলভাবে যুক্ত ব্যবহারকারী:{ "user" :"DBAdmin", "roles" :[ { "role" :"userAdminAnyDatabase", "db" :"admin" }]}>
যেহেতু আমরা একটি সুরক্ষিত পাসওয়ার্ড দিয়ে DBAdmin নামে একটি অ্যাডমিন ব্যবহারকারী তৈরি করেছি৷
৷আমরা এইমাত্র একজন অ্যাডমিন ব্যবহারকারী তৈরি করেছি কিন্তু যতক্ষণ না আমরা মঙ্গো ডিবি কনফিগারেশনে প্রমাণীকরণ সক্ষম করি ততক্ষণ পর্যন্ত এটির প্রয়োজন হবে না৷
MongoDB-এর জন্য প্রমাণীকরণ সক্ষম করা হচ্ছে
আমাদের কনফিগারেশন ফাইল mongod.conf-এ প্রমাণীকরণ সক্ষম করতে হবে যা /etc-এ অবস্থিত এবং Mongo DB ডেমন পুনরায় চালু করতে হবে।
এখন আমরা mongod.conf ফাইলটি সম্পাদনা করব এবং $security বিভাগে পরিবর্তন করব।
$ sudo vi /etc/mongod.conf
কনফিগারেশন ফাইল নিচের মত দেখায়
# mongod.conf# সমস্ত বিকল্পের ডকুমেন্টেশনের জন্য, দেখুন:# https://docs.mongodb.org/manual/reference/configuration-options/# কোথায় এবং কিভাবে ডেটা সঞ্চয় করতে হয়.storage:dbPath:/var/ lib/mongodbjournal:enabled:true# engine:# mmapv1:# wiredTiger:# যেখানে লগিং ডেটা লিখতে হবে।systemLog:destination:filelogAppend:truepath:/var/log/mongodb/mongod.log# network interfacesnet:port:27017bindIp:0 .0.1#প্রক্রিয়া ব্যবস্থাপনা:#নিরাপত্তা:#অপারেশনপ্রোফাইলিং:#প্রতিলিপি:#শার্ডিং:## এন্টারপ্রাইজ-অনলি বিকল্প:
বিভাগটি সক্ষম করার জন্য আমাদের নিরাপত্তা (#) এর আগে মন্তব্যটি সরাতে হবে এবং আমাদের নীচের অনুমোদন সেটিংস যোগ করতে হবে।
#প্রসেস ম্যানেজমেন্ট − নিরাপত্তা − অনুমোদন − “সক্ষম” #অপারেশনপ্রোফাইলিং − #প্রতিলিপি − #শার্ডিং −
মনে রাখবেন যে নিরাপত্তা লাইনে কোন স্থান এবং অনুমোদন লাইন নেই যা দুটি স্পেস দিয়ে শুরু করতে হবে। একবার আমরা কনফিগারেশন ফাইলে লাইন যোগ করার পর আমাদের মঙ্গোড ডেমন পুনরায় চালু করতে হবে।
নীচে MongoDB পরিষেবাগুলি পুনরায় চালু করার কমান্ড রয়েছে –
$ sudo systemctl রিস্টার্ট মঙ্গোড
একবার, আমরা পরিষেবাগুলি পুনরায় চালু করি আমরা নীচের কমান্ডের সাহায্যে MongoDB পরিষেবাগুলির স্থিতি পরীক্ষা করতে পারি –
$ sudo systemctl অবস্থা mongodOutput:mongod.service - উচ্চ-কর্মক্ষমতা, স্কিমা-মুক্ত নথি-ভিত্তিক ডেটাবেস লোড করা হয়েছে:লোড করা হয়েছে (/lib/systemd/system/mongod.service; অক্ষম; বিক্রেতা প্রিসেট:সক্ষম) সক্রিয়:সক্রিয় (চলমান) ) মঙ্গলবার থেকে 2017-05-16 12:52:09 IST; 48s agoDocs:https://docs.mongodb.org/manualMain PID:3281 (mongod)কাজ:20Memory:33.3MCPU:734msCGroup:/system.slice/mongod.service└─3281 /usr/binquit -config /etc/mongod.confমে 16 12:52:09 ubuntu-16 systemd[1]:শুরু হয়েছে উচ্চ-কর্মক্ষমতা, স্কিমা-মুক্ত নথি-ভিত্তিক ডাটাবেস।
মঙ্গো ডিবি-তে প্রমাণীকরণ যাচাই করা হচ্ছে
প্রথমে, আসুন আমরা কোন শংসাপত্র ছাড়াই 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] Error:listDatabases ব্যর্থ হয়েছে:{ "ok" :0, "errmsg" :"কমান্ড চালানোর জন্য প্রশাসকের কাছে অনুমোদিত নয় { listDatabases:1.0} ", "code" :13, "codeName" :"Unauthorized"} :_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.0GB000GB দেখান। প্রাক>এই প্রবন্ধে, আমরা শিখেছি কিভাবে প্রশাসক ব্যবহারকারী যোগ করে এবং ডিফল্ট সেটিংস হিসাবে প্রমাণীকরণ সক্ষম করে মঙ্গো ডিবিকে সুরক্ষিত করতে হয় মঙ্গো ডিবি ব্যবহারকারীর প্রমাণীকরণ সক্ষম করেনি যেখানে কোনও ব্যবহারকারী ডাটাবেস তৈরি, মুছতে এবং সংশোধন করতে পারে৷