MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

ClusterControl के साथ अपने ओपन सोर्स डेटाबेस को कैसे सुरक्षित करें

सुरक्षा डेटाबेस चलाने के सबसे महत्वपूर्ण पहलुओं में से एक है। चाहे आप डेवलपर हों या DBA, यदि आप डेटाबेस का प्रबंधन कर रहे हैं, तो यह आपकी ज़िम्मेदारी है कि आप अपने डेटा की सुरक्षा करें और इसे किसी भी प्रकार की अनधिकृत पहुँच से बचाएं। दुर्भाग्यपूर्ण तथ्य यह है कि कई संगठन अपने डेटा की सुरक्षा नहीं करते हैं, जैसा कि हमने सितंबर 2017 में MongoDB रैंसमवेयर हमलों की नई लहर से देखा है। हमने पहले MongoDB डेटाबेस को सुरक्षित करने के तरीके पर एक ब्लॉग प्रकाशित किया था।

इस ब्लॉग पोस्ट में, हम देखेंगे कि ClusterControl का उपयोग करके अपने डेटाबेस को कैसे सुरक्षित किया जाए। यहाँ वर्णित सभी सुविधाएँ ClusterControl के संस्करण 1.5.1 (23 दिसंबर, 2017 को जारी) में उपलब्ध हैं। कृपया ध्यान दें कि कुछ सुविधाएँ केवल कुछ निश्चित डेटाबेस प्रकारों के लिए उपलब्ध हैं।

बैकअप एन्क्रिप्शन

ClusterControl 1.5.1 ने बैकअप एन्क्रिप्शन नामक एक नई सुविधा पेश की। सभी एन्क्रिप्टेड बैकअप इसके आगे एक लॉक आइकन के साथ चिह्नित हैं:

आप इस सुविधा का उपयोग ClusterControl द्वारा समर्थित सभी बैकअप विधियों (mysqldump, xtrabackup, mongodump, pg_dump) पर कर सकते हैं। एन्क्रिप्शन सक्षम करने के लिए, शेड्यूलिंग या बैकअप बनाते समय बस "एन्क्रिप्शन सक्षम करें" स्विच पर टॉगल करें। ClusterControl स्वचालित रूप से बैकअप एन्क्रिप्ट करने के लिए एक कुंजी उत्पन्न करता है। यह AES-256 (CBC) एन्क्रिप्शन एल्गोरिथम का उपयोग करता है और लक्ष्य सर्वर पर ऑन-द-फ्लाई एन्क्रिप्शन करता है। निम्न कमांड एक उदाहरण दिखाता है कि कैसे ClusterControl एक mysqldump बैकअप करता है:

$ mysqldump --defaults-file=/etc/my.cnf --flush-privileges --hex-blob --opt --no-create-info --no-data --triggers --routines --events --single-transaction --skip-comments --skip-lock-tables --skip-add-locks --databases db1 | gzip -6 -c | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-094508-e0bc6ad658e88d93.tmp | socat - TCP4:192.168.55.170:9999'

यदि आप किसी एन्क्रिप्टेड बैकअप को पहले उचित कुंजी से डिक्रिप्ट किए बिना उसे डीकंप्रेस करने का प्रयास करते हैं तो आपको निम्न त्रुटि दिखाई देगी:

$ gunzip mysqldump_2018-01-03_175727_data.sql.gz
gzip: mysqldump_2018-01-03_175727_data.sql.gz: not in gzip format

कुंजी को ClusterControl डेटाबेस के अंदर संग्रहीत किया जाता है, और किसी विशेष बैकअप सेट के लिए cmon_backup.metadata फ़ाइल से पुनर्प्राप्त किया जा सकता है। पुनर्स्थापना करते समय इसका उपयोग ClusterControl द्वारा किया जाएगा। बैकअप को एन्क्रिप्ट करने की अत्यधिक अनुशंसा की जाती है, खासकर जब आप अपने बैकअप को ऑफ़साइट सुरक्षित करना चाहते हैं जैसे उन्हें क्लाउड में संग्रहीत करना।

MySQL/PostgreSQL क्लाइंट-सर्वर एन्क्रिप्शन

परिनियोजन के दौरान अनुशंसित सुरक्षा चरणों का पालन करने के अलावा, आप क्लाइंट-सर्वर एसएसएल एन्क्रिप्शन का उपयोग करके अपनी डेटाबेस सेवा की विश्वसनीयता बढ़ा सकते हैं। ClusterControl का उपयोग करके, आप इस ऑपरेशन को सरल बिंदु के साथ कर सकते हैं और क्लिक करें:

