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

MySQL और MariaDB के लिए डेटाबेस सुरक्षा निगरानी

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

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

क्वेरी और कनेक्शन नीति-आधारित निगरानी

आपके डेटाबेस वातावरण की निगरानी के लिए निरंतर ऑडिटिंग एक अनिवार्य कार्य है। अपने डेटाबेस का ऑडिट करके, आप की गई कार्रवाइयों या एक्सेस की गई सामग्री के लिए जवाबदेही हासिल कर सकते हैं। इसके अलावा, ऑडिट में कुछ महत्वपूर्ण सिस्टम घटक शामिल हो सकते हैं, जैसे कि वित्तीय डेटा से जुड़े एसओएक्स, या ईयू जीडीपीआर विनियमन जैसे नियमों के सटीक सेट का समर्थन करने के लिए। आमतौर पर, यह डेटाबेस पर DB संचालन के बारे में जानकारी को बाहरी लॉग फ़ाइल में लॉग करके प्राप्त किया जाता है।

डिफ़ॉल्ट रूप से, MySQL या MariaDB में ऑडिटिंग अक्षम है। आप अतिरिक्त प्लगइन्स स्थापित करके या query_log पैरामीटर के साथ सभी प्रश्नों को कैप्चर करके इसे प्राप्त कर सकते हैं। सामान्य क्वेरी लॉग फ़ाइल MySQL के प्रदर्शन का एक सामान्य रिकॉर्ड है। क्लाइंट कनेक्ट या डिस्कनेक्ट होने पर सर्वर इस लॉग में कुछ जानकारी रिकॉर्ड करता है, और यह क्लाइंट से प्राप्त प्रत्येक SQL कथन को लॉग करता है। प्रदर्शन समस्याओं और कॉन्फ़िगरेशन विकल्पों की कमी के कारण, सामान्य_लॉग सुरक्षा ऑडिट उद्देश्यों के लिए एक अच्छा समाधान नहीं है।

यदि आप MySQL एंटरप्राइज का उपयोग करते हैं, तो आप MySQL एंटरप्राइज ऑडिट प्लगइन का उपयोग कर सकते हैं जो मालिकाना MySQL संस्करण का विस्तार है। MySQL एंटरप्राइज ऑडिट प्लगइन प्लगइन केवल MySQL एंटरप्राइज के साथ उपलब्ध है, जो कि Oracle की एक व्यावसायिक पेशकश है। Percona और MariaDB ने ऑडिट प्लगइन के अपने स्वयं के ओपन सोर्स संस्करण बनाए हैं। अंत में, MySQL के लिए McAfee प्लगइन का उपयोग MySQL के विभिन्न संस्करणों के साथ भी किया जा सकता है। इस लेख में, हम ओपन सोर्स प्लगइन्स पर ध्यान केंद्रित करेंगे, हालांकि ओरेकल का एंटरप्राइज वर्जन सबसे मजबूत और स्थिर लगता है।

MySQL ओपन सोर्स ऑडिट प्लगइन्स की विशेषताएं

जबकि ओपन सोर्स ऑडिट प्लगइन्स ओरेकल के एंटरप्राइज प्लगइन के समान काम करते हैं - वे डेटाबेस क्वेरी और कनेक्शन के साथ आउटपुट का उत्पादन करते हैं - कुछ प्रमुख आर्किटेक्चरल अंतर हैं।

मारियाडीबी ऑडिट प्लगइन - मारियाडीबी ऑडिट प्लगइन मारियाडीबी, माईएसक्यूएल (संस्करण 5.5.34 और 10.0.7 के अनुसार) और पेरकोना सर्वर के साथ काम करता है। मारियाडीबी ने डिफ़ॉल्ट रूप से संस्करण 10.0.10 और 5.5.37 से ऑडिट प्लगइन को शामिल करना शुरू किया, और इसे मारियाडीबी 5.5.20 से किसी भी संस्करण में स्थापित किया जा सकता है। यह एकमात्र प्लगइन है जो Oracle MySQL, Percona Server और MariaDB को सपोर्ट करता है। यह विंडोज और लिनक्स प्लेटफॉर्म पर उपलब्ध है। 1.2 से शुरू होने वाले संस्करण सबसे अधिक स्थिर होते हैं, और आपके उत्पादन परिवेश में इसके नीचे के संस्करणों का उपयोग करना जोखिम भरा हो सकता है।

