MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

MySQL बनाम MariaDB बनाम Percona सर्वर:सुरक्षा सुविधाओं की तुलना

डेटा की सुरक्षा किसी भी संगठन के लिए महत्वपूर्ण है। यह एक महत्वपूर्ण पहलू है जो डेटाबेस वातावरण के डिजाइन को भारी रूप से प्रभावित कर सकता है। MySQL फ्लेवर का उपयोग करने का निर्णय लेते समय, आपको विभिन्न सर्वर विक्रेताओं से उपलब्ध सुरक्षा सुविधाओं को ध्यान में रखना होगा। इस ब्लॉग पोस्ट में, हम Oracle, Percona Server और MariaDB से MySQL कम्युनिटी संस्करण के नवीनतम संस्करणों की एक संक्षिप्त तुलना के साथ आएंगे:

mysqld  Ver 5.7.20-19 for Linux on x86_64 (Percona Server (GPL), Release 19, Revision 3c5d3e5d53c)
mysqld  Ver 5.7.21 for Linux on x86_64 (MySQL Community Server (GPL))
mysqld  Ver 10.2.12-MariaDB for Linux on x86_64 (MariaDB Server)

हम ऑपरेटिंग सिस्टम के रूप में Centos 7 का उपयोग करने जा रहे हैं - कृपया ध्यान रखें कि जो परिणाम हम यहां प्रस्तुत करते हैं, वे डेबियन या उबंटू जैसे अन्य वितरणों पर थोड़े भिन्न हो सकते हैं। हम अंतरों पर भी ध्यान केंद्रित करना चाहते हैं और समानताओं को कवर नहीं करेंगे - Percona Server और MariaDB MySQL के फ्लेवर हैं, इसलिए कुछ सुरक्षा सुविधाएँ (जैसे, MySQL फ़ाइलों के एक्सेस विशेषाधिकार कैसे दिखते हैं) उनके बीच साझा किए जाते हैं।

प्रारंभिक सुरक्षा

उपयोगकर्ता

पेरकोना सर्वर और माईएसक्यूएल कम्युनिटी सर्वर दोनों रूट उपयोगकर्ता के लिए बेतरतीब ढंग से उत्पन्न अस्थायी पासवर्ड के साथ आते हैं। इसे खोजने के लिए आपको MySQL के त्रुटि लॉग की सामग्री की जांच करनी होगी:

2018-01-19T13:47:45.532148Z 1 [Note] A temporary password is generated for [email protected]: palwJu7uSL,g

एक बार जब आप लॉग इन करते हैं, तो आप पर एक पासवर्ड परिवर्तन के लिए बाध्य किया जाता है:

[[email protected] ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.21

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select * from mysql.user;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

पासवर्ड पर्याप्त मजबूत होना चाहिए, यह मान्य_पासवर्ड प्लगइन द्वारा लागू किया जाता है:

mysql> alter user [email protected] identified by 'password123.';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> alter user [email protected] identified by 'password123.A';
Query OK, 0 rows affected (0.00 sec)

मारियाडीबी एक यादृच्छिक रूट पासवर्ड उत्पन्न नहीं करता है और यह स्थानीयहोस्ट से (और केवल से) रूट खाते में पासवर्ड रहित पहुंच प्रदान करता है।

[[email protected] ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.2.12-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| [email protected] |
+----------------+
1 row in set (0.00 sec)

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

एक अन्य पहलू जिसे हम देखना चाहते हैं, वह है अनाम, पासवर्ड रहित पहुँच। अनाम उपयोगकर्ता किसी को भी अंदर जाने की अनुमति देते हैं, इसके लिए पूर्वनिर्धारित उपयोगकर्ता होना आवश्यक नहीं है। अगर ऐसी एक्सेस पासवर्ड रहित है, तो इसका मतलब है कि कोई भी MySQL से जुड़ सकता है। आमतौर पर ऐसे खाते में केवल USAGE विशेषाधिकार होता है लेकिन फिर भी एक स्थिति ('\s') को प्रिंट करना संभव होता है जिसमें MySQL संस्करण, वर्ण सेट आदि जैसी जानकारी होती है। इसके अतिरिक्त, यदि 'परीक्षण' स्कीमा उपलब्ध है, तो ऐसे उपयोगकर्ता के पास क्षमता है उस स्कीमा को लिखें।

MySQL कम्युनिटी सर्वर और Percona सर्वर दोनों में MySQL में परिभाषित कोई भी अनाम उपयोगकर्ता नहीं है:

mysql> select user, host, authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| user          | host      | authentication_string                     |
+---------------+-----------+-------------------------------------------+
| root          | localhost | *EB965412B594F67C8EB611810EF8D406F2CF42BD |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

दूसरी ओर, मारियाडीबी गुमनाम, पासवर्ड रहित पहुंच के लिए खुला है।

MariaDB [(none)]> select user,host,password from mysql.user;
+------+-----------------------+----------+
| user | host                  | password |
+------+-----------------------+----------+
| root | localhost             |          |
| root | localhost.localdomain |          |
| root | 127.0.0.1             |          |
| root | ::1                   |          |
|      | localhost             |          |
|      | localhost.localdomain |          |
+------+-----------------------+----------+
6 rows in set (0.00 sec)

इसके अलावा, 'परीक्षण' स्कीमा उपलब्ध है - जो अनाम उपयोगकर्ताओं को डेटाबेस को लिखने की अनुमति देता है।

[[email protected] ~]# mysql -umyanonymoususer
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 10.2.12-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use test;
Database changed
MariaDB [test]> CREATE TABLE mytab (a int);
Query OK, 0 rows affected (0.01 sec)

MariaDB [test]> INSERT INTO mytab VALUES (1), (2);
Query OK, 2 rows affected (0.02 sec)
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [test]> SELECT * FROM mytab;
+------+
| a    |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

यह एक गंभीर खतरा है, और इसे हल करने की जरूरत है। अन्यथा, सर्वर को लिखने के साथ अधिभारित करने का प्रयास करने के लिए इसका आसानी से फायदा उठाया जा सकता है।

ट्रांजिट सुरक्षा में डेटा

MySQL कम्युनिटी सर्वर और इसके दोनों कांटे ट्रांजिट में डेटा को एन्क्रिप्ट करने के लिए एसएसएल के उपयोग का समर्थन करते हैं। यह वाइड एरिया नेटवर्क के लिए अत्यंत महत्वपूर्ण है, लेकिन इसे स्थानीय नेटवर्क में भी अनदेखा नहीं किया जाना चाहिए। एसएसएल क्लाइंट और सर्वर-साइड दोनों का उपयोग किया जा सकता है। सर्वर-साइड कॉन्फ़िगरेशन के संबंध में (उदाहरण के लिए, मास्टर से दास तक ट्रैफ़िक को एन्क्रिप्ट करने के लिए), यह पूरे बोर्ड में समान दिखता है। हालाँकि, जब क्लाइंट-साइड एसएसएल एन्क्रिप्शन की बात आती है, तो यह एक अंतर है, जिसे MySQL 5.7 में पेश किया गया है। 5.7 से पहले, किसी को एसएसएल कुंजी और सीए उत्पन्न करना होता था और उन्हें सर्वर और क्लाइंट दोनों के कॉन्फ़िगरेशन में परिभाषित करना होता था। मारियाडीबी का 10.2 एसएसएल सेटअप इस तरह दिखता है। MySQL कम्युनिटी सर्वर 5.7 और Percona Server 5.7 (जो MySQL 5.7 पर आधारित है) दोनों में, पूर्व-जनरेट कीज़ की कोई आवश्यकता नहीं है। यह सब स्वचालित रूप से, पृष्ठभूमि में किया जाता है। आपको केवल सही '--ssl-mode' सेट करके अपने क्लाइंट पर SSL सक्षम करना है। MySQL के CLI क्लाइंट के लिए, इसकी आवश्यकता भी नहीं है क्योंकि यह डिफ़ॉल्ट रूप से SSL को सक्षम बनाता है:

[[email protected] ~]# mysql -p -h127.0.0.1
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using  EditLine wrapper

Connection id:        6
Current database:
Current user:        [email protected]
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        5.7.21 MySQL Community Server (GPL)
Protocol version:    10
Connection:        127.0.0.1 via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:        3306
Uptime:            2 days 21 hours 51 min 52 sec

Threads: 1  Questions: 15  Slow queries: 0  Opens: 106  Flush tables: 1  Open tables: 99  Queries per second avg: 0.000
--------------

दूसरी ओर मारियाडीबी को अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होगी क्योंकि एसएसएल डिफ़ॉल्ट रूप से अक्षम है:

[[email protected] ~]# mysql -h127.0.0.1
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 18
Server version: 10.2.12-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 10.2.12-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:        18
Current database:
Current user:        [email protected]
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server:            MariaDB
Server version:        10.2.12-MariaDB MariaDB Server
Protocol version:    10
Connection:        127.0.0.1 via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:        3306
Uptime:            2 days 22 hours 26 min 58 sec

Threads: 7  Questions: 45  Slow queries: 0  Opens: 18  Flush tables: 1  Open tables: 12  Queries per second avg: 0.000
--------------

आराम एन्क्रिप्शन पर डेटा

सबसे पहले, बैकअप - xtrabackup या MariaDB बैकअप (जो xtrabackup का एक कांटा है) जैसे स्वतंत्र रूप से उपलब्ध बैकअप टूल हैं। ये सभी तीन MySQL फ्लेवर के एन्क्रिप्टेड बैकअप बनाने की अनुमति देते हैं जिनकी हम इस ब्लॉग पोस्ट में चर्चा करते हैं।

तीनों फ्लेवर चल रहे डेटाबेस के एन्क्रिप्शन का समर्थन करते हैं, लेकिन डेटा के कौन से टुकड़े एन्क्रिप्ट किए गए हैं, इसमें अंतर हैं।

MySQL कम्युनिटी सर्वर केवल InnoDB टेबलस्पेस के एन्क्रिप्शन का समर्थन करता है। एन्क्रिप्शन के लिए उपयोग की जाने वाली कुंजियों को फाइलों में संग्रहीत किया जाता है (जो नियमों के अनुरूप नहीं है - कुंजियों को एक तिजोरी में संग्रहीत किया जाना चाहिए - कुछ ऐसा जो MySQL Enterprise का समर्थन करता है)। Percona सर्वर MySQL कम्युनिटी सर्वर पर आधारित है, इसलिए यह InnoDB टेबलस्पेस के एन्क्रिप्शन का भी समर्थन करता है। हाल ही में, Percona Server 5.7.20 में, सामान्य टेबलस्पेस के एन्क्रिप्शन के लिए समर्थन जोड़ा गया था (पिछले संस्करणों और MySQL समुदाय संस्करण में केवल व्यक्तिगत लोगों की तुलना में) जोड़ा गया था। बाइनरी लॉग के एन्क्रिप्शन के लिए समर्थन भी जोड़ा गया था। Percona सर्वर एक keyring_vault प्लगइन के साथ आता है, जिसका उपयोग Hashicorp Vault सर्वर में कुंजियों को स्टोर करने के लिए किया जा सकता है, जिससे Percona Server 5.7.20 बाकी एन्क्रिप्शन पर डेटा के संबंध में नियामक आवश्यकताओं के अनुरूप हो जाता है।

मारियाडीबी 10.2 में अधिक उन्नत डेटा-एट-रेस्ट एन्क्रिप्शन समर्थन है। टेबलस्पेस और बाइनरी/रिले लॉग एन्क्रिप्शन के अलावा, इसमें InnoDB रीडो लॉग को एन्क्रिप्ट करने के लिए समर्थन है। वर्तमान में, यह डेटा एन्क्रिप्शन के संबंध में अधिक संपूर्ण समाधान है।

ऑडिट लॉगिंग

सभी तीन MySQL फ्लेवर में ऑडिट लॉगिंग का समर्थन है। उनका दायरा काफी तुलनीय है:घटनाओं को कनेक्ट और डिस्कनेक्ट करें, क्वेरी निष्पादित करें, टेबल एक्सेस करें। लॉग में जानकारी होती है कि किस उपयोगकर्ता ने ऐसी घटना में भाग लिया, उपयोगकर्ता ने किस होस्ट से लॉग इन किया, यह कब हुआ, और इसी तरह की जानकारी। इस तरह की घटनाओं को syslog के माध्यम से भी लॉग किया जा सकता है और लॉग विश्लेषण और पार्सिंग को सक्षम करने के लिए बाहरी लॉग सर्वर पर संग्रहीत किया जा सकता है।

डेटा मास्किंग, SQL फ़ायरवॉल

चर्चा किए गए सभी MySQL फ्लेवर किसी न किसी प्रकार के टूल के साथ काम करते हैं जो डेटा मास्किंग को लागू करने की अनुमति देगा, और कुछ नियमों के आधार पर SQL ट्रैफ़िक को ब्लॉक करने में सक्षम होगा। डेटा मास्किंग डेटाबेस के बाहर कुछ डेटा को अस्पष्ट करने की एक विधि है, लेकिन क्लाइंट तक पहुंचने से पहले। एक उदाहरण क्रेडिट कार्ड डेटा होगा जो डेटाबेस में सादे पाठ में संग्रहीत होता है, लेकिन जब कोई डेवलपर ऐसे डेटा को क्वेरी करना चाहता है, तो उसे संख्याओं के बजाय 'xxxxxxxx...' दिखाई देगा। हम यहां जिन टूल्स की बात कर रहे हैं, वे हैं ProxySQL और MaxScale। MaxScale, MariaDB Corporation का एक उत्पाद है, और सदस्यता-आधारित है। ProxySQL डेटाबेस प्रॉक्सी का उपयोग करने के लिए स्वतंत्र है। दोनों प्रॉक्सी का उपयोग किसी भी MySQL फ्लेवर के साथ किया जा सकता है।

आज के लोगों के लिए बस इतना ही। आगे पढ़ने के लिए, अपने MySQL और MariaDB डेटाबेस को सुरक्षित करने के लिए इन 10 युक्तियों को देखें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी TX क्या है? न्यू मारियाडीबी माईएसक्यूएल फोर्क को कैसे प्रबंधित करें!

  2. मारियाडीबी में नामित समय क्षेत्र कैसे सेट करें?

  3. कैसे TO_CHAR () मारियाडीबी में काम करता है

  4. मारियाडीबी में एक तिथि से लघु माह का नाम कैसे प्राप्त करें

  5. मारियाडीबी यूनियन ऑपरेटर ने समझाया