फिर आप /var/lib/cmon/ca के अंतर्गत सीधे ClusterControl होस्ट से जेनरेट की गई कुंजियों और प्रमाणपत्रों को पुनः प्राप्त कर सकते हैं डेटाबेस क्लाइंट के साथ सुरक्षित कनेक्शन स्थापित करने के लिए पथ। जैसा कि आगे बताया गया है, सभी कुंजियों और प्रमाणपत्रों को सीधे कुंजी प्रबंधन के अंतर्गत प्रबंधित किया जा सकता है।

डेटाबेस प्रतिकृति एन्क्रिप्शन

गैलेरा क्लस्टर के भीतर प्रतिकृति यातायात को केवल एक क्लिक के साथ सक्षम किया जा सकता है। ClusterControl एक 2048-बिट डिफ़ॉल्ट कुंजी और ClusterControl नोड पर उत्पन्न प्रमाणपत्र का उपयोग करता है, जिसे सभी गैलेरा नोड्स में स्थानांतरित किया जाता है:

क्लस्टर पुनरारंभ आवश्यक है। ClusterControl एक समय में एक नोड लेते हुए एक रोलिंग पुनरारंभ कार्रवाई करेगा। एक बार एन्क्रिप्शन सक्षम हो जाने पर आपको डेटाबेस सर्वर के बगल में एक हरा लॉक आइकन दिखाई देगा (गैलेरा गैलेरा प्रतिकृति एन्क्रिप्शन को इंगित करता है, जबकि एसएसएल क्लाइंट-सर्वर एन्क्रिप्शन को इंगित करता है) अवलोकन पृष्ठ के होस्ट ग्रिड में:

जैसा कि आगे बताया गया है, सभी कुंजियों और प्रमाणपत्रों को सीधे कुंजी प्रबंधन के अंतर्गत प्रबंधित किया जा सकता है।

कुंजी प्रबंधन

सभी जेनरेट की गई कुंजियों और प्रमाणपत्रों को सीधे ClusterControl UI से प्रबंधित किया जा सकता है। कुंजी प्रबंधन आपको एसएसएल प्रमाणपत्रों और कुंजियों को प्रबंधित करने की अनुमति देता है जिन्हें आपके क्लस्टर पर प्रावधान किया जा सकता है:

यदि प्रमाणपत्र की समय सीमा समाप्त हो गई है, तो आप उचित कुंजी और प्रमाणपत्र प्राधिकरण (CA) के साथ एक नया प्रमाणपत्र बनाने के लिए UI का उपयोग कर सकते हैं, या मौजूदा कुंजी और प्रमाणपत्र को ClusterControl होस्ट में आयात कर सकते हैं।

सुरक्षा सलाहकार

सलाहकार मिनी प्रोग्राम हैं जो ClusterControl में चलते हैं। वे विशिष्ट कार्य करते हैं और प्रदर्शन, सुरक्षा, लॉग प्रबंधन, कॉन्फ़िगरेशन, भंडारण स्थान और अन्य जैसे क्षेत्रों में मुद्दों को हल करने के बारे में सलाह देते हैं। प्रत्येक सलाहकार को क्रॉन जॉब की तरह शेड्यूल किया जा सकता है, और क्लस्टरकंट्रोल यूआई के भीतर एक स्टैंडअलोन निष्पादन योग्य के रूप में चलाया जा सकता है। इसे ClusterControl 's9s' कमांड लाइन क्लाइंट के द्वारा भी चलाया जा सकता है।

ClusterControl MySQL-आधारित सिस्टम के लिए दो सुरक्षा सलाहकारों को सक्षम बनाता है:

  • किसी भी होस्ट से एक्सेस ('%') - mysql सिस्टम टेबल से वाइल्डकार्ड होस्ट का उपयोग करने वाले सभी उपयोगकर्ताओं की पहचान करता है, और आपको इस पर अधिक नियंत्रण देता है कि कौन से होस्ट सर्वर से कनेक्ट करने में सक्षम हैं।
  • पासवर्ड के बिना खातों की संख्या की जाँच करें - उन सभी उपयोगकर्ताओं की पहचान करता है जिनके पास mysql सिस्टम तालिका में पासवर्ड नहीं है।

MongoDB के लिए, हमारे पास निम्नलिखित सलाहकार हैं:

  • MongoDB प्रमाणीकरण सक्षम - जाँच करें कि MongoDB इंस्टेंस प्रमाणीकरण मोड सक्षम होने के साथ चल रहा है या नहीं।
  • प्राधिकरण जांच - जांचें कि क्या MongoDB उपयोगकर्ता अभिगम नियंत्रण के लिए अत्यधिक अनुमेय भूमिका के साथ अधिकृत हैं।