McAfee MySQL ऑडिट प्लगइन - यह प्लगइन MySQL ऑडिट एपीआई का उपयोग नहीं करता है। इसे हाल ही में MySQL 5.7 को सपोर्ट करने के लिए अपडेट किया गया था। कुछ परीक्षणों से पता चलता है कि एपीआई आधारित प्लगइन्स बेहतर प्रदर्शन प्रदान कर सकते हैं लेकिन आपको इसे अपने पर्यावरण से जांचना होगा।

Percona ऑडिट लॉग प्लगइन - Percona एक ओपन सोर्स ऑडिटिंग समाधान प्रदान करता है जो Percona Server 5.5.37+ और 5.6.17+ के साथ इंस्टालेशन प्रक्रिया के हिस्से के रूप में स्थापित होता है। अन्य ओपन सोर्स प्लग इन की तुलना में, इस प्लगइन में अधिक पहुंच आउटपुट सुविधाएं हैं क्योंकि यह एक्सएमएल, जेएसओएन और सिसलॉग को आउटपुट करता है।

चूंकि इसमें Oracle के प्लगइन के साथ फीचर-संगत होने के लिए सर्वर के लिए कुछ आंतरिक हुक हैं, यह MySQL के अन्य संस्करणों के लिए एक स्टैंडअलोन प्लगइन के रूप में उपलब्ध नहीं है।

MariaDB ऑडिट एक्सटेंशन पर आधारित प्लगइन इंस्टॉलेशन

ओपन सोर्स MySQL प्लगइन्स की स्थापना मारियाडीबी, पेरकोना और मैक्एफ़ी संस्करणों के लिए काफी समान है।
पेरकोना और मारियाडीबी अपने प्लगइन्स को डिफ़ॉल्ट सर्वर बायनेरिज़ के हिस्से के रूप में जोड़ते हैं, इसलिए प्लगइन्स को अलग से डाउनलोड करने की कोई आवश्यकता नहीं है। Percona संस्करण केवल आधिकारिक तौर पर MySQL के अपने स्वयं के कांटे का समर्थन करता है, इसलिए विक्रेता की वेबसाइट से कोई सीधा डाउनलोड नहीं होता है (यदि आप MySQL के साथ इस प्लगइन का उपयोग करना चाहते हैं, तो आपको Percona सर्वर पैकेज से प्लगइन प्राप्त करना होगा)। यदि आप MySQL के अन्य कांटे के साथ मारियाडीबी प्लगइन का उपयोग करना चाहते हैं, तो आप इसे https://downloads.mariadb.com/Audit-Plugin/MariaDB-Audit-Plugin/ से पा सकते हैं। McAfee प्लगइन https://github.com/mcafee/mysql-audit/wiki/Installation पर उपलब्ध है।

प्लगइन स्थापना शुरू करने से पहले, आप जांच सकते हैं कि प्लगइन सिस्टम में मौजूद है या नहीं। डायनेमिक प्लग-इन (इंस्टेंस पुनरारंभ की आवश्यकता नहीं है) स्थान को निम्न के साथ जांचा जा सकता है:

SHOW GLOBAL VARIABLES LIKE 'plugin_dir';

+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| plugin_dir    | /usr/lib64/mysql/plugin/ |
+---------------+--------------------------+

यह सुनिश्चित करने के लिए कि आपके पास प्लगइन लाइब्रेरी की एक प्रति है, फाइल सिस्टम स्तर पर लौटाई गई निर्देशिका की जाँच करें। यदि आपके पास /usr/lib64/mysql/plugin/ के अंदर server_audit.so या server_audit.dll नहीं है, तो अधिक संभावना है कि आपका MariaDB संस्करण समर्थित नहीं है और इसे नवीनतम संस्करण में अपग्रेड करना चाहिए..

मारियाडीबी प्लगइन स्थापित करने का सिंटैक्स है:

INSTALL SONAME 'server_audit';

इंस्टॉल किए गए प्लग इन की जांच करने के लिए आपको चलाने की आवश्यकता है:

SHOW PLUGINS;
MariaDB [(none)]> show plugins;
+-------------------------------+----------+--------------------+--------------------+---------+
| Name                          | Status   | Type               | Library            | License |
+-------------------------------+----------+--------------------+--------------------+---------+
| binlog                        | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| mysql_native_password         | ACTIVE   | AUTHENTICATION     | NULL               | GPL     |
| mysql_old_password            | ACTIVE   | AUTHENTICATION     | NULL               | GPL     |
| wsrep                         | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| MRG_MyISAM                    | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| MEMORY                        | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| CSV                           | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| MyISAM                        | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| CLIENT_STATISTICS             | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INDEX_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| TABLE_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| USER_STATISTICS               | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| PERFORMANCE_SCHEMA            | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| InnoDB                        | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| INNODB_TRX                    | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_LOCKS                  | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_LOCK_WAITS             | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_CMP                    | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
...
| INNODB_MUTEXES                | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_SYS_SEMAPHORE_WAITS    | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| INNODB_TABLESPACES_ENCRYPTION | ACTIVE   | INFORMATION SCHEMA | NULL               | BSD     |
| INNODB_TABLESPACES_SCRUBBING  | ACTIVE   | INFORMATION SCHEMA | NULL               | BSD     |
| Aria                          | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| SEQUENCE                      | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| user_variables                | ACTIVE   | INFORMATION SCHEMA | NULL               | GPL     |
| FEEDBACK                      | DISABLED | INFORMATION SCHEMA | NULL               | GPL     |
| partition                     | ACTIVE   | STORAGE ENGINE     | NULL               | GPL     |
| rpl_semi_sync_master          | ACTIVE   | REPLICATION        | semisync_master.so | GPL     |
| rpl_semi_sync_slave           | ACTIVE   | REPLICATION        | semisync_slave.so  | GPL     |
| SERVER_AUDIT                  | ACTIVE   | AUDIT              | server_audit.so    | GPL     |
+-------------------------------+----------+--------------------+--------------------+---------+

यदि आपको अतिरिक्त जानकारी की आवश्यकता है, तो info_schema डेटाबेस में PLUGINS तालिका देखें जिसमें अधिक विस्तृत जानकारी है।

प्लगइन स्थापित करने का दूसरा तरीका my.cnf में प्लगइन को सक्षम करना और इंस्टेंस को पुनरारंभ करना है। MariaDB से एक बुनियादी ऑडिट प्लगइन कॉन्फ़िगरेशन का एक उदाहरण हो सकता है:

server_audit_events=CONNECT
server_audit_file_path=/var/log/mysql/audit.log
server_audit_file_rotate_size=1073741824
server_audit_file_rotations=8
server_audit_logging=ON
server_audit_incl_users=
server_audit_excl_users=
server_audit_output_type=FILE
server_audit_query_log_limit=1024

उपरोक्त सेटिंग को my.cnf में रखा जाना चाहिए। ऑडिट प्लगइन फ़ाइल /var/log/mysql/audit.log बनाएगा जो आकार 1GB पर घूमेगा और फ़ाइल के अधिलेखित होने तक आठ घुमाव होंगे। फ़ाइल में केवल कनेक्शन के बारे में जानकारी होगी।

वर्तमान में, सोलह सेटिंग्स हैं जिनका उपयोग आप मारियाडीबी ऑडिट प्लगइन को समायोजित करने के लिए कर सकते हैं।

server_audit_events
server_audit_excl_users
server_audit_file_path
server_audit_file_rotate_now
server_audit_file_rotate_size
server_audit_file_rotations
server_audit_incl_users
server_audit_loc_info
server_audit_logging
server_audit_mode
server_audit_output_type
Server_audit_query_log_limit
server_audit_syslog_facility
server_audit_syslog_ident
server_audit_syslog_info
server_audit_syslog_priority

उनमें से, आप उपयोगकर्ताओं को शामिल करने या बाहर करने, विभिन्न लॉगिंग ईवेंट (कनेक्ट या QUERY) सेट करने और फ़ाइल और syslog के बीच स्विच करने के विकल्प ढूंढ सकते हैं।

