डेटाबेस में संग्रहीत कई प्रकार के डेटा के साथ, कभी-कभी हम गोपनीय डेटा से निपट सकते हैं, जिसमें क्रेडिट कार्ड डेटा, वित्तीय रिकॉर्ड, व्यक्तिगत जानकारी शामिल हो सकती है। वे PII (व्यक्तिगत पहचान योग्य जानकारी) डेटा विनियमन के अधीन हैं जैसे:PCI DSS, HIPAA, या GDPR जिन्हें हमें गोपनीयता, अखंडता और उपलब्धता की रक्षा और सुनिश्चित करने की आवश्यकता है।
डेटा एन्क्रिप्शन उत्पादन वातावरण में सुरक्षा कार्यान्वयन के लिए MongoDB आर्किटेक्चरिंग का हिस्सा है। डेटा एन्क्रिप्शन का उद्देश्य डेटा की सुरक्षा के लिए अधिक सुरक्षा उपाय जोड़ना है, विशेष रूप से अंदरूनी खतरों से। हम डेटाबेस की सेवा और बंदरगाहों को बंद कर देते हैं, एक एक्सेस कंट्रोल सूची बनाए रखते हैं जो डेटाबेस में कौन से संचालन तक पहुंच और प्रदर्शन कर सकता है, और नेटवर्क ट्रांसमिशन के दौरान या डेटा संग्रहीत होने पर स्नीफिंग से बचाने के लिए एन्क्रिप्शन को सक्षम करता है। इस ब्लॉग में, हम चर्चा करेंगे कि MongoDB में एन्क्रिप्शन का उपयोग कैसे करें।
ट्रांज़िट में डेटा एन्क्रिप्शन
ट्रांजिट में डेटा एन्क्रिप्शन सुनिश्चित करता है कि MongoDB डेटा क्लाइंट (यानी, एप्लिकेशन सर्वर) और डेटाबेस सर्वर के बीच और MongoDB रेप्लिकासेट या ShardedCluster आर्किटेक्चर में डेटाबेस सर्वर के बीच सुरक्षित है। MongoDB SSL/TLS प्रमाणपत्रों का उपयोग करता है, या तो स्व-हस्ताक्षरित प्रमाणपत्र या प्रमाणपत्र प्राधिकारी द्वारा जारी किए गए प्रमाणपत्रों के रूप में उत्पन्न होता है।
प्रमाण पत्र प्राधिकरण से प्रमाणपत्र का उपयोग करने का सबसे अच्छा तरीका है, क्योंकि यह MongoDB ड्राइवरों को प्रमाणपत्र प्राधिकरण के साथ होस्ट की जांच करने की अनुमति देगा, जिसका अर्थ है कि मैन-इन से बचने के लिए सर्वर पहचान का सत्यापन होगा -मध्य आक्रमण। आप अभी भी किसी विश्वसनीय नेटवर्क में स्व-हस्ताक्षरित प्रमाणपत्र का उपयोग कर सकते हैं।
MongoDB SSL/TLS एन्क्रिप्शन को कम से कम 128-बिट कुंजी के साथ TLS/SSL सिफर का उपयोग करना चाहिए। MongoDB संस्करण 4.2 और इसके बाद के संस्करण से शुरू होकर, net.tls नामक एक नया पैरामीटर है। यह net.ssl जैसी ही कार्यक्षमता प्रदान करता है। mongod.conf फ़ाइल में विन्यास जैसा कि नीचे दिखाया गया है:
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
यदि हम क्लाइंट प्रमाणपत्र सत्यापन जोड़ना चाहते हैं, तो हमें केवल निम्नलिखित के रूप में CAFile पैरामीटर जोड़ने की आवश्यकता है:
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caClientCert.pem
उपरोक्त कॉन्फ़िगरेशन के साथ, MongoDB SSL/TLS कनेक्शन के लिए क्लाइंट से मान्य प्रमाणपत्र की आवश्यकता होती है और क्लाइंट को SSL/TLS कनेक्शन निर्दिष्ट करना चाहिए और प्रमाणपत्र कुंजी फ़ाइलें प्रस्तुत करनी चाहिए।
उपरोक्त कॉन्फ़िगरेशन में, हम net.tls का उपयोग करते हैं जो MongoDB 4.2 पर मौजूद है। उपरोक्त संस्करण के लिए, हम नीचे दिखाए गए अनुसार net.ssl कॉन्फ़िगरेशन का उपयोग कर सकते हैं:
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
और क्लाइंट प्रमाणपत्र सत्यापन जोड़ना net.tls कॉन्फ़िगरेशन के समान है। बस पैरामीटर CAFile जोड़ें जैसा कि नीचे दिखाया गया है:
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caClientCert.pem
आराम पर डेटा एन्क्रिप्शन
आराम से डेटा एन्क्रिप्शन के बारे में बात करते हुए, MongoDB डेटा एन्क्रिप्शन के कई तरीके हैं जो हैं:
-
डेटाबेस स्टोरेज इंजन एन्क्रिप्शन
MongoDB WiredTiger स्टोरेज इंजन पर नेटिव एन्क्रिप्शन प्रदान करता है। डेटा रेस्ट एन्क्रिप्शन के लिए डेटा के लिए दो कुंजी सुरक्षा की आवश्यकता होती है, जो डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली मास्टर कुंजी और डेटाबेस कुंजियों को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली मास्टर कुंजी है। एन्क्रिप्शन AES256-CBC उन्नत एन्क्रिप्शन स्टैंडर्ड का उपयोग करता है। यह असममित कुंजियों का उपयोग करता है जो डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक ही कुंजी है। यह केवल एंटरप्राइज़ संस्करण में उपलब्ध है जो संस्करण 3.2 और इसके बाद के संस्करण से शुरू हो रहा है।
MongoDB के लिए Percona सर्वर में डेटा एन्क्रिप्शन बाकी है जो ओपन सोर्स सर्वर के हिस्से के रूप में आता है, जिसे संस्करण 3.6 से पेश किया गया है। वर्तमान रिलीज में कुंजी प्रबंधन इंटरऑपरेबिलिटी प्रोटोकॉल (केएमआईपी) या अमेज़ॅन केएमएस शामिल नहीं है। हम स्थानीय कीफाइल या तीसरे पक्ष के कुंजी प्रबंधन सर्वर जैसे हैशिकॉर्प वॉल्ट का उपयोग कर सकते हैं।
मोंगोडीबी के लिए पेरकोना सर्वर में एन्क्रिप्शन से संबंधित पैरामीटर एन्क्रिप्शन सिफरमोड है जिसे हम निम्नलिखित सिफर मोड में से किसी एक को चुनकर कॉन्फ़िगर कर सकते हैं:
-
AES256-CBC
-
AES256-GCM
यदि आपने उपरोक्त में से किसी एक को स्पष्ट रूप से लागू नहीं किया है, तो डिफ़ॉल्ट सिफर AES256-CBC है। हम MongoDB स्थापना के लिए नए Percona सर्वर पर रेस्ट एन्क्रिप्शन पर डेटा सक्षम कर सकते हैं, लेकिन यह मौजूदा MongoDB सेवाओं का समर्थन नहीं करता है।
-
डिस्क/स्टोरेज एन्क्रिप्शन
स्टोरेज एन्क्रिप्शन स्टोरेज मीडिया का एन्क्रिप्शन है। हम डिस्क के डेटा वॉल्यूम को एन्क्रिप्ट करने के लिए LUKS जैसे लिनक्स आधारित डिस्क एन्क्रिप्शन का उपयोग कर सकते हैं, या यदि हम क्लाउड वातावरण का उपयोग करते हैं, तो एन्क्रिप्शन विकल्प हो सकता है। उदाहरण के लिए, AWS में एन्क्रिप्टेड ब्लॉक स्टोरेज के साथ-साथ S3 स्टोरेज भी संभव है।
-
API आधारित एन्क्रिप्शन
एपीआई आधारित एन्क्रिप्शन तीसरे पक्ष के एन्क्रिप्शन सॉफ्टवेयर का उपयोग करता है या एप्लिकेशन डेटा को एन्क्रिप्ट करने के लिए इसे MongoDB डेटाबेस में संग्रहीत करने से पहले एक एल्गोरिदम प्रदान करता है। पूरी प्रक्रिया को एप्लिकेशन लेयर द्वारा नियंत्रित किया जाता है।