ClusterControl सुरक्षा जांच कैसे करता है, इस बारे में अधिक जानकारी के लिए, आप प्रबंधित करें -> डेवलपर स्टूडियो के अंतर्गत सलाहकार JavaScript जैसे स्रोत कोड को देख सकते हैं। . आप सलाहकार पृष्ठ से निष्पादन परिणाम देख सकते हैं:

एकाधिक नेटवर्क इंटरफेस

डेटाबेस होस्ट पर कई NIC होने से आप डेटाबेस ट्रैफ़िक को प्रबंधन ट्रैफ़िक से अलग कर सकते हैं। एक नेटवर्क का उपयोग डेटाबेस नोड्स द्वारा एक दूसरे से संवाद करने के लिए किया जाता है, और यह नेटवर्क किसी भी सार्वजनिक नेटवर्क के संपर्क में नहीं आता है। अन्य नेटवर्क का उपयोग प्रबंधन उद्देश्यों के लिए ClusterControl द्वारा किया जाता है। ClusterControl ऐसे बहु-नेटवर्क सेटअप को परिनियोजित करने में सक्षम है। निम्नलिखित आर्किटेक्चर आरेख पर विचार करें:

उपरोक्त डेटाबेस क्लस्टर को ClusterControl में आयात करने के लिए, डेटाबेस होस्ट का प्राथमिक IP पता निर्दिष्ट करना होगा। फिर, प्रबंधन नेटवर्क के साथ-साथ डेटा नेटवर्क को भी चुनना संभव है:

ClusterControl इंटरनेट एक्सेस के बिना भी ऐसे वातावरण में काम कर सकता है, जिसमें डेटाबेस को सार्वजनिक नेटवर्क से पूरी तरह से अलग किया जाता है। अधिकांश सुविधाएँ ठीक काम करेंगी। यदि ClusterControl होस्ट को इंटरनेट के साथ कॉन्फ़िगर किया गया है, तो यह इंटरनेट-रहित डेटाबेस सर्वर के लिए डेटाबेस विक्रेता के रिपॉजिटरी को क्लोन करने में भी सक्षम है। बस सेटिंग (शीर्ष मेनू) -> रिपॉजिटरी -> नया रिपोजिटरी बनाएं पर जाएं और लक्ष्य डेटाबेस सर्वर वातावरण में फिट होने के लिए विकल्प सेट करें:

इंटरनेट कनेक्शन के आधार पर मिररिंग में लगभग 10 से 20 मिनट लग सकते हैं, आपको बाद में सूची में नया आइटम दिखाई देगा। डेटाबेस होस्ट के पास कोई इंटरनेट कनेक्शन होने की आवश्यकता के बिना, एक नया क्लस्टर स्केलिंग या परिनियोजन करते समय आप इसके बजाय इस रिपॉजिटरी को चुन सकते हैं (ध्यान दें कि ऑपरेटिंग सिस्टम का ऑफ़लाइन रिपॉजिटरी भी जगह में होना चाहिए)।

MySQL उपयोगकर्ता प्रबंधन

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

ClusterControl डेटाबेस स्कीमा और विशेषाधिकारों को प्रबंधित करने के लिए एक इंटरैक्टिव यूजर इंटरफेस प्रदान करता है। यह क्लस्टर में सभी MySQL सर्वर पर खातों को एकीकृत करता है और अनुदान प्रक्रिया को सरल करता है। आप डेटाबेस उपयोगकर्ताओं की आसानी से कल्पना कर सकते हैं, ताकि आप गलतियाँ करने से बच सकें।

जैसा कि आप ऊपर दिए गए स्क्रीनशॉट में देख सकते हैं, ClusterControl ने अनावश्यक विशेषाधिकारों को हटा दिया है यदि आप केवल एक उपयोगकर्ता को डेटाबेस (shopdb) को देना चाहते हैं। "एसएसएल की आवश्यकता है?" क्लाइंट/सर्वर एसएसएल एन्क्रिप्शन सक्षम होने पर ही सक्षम होता है, जबकि एक विशिष्ट डेटाबेस परिभाषित होने पर प्रशासन विशेषाधिकार चेकबॉक्स पूरी तरह अक्षम होते हैं। आप विज़ार्ड के निचले भाग में जेनरेट किए गए GRANT स्टेटमेंट का निरीक्षण भी कर सकते हैं, यह देखने के लिए कि इस उपयोगकर्ता को बनाने के लिए ClusterControl निष्पादित करेगा। यह सहायक दिखने में बहुत आसान है, लेकिन उपयोगकर्ता बनाना और विशेषाधिकार देना त्रुटि-प्रवण हो सकता है।