यह सुनिश्चित करने के लिए कि सर्वर स्टार्टअप पर प्लगइन सक्षम हो जाएगा, आपको अपनी my.cnf सेटिंग्स में
plugin_load=server_audit=server_audit.so सेट करना होगा। इस तरह के कॉन्फ़िगरेशन को server_audit=FORCE_PLUS_PERMANENT द्वारा अतिरिक्त रूप से संरक्षित किया जा सकता है जो प्लगइन अनइंस्टॉल विकल्प को अक्षम कर देगा।

UNINSTALL PLUGIN server_audit;

ERROR 1702 (HY000):
Plugin 'server_audit' is force_plus_permanent and can not be unloaded

मारियाडीबी ऑडिट प्लगइन द्वारा निर्मित कुछ नमूना प्रविष्टियां यहां दी गई हैं:

20180817 20:00:01,slave,cmon,cmon,31,0,DISCONNECT,information_schema,,0
20180817 20:47:01,slave,cmon,cmon,17,0,DISCONNECT,information_schema,,0
20180817 20:47:02,slave,cmon,cmon,19,0,DISCONNECT,information_schema,,0
20180817 20:47:02,slave,cmon,cmon,18,0,DISCONNECT,information_schema,,0
20180819 17:19:19,slave,cmon,cmon,12,0,CONNECT,information_schema,,0
20180819 17:19:19,slave,root,localhost,13,0,FAILED_CONNECT,,,1045
20180819 17:19:19,slave,root,localhost,13,0,DISCONNECT,,,0
20180819 17:19:20,slave,cmon,cmon,14,0,CONNECT,mysql,,0
20180819 17:19:20,slave,cmon,cmon,14,0,DISCONNECT,mysql,,0
20180819 17:19:21,slave,cmon,cmon,15,0,CONNECT,information_schema,,0
20180819 17:19:21,slave,cmon,cmon,16,0,CONNECT,information_schema,,0
20180819 19:00:01,slave,cmon,cmon,17,0,CONNECT,information_schema,,0
20180819 19:00:01,slave,cmon,cmon,17,0,DISCONNECT,information_schema,,0

स्कीमा परिवर्तन रिपोर्ट

यदि आपको केवल DDL परिवर्तनों को ट्रैक करने की आवश्यकता है, तो आप स्कीमा परिवर्तन पर ClusterControl ऑपरेशनल रिपोर्ट का उपयोग कर सकते हैं। स्कीमा चेंज डिटेक्शन रिपोर्ट आपके डेटाबेस पर किसी भी डीडीएल परिवर्तन को दिखाती है। इस कार्यक्षमता के लिए ClusterControl कॉन्फ़िगरेशन फ़ाइल में एक अतिरिक्त पैरामीटर की आवश्यकता होती है। यदि यह सेट नहीं है तो आपको निम्न जानकारी दिखाई देगी:schema_change_detection_address /etc/cmon.d/cmon_1.cnf में सेट नहीं है। एक बार ऐसा हो जाने पर एक उदाहरण आउटपुट नीचे जैसा हो सकता है:

इसे एक शेड्यूल के साथ सेट किया जा सकता है, और रिपोर्ट प्राप्तकर्ताओं को ईमेल की जाती है।

ClusterControl:शेड्यूल ऑपरेशनल रिपोर्ट

MySQL डेटाबेस सुरक्षा आकलन

पैकेज अपग्रेड चेक

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

ClusterControl अपग्रेड रिपोर्ट ऑपरेटिंग सिस्टम से जानकारी एकत्र करती है और उनकी तुलना रिपॉजिटरी में उपलब्ध पैकेजों से करती है। रिपोर्ट को चार खंडों में बांटा गया है; अपग्रेड सारांश, डेटाबेस पैकेज, सुरक्षा पैकेज और अन्य पैकेज। आपने अपने सिस्टम पर जो इंस्टाल किया है उसकी तुलना आप तुरंत कर सकते हैं और एक अनुशंसित अपग्रेड या पैच ढूंढ सकते हैं।

ClusterControl:अपग्रेड रिपोर्ट ClusterControl:अपग्रेड रिपोर्ट विवरण

मैन्युअल रूप से उनकी तुलना करने के लिए आप चला सकते हैं

