MongoDB मूल बातें:भूमिका-आधारित अभिगम नियंत्रण (RBAC) को कॉन्फ़िगर करना
MongoDB, एक ओपन-सोर्स दस्तावेज़ स्टोर और आज बाज़ार में सबसे लोकप्रिय NoSQL डेटाबेस, आपके MongoDB परिनियोजन पर सुरक्षा व्यवस्थापन करने के लिए कई प्रकार की उन्नत सुविधाएँ प्रदान करता है। इस ट्यूटोरियल पोस्ट में, हम आपको दिखाएंगे कि कैसे रीइंडेक्स, मोंगोडम्प और मोंगोरेस्टोर के लिए आपके मोंगोडीबी सिस्टम में उपयोगकर्ता पहुंच को प्रबंधित करने के लिए भूमिका-आधारित एक्सेस कंट्रोल (आरबीएसी) सेट अप करें।
यदि आप अपने MongoDB डेटाबेस के व्यवस्थापक हैं, तो आपको एक व्यक्तिगत उपयोगकर्ता को कुछ कार्रवाई करने की क्षमता प्रदान करने के अनुरोध प्राप्त होने की संभावना है। MongoDB की सुरक्षा विशेषताएं अब काफी परिपक्व हैं, और आपको बहुत बारीक भूमिका-आधारित एक्सेस नियंत्रण बनाने और असाइन करने की अनुमति देती हैं।
हम एक उपयोगकर्ता को उसके समाधान के माध्यम से चरण-दर-चरण दृष्टिकोण में रीइंडेक्स कार्रवाई करने का विशिष्ट विशेषाधिकार प्रदान करने के एक उदाहरण के माध्यम से चलने जा रहे हैं। इससे पहले कि हम यह प्रदर्शित करें कि यह सामान्य सुरक्षा कार्रवाई कैसे की जाती है, आइए MongoDB के भूमिका-आधारित कार्रवाई नियंत्रण का अवलोकन करें।
MongoDB RBAC कैसे काम करता है
MongoDB आपको निर्दिष्ट 'भूमिकाओं' के माध्यम से उपयोगकर्ताओं तक पहुंच को प्रतिबंधित करने के लिए एक RBAC तंत्र का उपयोग करने की अनुमति देता है। RBAC अभिगम नियंत्रण डिफ़ॉल्ट रूप से सक्षम नहीं है और इसे आपकी टीम के व्यवस्थापक द्वारा कॉन्फ़िगर किया जाना चाहिए। किसी उपयोगकर्ता को किसी विशिष्ट संसाधन तक पहुंच प्रदान करके, आप उस भूमिका या उपयोगकर्ता को उस संसाधन पर कार्रवाई करने के लिए अधिकृत कर रहे हैं।
-
संसाधन
एक डेटाबेस, संग्रह, संग्रह का सेट, या क्लस्टर।
-
कार्रवाइयां
विशिष्ट संचालन जो उपयोगकर्ता एक संसाधन (आमतौर पर एक डेटाबेस) पर कर सकता है।
MongoDB पूर्व-निर्धारित भूमिकाओं का समर्थन करता है, जिन्हें बिल्ट-इन रोल्स कहा जाता है, जिसमें तार्किक समूहों जैसे कि रीड (-ओनली), रीडराइट, बैकअप, आदि में एकत्रित क्रियाएं होती हैं। MongoDB के निर्माण का भी समर्थन करता है उपयोगकर्ता-परिभाषित भूमिकाएँ।
MongoDB reIndex RBAC विशेषाधिकारों को अधिकृत करना
अब जब आपके पास कुछ संदर्भ है, तो चलिए एक उपयोगकर्ता को रीइंडेक्स क्रिया करने के विशेषाधिकार को अधिकृत करने के चरणों में कूदते हैं।
MongoDB भूमिका-आधारित अभिगम नियंत्रण के माध्यम से रीइंडेक्स विशेषाधिकार कैसे बनाएं #RBACट्वीट करने के लिए क्लिक करें-
विशेषाधिकार कार्रवाइयां निर्धारित करें
MongoDB संदर्भ में क्रियाओं को प्रिविलेज एक्शन के रूप में जाना जाता है और आप MongoDB के दस्तावेज़ों में इन क्रियाओं की एक विस्तृत सूची पा सकते हैं। जिस क्रिया में हम रुचि रखते हैं वह है रीइंडेक्स, या वह विशेषाधिकार जो उपयोगकर्ता को किसी दिए गए डेटाबेस या संग्रह पर रीइंडेक्स कमांड निष्पादित करने की अनुमति देता है। चूंकि बड़ी मात्रा में डेटा या बड़ी संख्या में इंडेक्स वाले संग्रह के लिए रीइंडेक्स कमांड महंगा हो सकता है, यह डिफ़ॉल्ट रूप से प्रशासनिक भूमिकाओं का हिस्सा है।
-
एक भूमिका के लिए विशेषाधिकार प्रदान करें
एक बार जब हम उन विशेषाधिकारों को निर्धारित कर लेते हैं जिनकी हमें आवश्यकता होती है, तो हम भूमिका के लिए उन विशेषाधिकारों को प्रदान करने के लिए आगे बढ़ते हैं। आप केवल एक अंतर्निहित भूमिका भी चुन सकते हैं जिसके पास पहले से ही विशेषाधिकार है, लेकिन हम अंतर्निहित भूमिकाओं को संशोधित करने के लिए अपनी स्वयं की उपयोगकर्ता-परिभाषित भूमिका बनाने की सलाह देते हैं क्योंकि वे वापस लौटने के लिए अच्छे डिफ़ॉल्ट हैं।
-
एक नई उपयोगकर्ता-परिभाषित भूमिका बनाएं
यहां बताया गया है कि हम अपनी नई उपयोगकर्ता-परिभाषित भूमिका बनाने के लिए क्या उपयोग करेंगे:
> use test switched to db test > db.createRole({role: "reIndexing", privileges: [], roles: ["readWrite"]}) // Create a new role out of the default readWrite rule. { "role" : "reIndexing", "privileges" : [ ], "roles" : [ "readWrite" ] } > db.getRole("reIndexing") { "role" : "reIndexing", "db" : "test", "isBuiltin" : false, "roles" : [ { "role" : "readWrite", "db" : "test" } ], "inheritedRoles" : [ { "role" : "readWrite", "db" : "test" } ] }
-
नई भूमिका के लिए विशेषाधिकार प्रदान करें
अब हम अपनी नई बनाई गई उपयोगकर्ता-परिभाषित भूमिका के लिए अपने वांछित विशेषाधिकार सौंपने जा रहे हैं।
> db.grantPrivilegesToRole("reIndexing", [ { resource: { db : "test", collection: "" }, actions: ["reIndex"] } ]) > db.getRole("reIndexing", {showPrivileges: true}) { "role" : "reIndexing", "db" : "test", "isBuiltin" : false, "roles" : [ { "role" : "readWrite", "db" : "test" } ], "inheritedRoles" : [ { "role" : "readWrite", "db" : "test" } ], "privileges" : [ { "resource" : { "db" : "test", "collection" : "" }, "actions" : [ "reIndex" ] } ], "inheritedPrivileges" : [ .... ] }
-
-
उपयोगकर्ता को भूमिका प्रदान करें
आखिरी चरण उपयोगकर्ता को यह नई भूमिका सौंपना है:
> db.getUser("indexUser") { "_id" : "test.indexUser", "user" : "indexUser", "db" : "test", "roles" : [ { "role" : "readWrite", "db" : "test" } ] } > db.grantRolesToUser("indexUser", ["reIndexing"]) > db.getUser("indexUser") { "_id" : "test.indexUser", "user" : "indexUser", "db" : "test", "roles" : [ { "role" : "reIndexing", "db" : "test" }, { "role" : "readWrite", "db" : "test" } ] }
एक डमी उपयोगकर्ता पर इन चरणों को निष्पादित करना याद रखें ताकि आप संबंधित उपयोगकर्ता को उनके प्राधिकरण के अनुमोदन देने और सूचित करने से पहले नए विशेषाधिकारों के कार्य का परीक्षण और पुष्टि कर सकें।
अतिरिक्त विशेषाधिकार:mongodump &mongorestore
हमने पहले रीइंडेक्स उदाहरण का प्रदर्शन किया, जिसमें भूमिकाओं को विशेषाधिकार देना और उपयोगकर्ताओं को भूमिकाएं देना दोनों को स्पष्ट किया गया।
एक अधिक सामान्य उपयोग मामला mongodump
का उपयोग करके बैकअप करने और क्रियाओं को पुनर्स्थापित करने के लिए प्राधिकरण प्रदान करना है और mongorestore
. यह MongoDB की अंतर्निहित भूमिकाओं के माध्यम से एक ही चरण में किया जा सकता है, और उपयोगकर्ताओं को mongodump
चलाने में सक्षम बनाने के लिए बैकअप और पुनर्स्थापना विशेषाधिकार दोनों दिए जा सकते हैं और mongorestore
, क्रमशः।
उदाहरण के लिए, यहां बताया गया है कि हम किसी उपयोगकर्ता को किसी भी डेटाबेस का बैकअप लेने और पुनर्स्थापित करने की अनुमति कैसे देंगे। ध्यान दें कि ये भूमिकाएं केवल व्यवस्थापक डेटाबेस के उपयोगकर्ताओं के लिए उपलब्ध हैं।
> db.grantRolesToUser("backupUser", ["backup", "restore"]) > db.getUser("backupUser") { "_id" : "admin.backupUser", "user" : "backupUser", "db" : "admin", "roles" : [ { "role" : "restore", "db" : "admin" }, { "role" : "backup", "db" : "admin" }, { "role" : "readWrite", "db" : "admin" } ] }
एक डेटाबेस या संग्रह पर बैकअप लेने और पुनर्स्थापित करने के लिए अनुमतियों को जोड़ने के लिए अधिक काम की आवश्यकता होती है। mongodump
के लिए , आपको उस दिए गए डेटाबेस पर अतिरिक्त रूप से एक खोज विशेषाधिकार प्रदान करना होगा, हालांकि, mongorestore
अधिक जटिल विशेषाधिकार आवश्यकताएं हैं।
MongoDB सुरक्षा में रुचि रखते हैं? यहाँ MongoDB सुरक्षा विषयों पर शीर्ष पोस्ट हैं:
- मोंगोडीबी सुरक्षा के तीन ए - प्रमाणीकरण, प्राधिकरण और लेखा परीक्षा
- आपके MongoDB इंस्टॉलेशन की सुरक्षा को बेहतर बनाने के लिए तीन आसान चरण
- MongoDB-CR प्रमाणीकरण को MongoDB 3.x पर डिफ़ॉल्ट रूप से कॉन्फ़िगर करना
- Node.js में स्व-हस्ताक्षरित प्रमाणपत्रों के साथ MongoDB SSL
- 10 युक्तियाँ आपकी MongoDB सुरक्षा को बेहतर बनाने के लिए