एक सुरक्षित डेटाबेस वातावरण प्राप्त करना कठिन है, लेकिन डेटा उल्लंघनों, रैंसमवेयर और अन्य दुर्भावनापूर्ण गतिविधि से बचने के लिए अत्यंत महत्वपूर्ण है। व्यावसायिक दृष्टिकोण से डेटा की सुरक्षा सर्वोच्च प्राथमिकता है। निजी डेटासेंटर में चलते समय, आपका नेटवर्क आमतौर पर रक्षा की पहली परत होता है। लेकिन एक वितरित हाइब्रिड डेटाबेस क्लाउड वातावरण में, जहां डेटाबेस टोपोलॉजी के आंतरिक भागों के साथ-साथ अनुप्रयोगों को डेटासेंटर में वितरित किया जाता है, नेटवर्क एक बड़ी संलग्न सतह का प्रतिनिधित्व करता है। इन-ट्रांजिट डेटा ट्रैफ़िक का एन्क्रिप्शन नेटवर्क छिपकर बातें करने से बचाने के सामान्य उपायों में से एक है। इस ब्लॉग में हम देखेंगे कि हम हाइब्रिड क्लाउड mysql डेटाबेस ट्रैफ़िक को कैसे एन्क्रिप्ट कर सकते हैं।
हमें डेटाबेस ट्रैफ़िक को एन्क्रिप्ट करने की आवश्यकता क्यों है?
मुख्य कारण डेटाबेस इंस्टेंस के बीच कनेक्शन है और किसी भी क्लाइंट एप्लिकेशन को एन्क्रिप्ट किया जाना चाहिए, और केवल अधिकृत संचार सुनिश्चित करना चाहिए। यह सुरक्षा परत अवांछित संवेदनशील डेटा रिसाव को रोक सकती है, या किसी SQL इंजेक्शन हमले आदि की संभावना को बाहर कर सकती है। डेटा इन-ट्रांजिट का अर्थ डेटाबेस नोड्स के बीच प्रतिकृति ट्रैफ़िक, या लोड बैलेंसर्स/प्रॉक्सी और डेटाबेस इंस्टेंस के बीच ट्रैफ़िक भी हो सकता है।पी>
MySQL Nodes पर SSL सक्रिय करना
MySQL के नए संस्करण स्व-हस्ताक्षरित प्रमाणपत्र और SSL सक्षम के साथ आते हैं। दूसरी ओर, यदि आप सुरक्षा की एक और परत जोड़ना चाहते हैं, तो आप अपने स्वयं के प्रमाणपत्रों का उपयोग करना चाह सकते हैं, ClusterControl आपको SSL प्रमाणपत्र बदलने की अनुमति देता है। इस ब्लॉग में, हमने समझाया कि ClusterControl का उपयोग करके इसे कैसे किया जाए।
ग्राहकों पर SSL सक्रिय करना
MySQL प्रति-कनेक्शन के आधार पर एन्क्रिप्शन करता है, और किसी दिए गए उपयोगकर्ता के लिए एन्क्रिप्शन का उपयोग वैकल्पिक या अनिवार्य हो सकता है। SSL के माध्यम से mysql नोड्स से कनेक्ट करने के लिए, सुनिश्चित करें कि आपने उपयोगकर्ता के अनुदान को "REQUIRE SSL" सिंटैक्स के साथ सेट किया है, जैसा कि नीचे दिया गया है:
mysql> create user 'app_user'@'192.168.%.%' identified by '[email protected]' REQUIRE SSL;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'app_user'@'192.168.%.%';
Query OK, 0 rows affected (0.00 sec)
यह आपको अलग-अलग एप्लिकेशन की आवश्यकताओं के अनुसार एन्क्रिप्टेड या अनएन्क्रिप्टेड कनेक्शन चुनने में सक्षम बनाता है।
यह सुनिश्चित करने के लिए कि क्लाइंट को एन्क्रिप्टेड कनेक्शन का उपयोग करने की आवश्यकता है, हमें my.cnf फ़ाइल में "require_secure_transport" पैरामीटर को सक्षम करने की आवश्यकता है। डिफ़ॉल्ट रूप से यह पैरामीटर बंद है।
डीबी कनेक्शन सत्यापित करना
डिफ़ॉल्ट रूप से, mysql क्लाइंट एक एन्क्रिप्टेड कनेक्शन स्थापित करने का प्रयास करता है यदि सर्वर एन्क्रिप्टेड कनेक्शन का समर्थन करता है, उदाहरण के लिए --ssl-mode विकल्प के माध्यम से आगे नियंत्रण उपलब्ध है,
[[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1 -e "status;" | grep -i SSL
SSL: Cipher in use is ECDHE-RSA-AES256-GCM-SHA384
एसएसएल प्रोटोकॉल सार्वजनिक और निजी नेटवर्क पर प्राप्त डेटा को सुनिश्चित करने के लिए विभिन्न एन्क्रिप्शन एल्गोरिदम का उपयोग करता है। इसमें किसी भी डेटा परिवर्तन या हानि का पता लगाने के लिए तंत्र है।
[[email protected] vagrant]# mysql -u app_user -p -h 192.168.xx.xx -P3306 --ssl=1
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 12656
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> SHOW SESSION STATUS LIKE 'Ssl_cipher';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| Ssl_cipher | ECDHE-RSA-AES256-GCM-SHA384 |
+---------------+-----------------------------+
1 row in set (0.00 sec)
MySQL [(none)]> show status like 'Ssl_version';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Ssl_version | TLSv1.2 |
+---------------+---------+
1 row in set (0.00 sec)
निष्कर्ष
डेटाबेस कनेक्शन को एन्क्रिप्ट करना कोई बड़ी बात नहीं है और न ही होनी चाहिए, यह MySQL के कुछ नए संस्करणों में डिफ़ॉल्ट रूप से किया जाता है। जैसा कि डेटाबेस सुरक्षा एक तेजी से व्यवसाय और नियामक चिंता बन जाती है, आपके हाइब्रिड क्लाउड वातावरण को सुरक्षित करने के लिए केवल इन-ट्रांजिट डेटा एन्क्रिप्शन के बारे में सोचने के लिए बहुत कुछ है। यह ध्यान रखना महत्वपूर्ण है कि डेटाबेस को होस्ट करते समय सुरक्षा की अन्य परतें लागू होती हैं, जैसे नेटवर्क और ऑपरेटिंग सिस्टम सुरक्षा।