SHOW VARIABLES WHERE variable_name LIKE "version";

सुरक्षा बुलेटिन जैसे:
https://www.oracle.com/technetwork/topics/security/alerts-086861.html
https://nvd.nist.gov/view/vuln/search- के साथ results?adv_search=true&cves=on&cpe_vendor=cpe%3a%2f%3aoracle&cpe_produ
https://www.percona.com/doc/percona-server/LATEST/release-notes/release-notes_index.html
https://downloads.mariadb.org/mariadb/+releases/
https://www.cvedetails.com/vulnerability-list/vendor_id-12010/Mariadb.html
https://www। cvedetails.com/vulnerability-list/vendor_id-13000/Percona.html

या विक्रेता भंडार:

डेबियन पर

sudo apt list mysql-server

आरएचईएल/सेंटोस पर

yum list | grep -i mariadb-server

बिना पासवर्ड वाले खाते

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

ऑडिट प्रक्रिया से लौटाई गई प्रत्येक पंक्ति के लिए, एक पासवर्ड सेट करें:

SELECT User,host
FROM mysql.user
WHERE authentication_string='';

इसके अतिरिक्त, आप एक पासवर्ड सत्यापन प्लगइन स्थापित कर सकते हैं और एक अधिक सुरक्षित नीति लागू कर सकते हैं:

INSTALL PLUGIN validate_password SONAME 'validate_password.so';

SHOW VARIABLES LIKE 'default_password_lifetime';
SHOW VARIABLES LIKE 'validate_password%';

एक अच्छी शुरुआत हो सकती है:

plugin-load=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
validate_password_length=14
validate_password_mixed_case_count=1
validate_password_number_count=1
validate_password_special_char_count=1
validate_password_policy=MEDIUM

बेशक, ये सेटिंग आपकी व्यावसायिक आवश्यकताओं पर निर्भर करेंगी।

रिमोट एक्सेस मॉनिटरिंग

होस्टनाम के भीतर वाइल्डकार्ड के उपयोग से बचने से उन विशिष्ट स्थानों को नियंत्रित करने में मदद मिलती है जहां से कोई उपयोगकर्ता डेटाबेस से जुड़ सकता है और उसके साथ इंटरैक्ट कर सकता है।

आपको यह सुनिश्चित करना चाहिए कि प्रत्येक उपयोगकर्ता केवल विशिष्ट होस्ट से ही MySQL से जुड़ सकता है। आप हमेशा एक ही उपयोगकर्ता के लिए कई प्रविष्टियां परिभाषित कर सकते हैं, इससे वाइल्डकार्ड की आवश्यकता को कम करने में मदद मिलेगी।

इस अनुशंसा का आकलन करने के लिए निम्न SQL कथन निष्पादित करें (सुनिश्चित करें कि कोई पंक्तियाँ वापस नहीं आती हैं):

SELECT user, host FROM mysql.user WHERE host = '%';

टेस्ट डेटाबेस

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

SHOW DATABASES LIKE 'test';

यदि आप देखते हैं कि परीक्षण डेटाबेस मौजूद है, तो यह हो सकता है कि mysql_secure_installation स्क्रिप्ट जो परीक्षण डेटाबेस (साथ ही अन्य सुरक्षा-संबंधी गतिविधियों) को छोड़ देती है, निष्पादित नहीं की गई थी।

डेटा जानकारी लोड करें

यदि सर्वर और क्लाइंट दोनों में LOAD DATA LOCAL INFILE चलाने की क्षमता है, तो क्लाइंट स्थानीय फ़ाइल से दूरस्थ MySQL सर्वर पर डेटा लोड करने में सक्षम होगा। local_infile पैरामीटर निर्धारित करता है कि MySQL क्लाइंट के कंप्यूटर पर स्थित फ़ाइलों को लोड किया जा सकता है या LOAD DATA INFILE या SELECT local_file के माध्यम से चुना जा सकता है।

यह, संभावित रूप से, उन फ़ाइलों को पढ़ने में मदद कर सकता है जिन तक क्लाइंट की पहुंच है - उदाहरण के लिए, किसी एप्लिकेशन सर्वर पर, कोई भी उस डेटा तक पहुंच सकता है जिस तक HTTP सर्वर की पहुंच है। इससे बचने के लिए, आपको my.cnf में local-infile=0 सेट करना होगा।

