2015-10-02 13 views
6

मैं अपने MongoDB सर्वर पर कुछ प्रतिबंध लागू करने के लिए कोशिश कर रहा हूँ करने के लिए उपयोग को सीमित:/ड्रॉप आपरेशन हटाना के बारे मेंMongoDB अनुमतियाँ: दो डेटाबेस

दो मेरे सर्वर पर डेटाबेस प्रतिबंधित किया जाना चाहिए - केवल एक विशेष उपयोगकर्ता खाते के लिए अनुमति दी जानी चाहिए ऐसा करो। अन्य सभी डेटाबेस पूरी तरह से अप्रतिबंधित होना चाहिए (निश्चित रूप से व्यवस्थापक डेटाबेस को छोड़कर):

मैं दो उन का उपयोग कर इस स्थिति मॉडल करने के लिए करने की कोशिश की:

 | database A & B | all the other databases | 
--------------------------------------------------------- 
user a | read & write |  read & write  | 
user b |  read-only  |  read & write  | 

हर कोई सभी डेटाबेस पढ़ बनाना readAnyDatabase भूमिका का उपयोग कर आसान है। हालांकि उपयोगकर्ता बी मॉडलिंग केवल डेटाबेस ए & बी पढ़ सकता है लेकिन & अन्य सभी डेटाबेस (बाद में बनाए गए डेटाबेस सहित) को पढ़ने के लिए मुझे सिरदर्द देता है।

यह सुरक्षा मॉडल मोंगोडीबी में कैसे कार्यान्वित किया जा सकता है?

+1

तो संक्षेप में आप चाहते हैं 'उपयोगकर्ता b' सीमित कामकाज कि केवल विशिष्ट डीबी पर पढ़ने के लिए है करने के लिए? –

+0

हां। लेकिन साथ ही इस उपयोगकर्ता को अन्य सभी डेटाबेस पर पूर्ण अनुमतियां होनी चाहिए जो वर्तमान में मौजूद हैं और भविष्य में मौजूद होंगी (उपयोगकर्ता द्वारा बनाए गए समेत)। – Robert

उत्तर

0

सबसे पहले उपयोगकर्ता अनुमतियों है कि हम नीचे बनाने के लिए जा रहे हैं के आयोजन के लिए एक डेटाबेस perm अपना mongodb.conf फ़ाइल

auth = true 

में प्रमाणीकरण सक्षम करें।

use perm 

तो DatabaseA के लिए केवल पढ़ने के लिए अनुमति के साथ userb बना सकते हैं और DatabaseB

db.createUser(
    { 
     user: "userb", 
     pwd: "12345", 
     roles: [ 
     { role: "read", db: "DatabaseA" }, 
     { role: "read", db: "DatabaseB" } 
     ] 
    } 
) 

userb केवल पढ़ने के लिए अनुमति दी जाएगी DatabaseA और DatabaseB बाकी UserB के सभी डेटाबेस पहुँच read-write

अब हो जाएगा userb नीचे कमांड

के साथ लॉगिन कर सकते हैं
mongo --port 27017 -u userb -p 12345 --authenticationDatabase perm 
+0

यह मेरे लिए काम किया। धन्यवाद। –

+1

उपयोगकर्ताb डाटाबेस ए और डाटाबेसबी तक पहुंच-पहुंच है, लेकिन अन्य डेटाबेस के बारे में क्या है? मेरे प्रश्न में मैंने लिखा है कि मुझे उपयोगकर्ता डेटाबेस को पढ़ने और लिखने के अन्य डेटाबेस तक पहुंचने में सक्षम होना चाहिए। दिखाए गए कमांड द्वारा बनाए गए यूजरबी का उपयोग करना यह काम नहीं करता है क्योंकि यूजरबी के पास किसी अन्य डेटाबेस तक पहुंच नहीं है। – Robert

2

यह संभव नहीं है।

आप कई भूमिकाएं गठजोड़ कर सकते हैं और उन्हें विभिन्न डेटाबेस से विरासत है, लेकिन:

ऐसी भूमिका दी गई, जब कोई उपयोगकर्ता भूमिका की सभी विशेषाधिकार प्राप्त करता है। उपयोगकर्ता के पास कई भूमिकाएं हो सकती हैं, इस मामले में उपयोगकर्ता संबंधित भूमिकाओं के सभी विशेषाधिकारों के संघ प्राप्त करता है।

-

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

आप mongodb authorization doc में इन पैराग्राफ पा सकते हैं।

सभी भावी डेटाबेस पर पढ़ने के लिए लिखने के लिए, आपको उपयोगकर्ता को readWriteAnyDatabase भूमिका सेट करने की आवश्यकता है। इसका मतलब है, आप ए और बी डेटाबेस के लिए read भूमिका में डाउनग्रेड नहीं कर सकते हैं।

मुझे डर है कि आपको नए डीबीएस के लिए मैन्युअल रूप से भूमिकाएं सेट करने की आवश्यकता है।

-1

आप का उपयोग करना चाहिए

security: 
    authorization: enabled 

बजाय auth = true, बाकी रोहित जवाब के लिए के रूप में काम किया है।

यह भी देखें: https://stackoverflow.com/a/33325891/1814774

संबंधित मुद्दे