डेटाबेस उपयोगकर्ता प्रबंधन डेटा सुरक्षा का एक विशेष रूप से महत्वपूर्ण हिस्सा है, क्योंकि हमें समझना चाहिए कि डेटाबेस तक कौन पहुंच रहा है और प्रत्येक उपयोगकर्ता के एक्सेस अधिकार सेट करें। यदि किसी डेटाबेस में उचित उपयोगकर्ता प्रबंधन नहीं है, तो समय बीतने के साथ उपयोगकर्ता का उपयोग बहुत गड़बड़ और बनाए रखना मुश्किल हो जाएगा।
MongoDB एक NoSQL डेटाबेस और दस्तावेज़ स्टोर है। RBAC (रोल बेस्ड-एक्सेस कंट्रोल) अवधारणा को लागू करना उपयोगकर्ता क्रेडेंशियल्स को प्रबंधित करने के लिए उचित उपयोगकर्ता प्रबंधन को लागू करने की कुंजी है।
रोल बेस्ड एक्सेस कंट्रोल (RBAC) क्या है?
RBAC एक दृष्टिकोण है जो सिस्टम को केवल अधिकृत उपयोगकर्ताओं के लिए प्रतिबंधित करता है। एक संगठन में, विभिन्न कार्य कार्यों के लिए भूमिकाएँ बनाई जाती हैं, डेटाबेस में हम तब किसी विशेष भूमिका को सौंपे गए कुछ कार्यों को करने के लिए एक्सेस अधिकार बनाते हैं।
स्टाफ सदस्यों (या अन्य सिस्टम उपयोगकर्ताओं) को कुछ भूमिकाएं सौंपी जाती हैं और उनके माध्यम से कंप्यूटर सिस्टम के कार्यों को करने की अनुमति दी जाती है। उपयोगकर्ताओं को सीधे अनुमति नहीं दी जाती है, लेकिन उन्हें केवल उनकी भूमिका (या भूमिकाओं) के माध्यम से प्राप्त किया जाता है। व्यक्तिगत उपयोगकर्ता अधिकारों का प्रबंधन केवल उपयोगकर्ता के खाते में उपयुक्त भूमिका रखने का मामला बन जाता है; यह सामान्य संचालन को सरल करता है (जैसे उपयोगकर्ताओं को जोड़ना या उपयोगकर्ता विभागों को बदलना)।
आरबीएसी के लिए तीन मुख्य नियम निर्धारित हैं:
- भूमिका असाइनमेंट :कोई विषय अनुमतियों को तभी निष्पादित कर सकता है जब विषय चुना गया हो या उसे कोई भूमिका सौंपी गई हो।
- प्राधिकरण की भूमिका :किसी विषय की सक्रिय भूमिका को विषय के लिए अधिकृत किया जाना चाहिए। उपरोक्त नियम 1 के साथ, यह नियम सुनिश्चित करता है कि उपयोगकर्ता केवल उन्हीं के लिए भूमिका निभा सकते हैं जो अधिकृत हैं।
- अनुमति प्राधिकरण :एक विषय परमिट तभी निष्पादित कर सकता है जब विषय की सक्रिय भूमिका के लिए अनुमति अधिकृत हो। नियम 1 और 2 के साथ, यह नियम सुनिश्चित करता है कि उपयोगकर्ता केवल उन्हीं के लिए अनुमति का प्रयोग कर सकते हैं जो अधिकृत हैं।
यह ब्लॉग MongoDB डेटाबेस में भूमिका आधारित एक्सेस कंट्रोल की संक्षिप्त समीक्षा करेगा।
MongoDB उपयोगकर्ता भूमिकाएं
MongoDB की डेटाबेस में कई प्रकार की भूमिकाएँ हैं, वे हैं...
अंतर्निहित भूमिकाएं
भूमिका-आधारित प्राधिकरण के माध्यम से MongoDB को डेटा और क्रियाओं तक पहुँच प्रदान करता है और इसमें अंतर्निहित भूमिकाएँ होती हैं जो डेटाबेस में पहुँच के कई स्तर प्रदान करती हैं।
भूमिका बनाए गए संसाधन पर कुछ करने के लिए कई विशेषाधिकार देती है। MongoDB अंतर्निहित भूमिकाओं की कई श्रेणियां हैं:
- उपयोगकर्ता डेटाबेस :भूमिकाएँ डेटाबेस उपयोगकर्ताओं की गैर-सिस्टम संग्रह में डेटा में हेरफेर करने की भूमिका होती है। उपयोगकर्ता डेटाबेस भूमिकाओं के उदाहरण हैं:पढ़ें, पढ़ें लिखें।
- डेटाबेस व्यवस्थापन :रोल्स डेटाबेस एडमिनिस्ट्रेशन डेटाबेस के एडमिनिस्ट्रेटिव मैनेजमेंट जैसे यूजर एडमिनिस्ट्रेशन, स्कीमा और उसमें मौजूद ऑब्जेक्ट से संबंधित है।
- डेटाबेस व्यवस्थापन भूमिकाओं के उदाहरण हैं:dbAdmin, userAdmin, dbOwner।
- क्लस्टर व्यवस्थापन :क्लस्टर प्रशासन की भूमिका पूरे MongoDB सिस्टम को प्रशासित करना है, जिसमें इसके रेप्लिकासेट और शार्क शामिल हैं। क्लस्टर प्रशासन भूमिकाओं के उदाहरण हैं:क्लस्टर एडमिन, क्लस्टर मैनेजर।
- बैकअप और बहाली :यह भूमिकाएं MongoDB में डेटाबेस बैकअप से संबंधित कार्यों के लिए विशिष्ट है। भूमिकाओं के उदाहरण हैं:बैकअप, रिस्टोर।
- सभी डेटाबेस भूमिकाएं :भूमिकाएँ डेटाबेस व्यवस्थापक में होती हैं और स्थानीय और कॉन्फ़िगरेशन को छोड़कर सभी डेटाबेस तक उनकी पहुँच होती है। उदाहरण हैं:readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase।
- सुपरयूज़र :भूमिकाओं में प्रत्येक उपयोगकर्ता को, प्रत्येक विशेषाधिकार के लिए, सभी डेटाबेस में पहुँच प्रदान करने की क्षमता होती है। इस भूमिका का उदाहरण:रूट
उपयोगकर्ता परिभाषित भूमिकाएं
अंतर्निहित भूमिकाओं के अलावा, हम अपनी आवश्यकताओं के अनुसार अपनी भूमिकाएँ बना सकते हैं, हम उन भूमिकाओं को क्या विशेषाधिकार देंगे। भूमिकाएँ बनाने के लिए, आप db.createRole () फ़ंक्शन कमांड का उपयोग कर सकते हैं। भूमिकाएँ बनाने में सक्षम होने के अलावा, मौजूदा भूमिकाओं को प्रबंधित करने के लिए कई अन्य कार्य भी हैं जैसे:db.dropRole () जो डेटाबेस में मौजूदा भूमिकाओं को हटाने के लिए उपयोगी है, db.getRole () विशिष्ट भूमिकाओं से सभी जानकारी प्राप्त करने के लिए कार्य करता है।पी>
MongoDB में विशेषाधिकार कार्रवाइयां
MongoDB में विशेषाधिकार क्रियाएं ऐसी क्रियाएं हैं जो किसी उपयोगकर्ता द्वारा संसाधन पर की जा सकती हैं। MongoDB में कई क्रिया श्रेणियां हैं, अर्थात्:
- डेटाबेस प्रबंधन क्रियाएँ, डेटाबेस प्रशासन से संबंधित कमांड से संबंधित क्रियाएँ जैसे कि चेंजपासवर्ड, क्रिएटकोलेक्शन, क्रिएटइंडेक्स क्रियाएँ।
- क्वेरी और राइट एक्शन, एक संग्रह में डेटा हेरफेर को क्रियान्वित करने से संबंधित क्रियाएं। उदाहरण के लिए सम्मिलित करें क्रिया में, उस क्रिया में निष्पादित किया जा सकने वाला आदेश सम्मिलित आदेश है जो दस्तावेज़ों में सम्मिलित कर सकता है।
- परिनियोजन प्रबंधन क्रियाएँ, डेटाबेस कॉन्फ़िगरेशन में परिवर्तन से संबंधित क्रियाएँ। कुछ क्रियाएं जो परिनियोजन प्रबंधन श्रेणी में आती हैं, वे हैं cpuProfiler, storageDetails, KillOp।
- प्रतिकृति क्रियाएँ, डेटाबेस प्रतिकृति संसाधनों के निष्पादन से संबंधित क्रियाएँ जैसे कि replSetConfigure, replSetHeartbeat.
- सर्वर व्यवस्थापन क्रियाएँ, mongoDB पर सर्वर व्यवस्थापन संसाधनों से कमांड से संबंधित क्रियाएँ जैसे लॉगरोटेट क्रियाएँ जो ऑपरेटिंग सिस्टम स्तर पर लॉग डेटाबेस को घुमाने के लिए उपयोग की जाती हैं।
- शेयरिंग क्रियाएँ, डेटाबेस शार्डिंग डेटाबेस से कमांड से संबंधित क्रियाएँ जैसे कि AddShard नए शार्प नोड्स जोड़ने के लिए।
- सत्र क्रियाएँ, डेटाबेस में संसाधन सत्रों से संबंधित क्रियाएँ जैसे listSessions, KillAnySession।
- नैदानिक क्रियाएं, डेटाबेस में नवीनतम स्थितियों का पता लगाने के लिए dbStats जैसे संसाधनों के निदान से संबंधित क्रियाएं।
- निःशुल्क निगरानी क्रियाएँ, डेटाबेस में निगरानी से संबंधित कार्य।
MongoDB उपयोगकर्ता और भूमिकाएं प्रबंधित करना
आप एक उपयोगकर्ता बना सकते हैं और फिर उपयोगकर्ता को अंतर्निहित भूमिकाओं के लिए असाइन कर सकते हैं, उदाहरण के लिए:
db.createUser( {
user: "admin",
pwd: "thisIspasswordforAdmin",
roles: [ { role: "root", db: "admin" } ]
} );
उपरोक्त स्क्रिप्ट में, जिसका अर्थ है कि व्यवस्थापक उपयोगकर्ता को एक पासवर्ड के साथ बनाया जाएगा जिसे बिल्टिन रूट भूमिकाओं के साथ परिभाषित किया गया है, जहां भूमिका सुपरयूज़र श्रेणी में शामिल है।
इसके अलावा, आप एक उपयोगकर्ता को एक से अधिक भूमिकाएँ सौंप सकते हैं, यहाँ एक उदाहरण दिया गया है:
db.createUser(
{user:'businessintelligence',
pwd:'BIpassw0rd',
roles:[{'role':'read', 'db':'oltp'}, { 'role':'readWrite', 'db':'olapdb'}]
});
व्यावसायिक इंटेलिजेंस उपयोगकर्ताओं की 2 भूमिकाएँ होती हैं, पहली oltp डेटाबेस में पढ़ी जाने वाली भूमिकाएँ, और olapdb डेटाबेस में रीडराइट भूमिकाएँ।
उपयोगकर्ता परिभाषित भूमिकाएं बनाना db.createRole () कमांड का उपयोग कर सकते हैं। आपको भूमिका बनाने का उद्देश्य निर्धारित करना चाहिए ताकि आप यह निर्धारित कर सकें कि उस भूमिका में कौन सी क्रियाएं होंगी। मोंगोडब डेटाबेस की निगरानी के लिए भूमिका निभाने का एक उदाहरण निम्नलिखित है:
use admin
db.createRole(
{
role: "RoleMonitoring",
privileges: [
{ resource: { cluster: true }, actions: [ "serverStatus" ] }
],
roles: []
}
)
तब हम उस उपयोगकर्ता को उपयोगकर्ता परिभाषित भूमिका सौंप सकते हैं जिसे हम बनाएंगे, निम्नलिखित कमांड का उपयोग कर सकते हैं:
db.createUser( {
user: "monuser",
pwd: "thisIspasswordforMonitoring",
roles: [ { role: "RoleMonitoring", db: "admin" } ]
} );
इस बीच, किसी मौजूदा उपयोगकर्ता को भूमिका सौंपने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
db.grantRolesToUser(
"existingmonuser",
[
{ role: "RoleMonitoring", db: "admin" }
]
)
किसी भूमिका के मौजूदा उपयोगकर्ता को निरस्त करने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
db.revokeRolesFromUser(
"oldmonguser",
[
{ role: "RoleMonitoring", db: "admin" }
]
)
उपयोगकर्ता परिभाषित भूमिकाओं का उपयोग करके, हम भूमिकाएं बना सकते हैं जैसा हम चाहते हैं कि हम उन भूमिकाओं पर कार्रवाई करेंगे, जैसे कि उपयोगकर्ताओं को प्रतिबंधित करने के लिए भूमिकाएं केवल कुछ डेटाबेस पर पंक्तियों को हटा सकती हैं।
निष्कर्ष
पहुंच अधिकारों के आवेदन से सुरक्षा में सुधार हो सकता है। डेटाबेस में भूमिकाओं और उपयोगकर्ताओं को मैप करना आपके लिए उपयोगकर्ता पहुंच को प्रबंधित करना आसान बनाता है।
सुनिश्चित करें कि भूमिकाओं और अधिकारों के बारे में यह सभी जानकारी दस्तावेज़ तक सीमित पहुंच के साथ ठीक से प्रलेखित है। यह आपको अन्य डीबीए या समर्थन कर्मियों को जानकारी साझा करने में मदद करता है और ऑडिट और समस्या निवारण के लिए आसान है।