निम्न SQL कथन निष्पादित करें और सुनिश्चित करें कि मान फ़ील्ड OFF पर सेट है:

SHOW VARIABLES WHERE Variable_name = 'local_infile';

गैर-एन्क्रिप्टेड टेबलस्पेस के लिए मॉनिटर करें

MySQL 5.7.11 से शुरू होकर, InnoDB फ़ाइल-प्रति-टेबल टेबलस्पेस में संग्रहीत तालिकाओं के लिए डेटा एन्क्रिप्शन का समर्थन करता है। यह सुविधा भौतिक टेबलस्पेस डेटा फ़ाइलों के लिए आराम से एन्क्रिप्शन प्रदान करती है। यह जांचने के लिए कि क्या आपकी टेबल एन्क्रिप्ट की गई हैं:

mysql> SELECT TABLE_SCHEMA, TABLE_NAME, CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES
       WHERE CREATE_OPTIONS LIKE '%ENCRYPTION="Y"%';

+--------------+------------+----------------+
| TABLE_SCHEMA | TABLE_NAME | CREATE_OPTIONS |
+--------------+------------+----------------+
| test         | t1         | ENCRYPTION="Y" |
+--------------+------------+----------------+

एन्क्रिप्शन के एक भाग के रूप में, आपको बाइनरी लॉग के एन्क्रिप्शन पर भी विचार करना चाहिए। MySQL सर्वर बाइनरी लॉग में बहुत सारी जानकारी लिखता है।

एन्क्रिप्शन कनेक्शन सत्यापन

कुछ सेटअपों में, यदि प्रत्येक कनेक्शन को यूनिक्स सॉकेट के माध्यम से स्थानीय रूप से प्रबंधित किया जाता है, तो डेटाबेस को नेटवर्क के माध्यम से एक्सेस नहीं किया जाना चाहिए। ऐसे मामलों में, आप my.cnf में 'स्किप-नेटवर्किंग' वेरिएबल जोड़ सकते हैं। स्किप-नेटवर्किंग MySQL को किसी भी TCP/IP कनेक्शन का उपयोग करने से रोकता है, और Linux पर केवल Unix सॉकेट ही संभव होगा।

हालाँकि यह दुर्लभ स्थिति है क्योंकि नेटवर्क पर MySQL का उपयोग करना आम है। फिर आपको यह निगरानी करने की आवश्यकता है कि आपके कनेक्शन एन्क्रिप्ट किए गए हैं। MySQL सर्वर (प्रतिकृति) और MySQL सर्वर और क्लाइंट दोनों के बीच ट्रैफ़िक को एन्क्रिप्ट करने के साधन के रूप में SSL का समर्थन करता है। यदि आप गैलेरा क्लस्टर का उपयोग करते हैं, तो समान सुविधाएं उपलब्ध हैं - इंट्रा-क्लस्टर संचार और क्लाइंट के साथ कनेक्शन दोनों को एसएसएल का उपयोग करके एन्क्रिप्ट किया जा सकता है। यह जांचने के लिए कि क्या आप एसएसएल एन्क्रिप्शन का उपयोग करते हैं, निम्नलिखित क्वेरी चलाएँ:

SHOW variables WHERE variable_name = 'have_ssl'; 
select ssl_verify_server_cert from mysql.slave_master_info;

अभी के लिए बस इतना ही। यह पूरी सूची नहीं है, अगर कोई अन्य जांच है जो आप आज अपने उत्पादन डेटाबेस पर कर रहे हैं तो हमें बताएं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. किसी अन्य उपयोगकर्ता खाते (मैकोज़) से एक MySQL इंस्टेंस पुनर्प्राप्त करना

  2. मारियाडीबी में तालिका मौजूद है या नहीं, इसकी जांच करने के 4 तरीके

  3. मारियाडीबी राउंड () बनाम ट्रंकेट ()

  4. MySQL के लिए डेटाबेस क्वेरी दक्षता को अधिकतम करना - भाग एक

  5. मारियाडीबी डिफ़ॉल्ट () समझाया गया