आपके डेटा को सुरक्षित रखने के विभिन्न तरीके हैं। डेटाबेस एक्सेस को नियंत्रित करने, कॉन्फ़िगरेशन को सुरक्षित करने, अपने सिस्टम को अपग्रेड करने, और बहुत कुछ जैसे अभ्यास डेटाबेस सुरक्षा का हिस्सा हैं। यह भी संभव है कि आपके पास सुरक्षा मुद्दे हों और आपको इसका एहसास न हो (जब तक कि बहुत देर न हो जाए), इसलिए निगरानी यह सुनिश्चित करने के लिए एक महत्वपूर्ण हिस्सा है कि अगर कुछ अप्रत्याशित होता है, तो आप इसे पकड़ पाएंगे। इसमें न केवल आपका सिस्टम, बल्कि आपके डेटाबेस भी शामिल हैं।
लेखा परीक्षा यह जानने का एक तरीका है कि आपके डेटाबेस में क्या हो रहा है, और यह कई सुरक्षा नियमों या मानकों (जैसे पीसीआई - भुगतान कार्ड उद्योग) के लिए भी आवश्यक है।
MariaDB सर्वर, सबसे लोकप्रिय ओपन-सोर्स डेटाबेस सर्वरों में से एक, का अपना ऑडिट प्लगिन है (जो MySQL पर भी काम करता है), इस ऑडिटिंग कार्य में मदद करने के लिए। इस ब्लॉग में, आप देखेंगे कि इस उपयोगी मारियाडीबी ऑडिट प्लगइन को कैसे स्थापित और उपयोग किया जाए।
हम मारियाडीबी एंटरप्राइज ऑडिट के लिए मारियाडीबी के प्लगइन का अधिक उन्नत संस्करण भी पेश करेंगे, जो एंटरप्राइज इंस्टॉलेशन 10.6, 10.5 और 10.4 में शामिल है। लेकिन उस पर और बाद में।
मारियाडीबी ऑडिट प्लगइन क्या है?
ऑडिट प्लगिन को मारियाडीबी द्वारा विकसित किया गया है ताकि ऑडिटिंग नियमों के अनुपालन में उपयोगकर्ता पहुंच को रिकॉर्ड करने की आवश्यकताओं को पूरा किया जा सके।
प्रत्येक क्लाइंट सत्र के लिए, यह एक लॉग फ़ाइल (या syslog) में रिकॉर्ड करता है, जो सर्वर से जुड़ा है, कौन सी क्वेरी निष्पादित की गई, कौन सी तालिकाएँ एक्सेस की गईं, और सर्वर चर बदल गए।
यह मारियाडीबी, माईएसक्यूएल और पेरकोना सर्वर के साथ काम करता है। मारियाडीबी ने डिफ़ॉल्ट रूप से संस्करण 10.0.10 और 5.5.37 से ऑडिट प्लगइन को शामिल करना शुरू किया, और इसे मारियाडीबी 5.5.20 से किसी भी संस्करण में स्थापित किया जा सकता है।
MariaDB ऑडिट प्लगिन इंस्टॉलेशन
प्लगइन फ़ाइल (server_audit.so) प्लगइन निर्देशिका /usr/lib/mysql/plugin/:
में MariaDB स्थापना के दौरान डिफ़ॉल्ट रूप से स्थापित होती है$ ls -lah /usr/lib/mysql/plugin/ |grep server_audit
-rw-r--r-- 1 root root 63K May 9 19:33 server_audit.so
तो, आपको बस इसे MariaDB उदाहरण में जोड़ना होगा:
MariaDB [(none)]> INSTALL SONAME 'server_audit';
Query OK, 0 rows affected (0.003 sec)
MariaDB [(none)]> SHOW PLUGINS;
+--------------+--------+-------+-----------------+---------+
| Name | Status | Type | Library | License |
+--------------+--------+-------+-----------------+---------+
| SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL |
+--------------+--------+-------+-----------------+---------+
और SET GLOBAL कमांड का उपयोग करके इसे सक्षम करें:
MariaDB [(none)]> SET GLOBAL server_audit_logging=ON;
Query OK, 0 rows affected (0.000 sec)
या ऑडिट शुरू करने के लिए इसे my.cnf कॉन्फ़िगरेशन फ़ाइल में लगातार बनाएं:
[MYSQLD]
server_audit_logging=ON
मारियाडीबी इंस्टेंस में इसे जोड़ने का दूसरा तरीका my.cnf कॉन्फ़िगरेशन फ़ाइल में plugin_load_add पैरामीटर जोड़ना है:
[mariadb]
plugin_load_add = server_audit
इसे अनइंस्टॉल करने से बचने के लिए FORCE_PLUS_PERMANENT को जोड़ने की भी सिफारिश की जाती है:
[mariadb]
plugin_load_add = server_audit
server_audit=FORCE_PLUS_PERMANENT
अब आपके पास MariaDB ऑडिट प्लगिन इंस्टॉल हो गया है, आइए देखें कि इसे कैसे कॉन्फ़िगर किया जाए।
MariaDB ऑडिट प्लगिन कॉन्फ़िगरेशन
वर्तमान कॉन्फ़िगरेशन की जांच करने के लिए आप निम्न आदेश चलाकर "server_audit%" वैश्विक चर का मान देख सकते हैं:
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE "server_audit%";
+-------------------------------+-----------------------+
| Variable_name | Value |
+-------------------------------+-----------------------+
| server_audit_events | |
| server_audit_excl_users | |
| server_audit_file_path | server_audit.log |
| server_audit_file_rotate_now | OFF |
| server_audit_file_rotate_size | 1000000 |
| server_audit_file_rotations | 9 |
| server_audit_incl_users | |
| server_audit_logging | OFF |
| server_audit_mode | 0 |
| server_audit_output_type | file |
| server_audit_query_log_limit | 1024 |
| server_audit_syslog_facility | LOG_USER |
| server_audit_syslog_ident | mysql-server_auditing |
| server_audit_syslog_info | |
| server_audit_syslog_priority | LOG_INFO |
+-------------------------------+-----------------------+
15 rows in set (0.001 sec)
आप SET GLOBAL कमांड का उपयोग करके इन चरों को संशोधित कर सकते हैं या [mysqld] अनुभाग के अंतर्गत my.cnf कॉन्फ़िगरेशन फ़ाइल में इसे स्थिर बना सकते हैं।
आइए कुछ सबसे महत्वपूर्ण चरों का वर्णन करें:
- server_audit_logging : ऑडिट लॉगिंग सक्षम करता है।
- server_audit_events :उन घटनाओं को निर्दिष्ट करता है जिन्हें आप रिकॉर्ड करना चाहते हैं। डिफ़ॉल्ट रूप से, मान खाली होता है, जिसका अर्थ है कि सभी ईवेंट रिकॉर्ड किए जाते हैं। विकल्प हैं कनेक्शन, क्वेरी और टेबल।
- server_audit_excl_users, server_audit_incl_users :ये वेरिएबल निर्दिष्ट करते हैं कि किस उपयोगकर्ता की गतिविधि को बाहर रखा जाना चाहिए या ऑडिट लॉग फ़ाइल में शामिल किया जाना चाहिए। डिफ़ॉल्ट रूप से, सभी उपयोगकर्ताओं की गतिविधि रिकॉर्ड की जाती है।
- server_audit_output_type :डिफ़ॉल्ट रूप से ऑडिटिंग आउटपुट एक फाइल में भेजा जाता है। दूसरा विकल्प syslog है, जिसका अर्थ है कि सभी प्रविष्टियाँ syslog सुविधा में जाती हैं।
- server_audit_syslog_facility, server_audit_syslog_priority :syslog सुविधा और उन घटनाओं की प्राथमिकता निर्दिष्ट करता है जिन्हें syslog में जाना चाहिए।
कॉन्फ़िगर करने के बाद, आप निर्दिष्ट लॉग फ़ाइल (या syslog) में ऑडिट इवेंट देख सकते हैं। आइए देखें कि यह कैसा दिखता है।
MariaDB ऑडिट प्लगिन लॉग
ऑडिट लॉग प्लगिन द्वारा पंजीकृत ईवेंट देखने के लिए, आप निर्दिष्ट लॉग फ़ाइल (डिफ़ॉल्ट रूप से server_audit.log) की जांच कर सकते हैं।
$ tail -f /var/lib/mysql/server_audit.log
20200703 19:07:04,MariaDB1,cmon,10.10.10.116,64,915239,QUERY,information_schema,'FLUSH /*!50500 SLOW */ LOGS',0
20200703 19:07:05,MariaDB1,cmon,10.10.10.116,61,915240,QUERY,information_schema,'SHOW GLOBAL STATUS',0
20200703 19:07:05,MariaDB1,cmon,10.10.10.116,64,915241,WRITE,mysql,slow_log,
20200703 19:07:05,MariaDB1,cmon,10.10.10.116,64,915241,QUERY,information_schema,'SET GLOBAL SLOW_QUERY_LOG=1',0
20200703 19:07:06,MariaDB1,cmon,10.10.10.116,61,915242,QUERY,information_schema,'SHOW GLOBAL STATUS',0
20200703 19:15:42,MariaDB1,root,localhost,124,0,CONNECT,,,0
20200703 19:15:42,MariaDB1,root,localhost,124,917042,QUERY,,'select @@version_comment limit 1',0
20200703 19:15:48,MariaDB1,root,localhost,124,0,DISCONNECT,,,0
20200703 19:57:41,MariaDB1,root,localhost,135,925831,QUERY,,'create database test1',0
20200703 19:58:05,MariaDB1,root,127.0.0.1,136,0,FAILED_CONNECT,,,1045
20200703 19:58:05,MariaDB1,root,127.0.0.1,136,0,DISCONNECT,,,0
20200703 19:58:49,MariaDB1,root,localhost,137,926073,QUERY,,'SELECT DATABASE()',0
20200703 19:58:49,MariaDB1,root,localhost,137,926075,QUERY,test1,'show databases',0
20200703 19:58:49,MariaDB1,root,localhost,137,926076,QUERY,test1,'show tables',0
20200703 19:59:20,MariaDB1,root,localhost,137,926182,CREATE,test1,t1,
20200703 19:59:20,MariaDB1,root,localhost,137,926182,QUERY,test1,'create table t1 (id int, message text)',0
20200703 19:59:48,MariaDB1,root,localhost,137,926287,QUERY,test1,'insert into t1 values (4,\'message 1\')',0
जैसा कि आप उपरोक्त लॉग में देख सकते हैं, आपके पास सर्वर_ऑडिट_इवेंट्स कॉन्फ़िगरेशन के आधार पर डेटाबेस कनेक्शन और वहां चल रहे प्रश्नों के बारे में ईवेंट होंगे।
ClusterControl में MariaDB ऑडिट प्लगिन का उपयोग करना
मैन्युअल कॉन्फ़िगरेशन से बचने के लिए, आप ClusterControl UI से ऑडिट प्लगिन को सक्षम कर सकते हैं। इसके लिए आपको केवल ClusterControl पर जाना होगा -> मारियाडीबी क्लस्टर का चयन करें -> सुरक्षा -> ऑडिट लॉग:
और आपके पास बिना किसी मैन्युअल इंस्टॉलेशन और न ही कॉन्फ़िगरेशन के प्लग इन सक्षम होगा।
ClusterControl का उपयोग करके आप विभिन्न सुविधाओं का लाभ उठा सकते हैं, न केवल सुरक्षा बल्कि अन्य उपयोगी सुविधाओं के साथ-साथ निगरानी, प्रबंधन और बैकअप भी।
पेश है MariaDB एंटरप्राइज ऑडिट प्लगिन, server_audit2
MariaDB का विकास जारी है और इसमें प्लगइन सुधार शामिल हैं। 10.6, 10.5 और 10.4 मारियाडीबी एंटरप्राइज सर्वर इंस्टालेशन में शामिल, मारियाडीबी एंटरप्राइज ऑडिट के लिए उनका नवीनतम प्लग-इन सर्वर_ऑडिट2.सो है। संक्षेप में, यह उपयोगकर्ताओं को अनुपालन ऑडिट के लिए आवश्यक जानकारी संग्रहीत करने में सक्षम बनाता है।
प्लगइन फ़िल्टर टेम्प्लेट और उपयोगकर्ताओं के लिए सिस्टम टेबल, एक डिफ़ॉल्ट फ़िल्टर, और कुछ प्रति-उपयोगकर्ता खाता स्तर फ़िल्टर भी प्रस्तुत करता है। नया डिफ़ॉल्ट फ़िल्टर लोगों को परिभाषित फ़िल्टर के बिना किसी भी उपयोगकर्ता के लिए ऑडिटिंग नियमों को परिभाषित करने की अनुमति देता है। तालिका में एक फ़िल्टरनाम ("डिफ़ॉल्ट" पर सेट होने की आवश्यकता होती है), और नियम कॉलम होता है। SET GLOBAL server_audit_reload_filters=ON;
उपयोगकर्ता किसी खास उपयोगकर्ता पर लागू होने वाले फ़िल्टरनामों को भी स्टोर कर सकते हैं और प्लग-इन का ही ऑडिट कर सकते हैं, इसलिए अगर ऑडिट प्लग इन के कॉन्फ़िगरेशन में कोई बदलाव होता है, तो यह AUDIT_CONFIG इवेंट में लॉग इन होता है (के अनुसार) मारियाडीबी, वर्तमान सेटिंग्स को लॉग करने के लिए जानकारी को एक नई ऑडिट लॉग फ़ाइल में भी जोड़ा जा सकता है।
इसके अतिरिक्त, server_audit_users तालिका का उपयोग अब server_audit2.so में किया जा सकता है। उपयोगकर्ता से संबंधित जानकारी संग्रहीत करने के लिए प्लगइन।
यह सुनिश्चित करने के लिए कि आपके मारियाडीबी इंस्टॉलेशन में यह प्लगइन है, प्लगइन_डिर सिस्टम वेरिएबल में परिभाषित निर्देशिका में server_audit2.so खोजें या यदि आप निर्देशिका नहीं जानते हैं तो बस @@plugin_dir को क्वेरी करें। my.cnf में चर के माध्यम से समय बिताना चाहते हैं।
निष्कर्ष
कई सुरक्षा नियमों के लिए ऑडिटिंग आवश्यक है और यह तब भी उपयोगी है जब आप जानना चाहते हैं कि आपके डेटाबेस में क्या हुआ और इसके लिए कब और कौन जिम्मेदार था।
मारियाडीबी ऑडिट प्लगइन, और इसका एंटरप्राइज़ संस्करण, किसी भी बाहरी उपकरण का उपयोग किए बिना आपके डेटाबेस का ऑडिट करने का एक शानदार तरीका है, और यह MySQL और Percona सर्वर के साथ भी संगत है। यदि आप इसे मैन्युअल रूप से कॉन्फ़िगर करने से बचना चाहते हैं, तो आप UI से आसान तरीके से ऑडिट प्लगिन को सक्षम करने के लिए ClusterControl का उपयोग कर सकते हैं।