ClusterControl क्लस्टर में सभी डेटाबेस नोड्स के लिए निष्क्रिय उपयोगकर्ताओं की एक सूची भी प्रदान करता है, जो उन खातों को दिखाता है जिनका उपयोग पिछले सर्वर के पुनरारंभ होने के बाद से नहीं किया गया है:

यह व्यवस्थापक को उन अनावश्यक खातों के लिए सचेत करता है जो मौजूद हैं, और जो संभावित रूप से सर्वर को नुकसान पहुंचा सकते हैं। अगला कदम यह सत्यापित करना है कि क्या खाते अब सक्रिय नहीं हैं, और आप उन्हें हटाने के लिए बस "ड्रॉप चयनित उपयोगकर्ता" विकल्प का उपयोग कर सकते हैं। सुनिश्चित करें कि आपके पास पर्याप्त डेटाबेस गतिविधि है यह सुनिश्चित करने के लिए कि ClusterControl द्वारा बनाई गई सूची सटीक है। सर्वर का अपटाइम जितना लंबा होगा, उतना ही अच्छा होगा।

हमेशा अप-टू-डेट रखें

उत्पादन के उपयोग के लिए, आपके लिए विक्रेता के भंडार से डेटाबेस से संबंधित पैकेजों को स्थापित करने की अत्यधिक अनुशंसा की जाती है। डिफ़ॉल्ट ऑपरेटिंग सिस्टम रिपॉजिटरी पर भरोसा न करें, जहां पैकेज आमतौर पर पुराने होते हैं। यदि आप गैलेरा क्लस्टर, या यहां तक ​​कि MySQL प्रतिकृति जैसे क्लस्टर वातावरण में चल रहे हैं, तो आपके पास हमेशा न्यूनतम डाउनटाइम के साथ सिस्टम को पैच करने का विकल्प होता है।

ClusterControl एक क्लिक के साथ MySQL/MariaDB के लिए स्वचालित लघु संस्करण रोलिंग अपग्रेड का समर्थन करता है। बस प्रबंधित करें -> अपग्रेड -> अपग्रेड करें . पर जाएं और अपने चल रहे क्लस्टर के लिए उपयुक्त प्रमुख संस्करण चुनें। फिर ClusterControl एक बार में एक नोड पर अपग्रेड करेगा। नोड बंद कर दिया जाएगा, फिर सॉफ्टवेयर अपडेट किया जाएगा, और फिर नोड फिर से शुरू हो जाएगा। यदि कोई नोड अपग्रेड करने में विफल रहता है, तो अपग्रेड प्रक्रिया निरस्त कर दी जाती है और व्यवस्थापक को सूचित किया जाता है। अपग्रेड केवल तभी किया जाना चाहिए जब क्लस्टर पर जितना संभव हो उतना कम ट्रैफ़िक हो।

प्रमुख संस्करण उन्नयन (उदाहरण के लिए, MySQL 5.6 से MySQL 5.7 तक) जानबूझकर स्वचालित नहीं हैं। प्रमुख उन्नयन के लिए आमतौर पर मौजूदा पैकेजों की स्थापना रद्द करने की आवश्यकता होती है, जो स्वचालित करने के लिए एक जोखिम भरा कार्य है। इस प्रकार के उन्नयन के लिए सावधानीपूर्वक योजना और परीक्षण आवश्यक है।

डेटाबेस सुरक्षा आपके डेटाबेस को उत्पादन में चलाने का एक महत्वपूर्ण पहलू है। उन सभी घटनाओं से जिनके बारे में हम अक्सर समाचारों में पढ़ते हैं (और शायद कई अन्य हैं जिन्हें प्रचारित नहीं किया जाता है), यह स्पष्ट है कि वहाँ समूह बुरे इरादों के साथ व्यस्त हैं। इसलिए, सुनिश्चित करें कि आपके डेटाबेस अच्छी तरह से सुरक्षित हैं।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो संग्रह को JSON प्रारूप में डंप करें

  2. mongoimport का उपयोग करके mongodb में सरणी के रूप में csv डेटा आयात करें

  3. mongodb विफल:डीबी सर्वर से कनेक्ट करने में त्रुटि:कोई पहुंच योग्य सर्वर नहीं

  4. मैं MongoDB में समय-समय पर कैसे स्टोर कर सकता हूं? एक स्ट्रिंग के रूप में? मनमाना वर्ष/माह/दिन दें?

  5. MongoDB डेटाबेस परिनियोजन स्वचालन