डेटाबेस के प्रबंधन के सुरक्षा पहलुओं में से एक यह समझना है कि डेटाबेस तक किसने, कब और क्या किया। हालांकि हमने पहले ही MongoDB सेवा सुरक्षित कर ली है, फिर भी हम जानना चाहते हैं कि कौन क्या कर रहा है, और पता करें कि कहीं कुछ अजीब तो नहीं है। डेटा उल्लंघन की जांच में, एक ऑडिट लॉग हमें ऐतिहासिक गतिविधि का विश्लेषण करने, यह समझने की अनुमति देता है कि हमलावर किस एंडपॉइंट से आया था, और डेटाबेस के अंदर होने के बाद उन्होंने कौन से ऑपरेशन किए।
इस ब्लॉग में, हम MongoDB और कार्यान्वयन के लिए ऑडिट लॉगिंग की समीक्षा करेंगे।
MongoDB में ऑडिट लॉगिंग सक्षम करना
MongoDB में ऑडिट लॉगिंग को सक्षम करने के लिए, हमें mongod.conf कॉन्फ़िगरेशन फ़ाइल, सेक्शन ऑडिटलॉग पर जाना होगा:
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
लॉग गंतव्य तीन प्रकार के होते हैं, जो हैं:फ़ाइल, syslog, और कंसोल। आदर्श रूप से, हम ऑडिट लॉग को JSON या BSON समर्थित प्रारूप में एक फ़ाइल में भेज सकते हैं। हम नीचे दिखाए गए अनुसार MongoDB सेवा के स्टार्टअप के दौरान ऑडिट लॉग को भी सक्षम कर सकते हैं:
mongod --dbpath /var/lib/mongodb --auditDestination file --auditFormat BSON --auditPath /var/lib/mongodb/audit_mongodb.bson
MongoDB में ऑडिट फ़िल्टर
अभी भी ऑडिट लॉग अनुभाग में, फ़िल्टर नामक एक पैरामीटर है। हम उस क्रिया पैटर्न को फ़िल्टर कर सकते हैं जिसे हम लॉग करना चाहते हैं। उदाहरण के लिए, यदि हम किसी विशिष्ट डेटाबेस में प्रमाणीकरण लॉग करना चाहते हैं, तो हम नीचे दिए गए कमांड का उपयोग कर सकते हैं:
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
filter: '{ atype: "authenticate", "param.db": "user_profile" }'
यह user_profile डेटाबेस के प्रत्येक प्रमाणीकरण को ट्रैक करेगा। एक अन्य उदाहरण:हम कार्यों को ट्रैक करना चाहते हैं; उपयोगकर्ता_प्रोफाइल डेटाबेस में ड्रॉप इंडेक्स, संग्रह का नाम बदलें, और संग्रह ड्रॉप करें। आदेश होगा :
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
filter: { atype: { $in: [ "dropIndex", "renameCollection", "dropCollection" ] }, "param.ns": /^user_profile\\./ } }
हम विशिष्ट भूमिकाओं के लिए ऑडिट प्रक्रिया की निगरानी भी कर सकते हैं, हमें फ़िल्टर में भूमिकाओं और डेटाबेस को परिभाषित करने की आवश्यकता होगी:
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
filter: { roles: { role: "readWrite", db: "user_profile" } }
यह उस उपयोगकर्ता से संबंधित प्रत्येक क्रिया को लॉग करेगा जिसकी user_profile डेटाबेस में रीडराइट भूमिकाएँ हैं।
लेखन और पढ़ने के संचालन के ऑडिट लॉगिंग के लिए, हमें पहले MongoDB में ऑडिट प्राधिकरण सफलता को सक्षम करने की आवश्यकता है। हम कमांड के नीचे चला सकते हैं:
db.adminCommand( { setParameter: 1, auditAuthorizationSuccess: true } )
या दूसरा विकल्प mongod.conf में निम्नलिखित को नीचे दिए अनुसार बदलना है:
auditLog:
destination: file
format: BSON
path: /var/lib/mongodb/audit_mongodb.bson
filter: { roles: { role: "readWrite", db: "user_profile" } }
setParameter: { auditAuthorizationSuccess: true }
MongoDB के लिए Percona सर्वर मुफ्त में ऑडिट लॉगिंग सुविधाएँ देता है, जबकि MongoDB में यह केवल एंटरप्राइज़ संस्करण में उपलब्ध है। कृपया ध्यान दें कि पैरामीटर को सक्षम करने से आपके MongoDB के डेटाबेस प्रदर्शन पर प्रभाव पड़ेगा, विशेष रूप से उत्पादन वातावरण में।
आगे क्या है?
हम MongoDB ऑडिट लॉग को लॉगिंग मैनेजमेंट सिस्टम को भेज सकते हैं, उदाहरण के लिए:ELK (इलास्टिक्सर्च, लॉगस्टैश, और किबाना) स्टैक या हम विश्लेषण उद्देश्यों के लिए प्रदाता से लॉग मैनेजमेंट सिस्टम का उपयोग कर सकते हैं।
जेएसओएन या बीएसओएन प्रारूप में लॉग पढ़ने के लिए लिनक्स पर्यावरण में जेक्यू टूल्स उपयोगिता का उपयोग करने का सबसे आसान तरीका है।