ProxySQL डेटाबेस वातावरण में एक बहुत ही महत्वपूर्ण बुनियादी ढांचा बन गया है। यह लोड बैलेंसर के रूप में काम करता है, यह यातायात के प्रवाह को आकार देने और डाउनटाइम को कम करने में मदद करता है। महान सत्ताओं के साथ ही महान जिम्मेदारियां भी आती हैं। ProxySQL कॉन्फ़िगरेशन को कौन एक्सेस कर रहा है, इस पर आप कैसे अपडेट रह सकते हैं? ProxySQL के माध्यम से डेटाबेस से कौन जुड़ रहा है? उन प्रश्नों का उत्तर ProxySQL ऑडिट लॉग का उपयोग करके दिया जा सकता है, जो ProxySQL 2.0.5 से शुरू होकर उपलब्ध है। इस ब्लॉग पोस्ट में हम देखेंगे कि इस सुविधा को कैसे सक्षम किया जाए और लॉग सामग्री कैसी दिखती है।
प्रारंभिक चरण ProxySQL को परिनियोजित करना होगा। हम आसानी से ClusterControl का उपयोग करके ऐसा कर सकते हैं - MySQL प्रतिकृति और गैलेरा क्लस्टर दोनों प्रकार ProxySQL परिनियोजन का समर्थन करते हैं।
यह मानते हुए कि हमारे पास एक क्लस्टर है और चल रहा है, हम ProxySQL को मैनेज -> लोडबैलेंसर:
से परिनियोजित कर सकते हैंहमें यह तय करना है कि कौन सा नोड ProxySQL स्थापित किया जाना चाहिए, इसका संस्करण ( हम डिफ़ॉल्ट 2.x रखेंगे) और ProxySQL व्यवस्थापकीय और निगरानी उपयोगकर्ताओं के लिए क्रेडेंशियल परिभाषित करेंगे।
नीचे हम डेटाबेस से मौजूदा एप्लिकेशन उपयोगकर्ताओं को आयात कर सकते हैं या एक नया बना सकते हैं एक नाम, पासवर्ड, स्कीमा और MySQL विशेषाधिकार निर्दिष्ट करके। फिर हम कॉन्फ़िगर कर सकते हैं कि कौन से नोड्स ProxySQL में शामिल किए जाने चाहिए और यह तय कर सकते हैं कि हम निहित लेनदेन का उपयोग करते हैं या नहीं। एक बार सब कुछ हो जाने के बाद, हम ProxySQL को तैनात कर सकते हैं। उच्च उपलब्धता के लिए आप शायद एक दूसरा प्रॉक्सीएसक्यूएल जोड़ना चाहते हैं और फिर उनके ऊपर रख सकते हैं। Keepalived को ClusterControl से भी आसानी से परिनियोजित किया जा सकता है:
यहां हमें उन नोड्स को चुनना है जिन पर ProxySQL तैनात है, वर्चुअल पास करें आईपी और नेटवर्क इंटरफेस वीआईपी को सौंपा जाना चाहिए। एक बार यह हो जाने के बाद, ClusterControl आपके लिए Keepalived को परिनियोजित कर सकता है।
अब, ऑडिट लॉग पर एक नजर डालते हैं। सभी कॉन्फ़िगरेशन दोनों ProxySQL नोड्स पर किए जाने चाहिए। वैकल्पिक रूप से आप नोड्स को सिंक करने के लिए एक विकल्प का उपयोग कर सकते हैं:
ऑडिट लॉग के काम करने के तरीके को नियंत्रित करने वाली दो सेटिंग्स हैं:पी>
पहला फ़ाइल परिभाषित करता है कि डेटा कहाँ संग्रहीत किया जाना चाहिए, दूसरा बताता है घुमाए जाने से पहले लॉग फ़ाइल कितनी बड़ी होनी चाहिए। आइए ProxySQL डेटा निर्देशिका में लॉग को कॉन्फ़िगर करें:
अब, हम ऑडिट में देखे गए डेटा पर एक नज़र डाल सकते हैं बोटा दस्तावेज। सबसे पहले, जिस प्रारूप में डेटा संग्रहीत किया जाता है वह JSON है। ईवेंट दो प्रकार के होते हैं, एक MySQL कनेक्टिविटी से संबंधित है और दूसरा ProxySQL व्यवस्थापक इंटरफ़ेस कनेक्टिविटी से संबंधित है।
यहां MySQL ट्रैफ़िक द्वारा ट्रिगर की गई प्रविष्टियों का एक उदाहरण दिया गया है:
"client_addr": "10.0.0.100:40578",
"event": "MySQL_Client_Connect_OK",
"proxy_addr": "0.0.0.0:6033",
"schemaname": "sbtest",
"ssl": false,
"thread_id": 810,
"time": "2020-01-23 14:24:17.595",
"timestamp": 1579789457595,
"username": "sbtest"
}
{
"client_addr": "10.0.0.100:40572",
"event": "MySQL_Client_Quit",
"proxy_addr": "0.0.0.0:6033",
"schemaname": "sbtest",
"ssl": false,
"thread_id": 807,
"time": "2020-01-23 14:24:17.657",
"timestamp": 1579789457657,
"username": "sbtest"
}
{
"client_addr": "10.0.0.100:40572",
"creation_time": "2020-01-23 14:24:17.357",
"duration": "299.653ms",
"event": "MySQL_Client_Close",
"extra_info": "MySQL_Thread.cpp:4307:process_all_sessions()",
"proxy_addr": "0.0.0.0:6033",
"schemaname": "sbtest",
"ssl": false,
"thread_id": 807,
"time": "2020-01-23 14:24:17.657",
"timestamp": 1579789457657,
"username": "sbtest"
}
जैसा कि आप देख सकते हैं, अधिकांश डेटा दोहराता है:क्लाइंट पता, प्रॉक्सीएसक्यूएल पता, स्कीमा नाम, यदि एसएसएल कनेक्शन में इस्तेमाल किया गया था, MySQL में संबंधित थ्रेड नंबर, कनेक्शन बनाने वाला उपयोगकर्ता। "MySQL_Client_Close" ईवेंट में उस समय के बारे में भी जानकारी होती है जब कनेक्शन बनाया गया था और कनेक्शन की अवधि। आप यह भी देख सकते हैं कि कनेक्शन बंद करने के लिए ProxySQL कोड का कौन सा भाग जिम्मेदार था।
व्यवस्थापक कनेक्शन काफी समान हैं:
{
"client_addr": "10.0.0.100:52056",
"event": "Admin_Connect_OK",
"schemaname": "information_schema",
"ssl": false,
"thread_id": 815,
"time": "2020-01-23 14:24:19.490",
"timestamp": 1579789459490,
"username": "proxysql-admin"
}
{
"client_addr": "10.0.0.100:52056",
"event": "Admin_Quit",
"schemaname": "information_schema",
"ssl": false,
"thread_id": 815,
"time": "2020-01-23 14:24:19.494",
"timestamp": 1579789459494,
"username": "proxysql-admin"
}
{
"client_addr": "10.0.0.100:52056",
"creation_time": "2020-01-23 14:24:19.482",
"duration": "11.795ms",
"event": "Admin_Close",
"extra_info": "MySQL_Thread.cpp:3123:~MySQL_Thread()",
"schemaname": "information_schema",
"ssl": false,
"thread_id": 815,
"time": "2020-01-23 14:24:19.494",
"timestamp": 1579789459494,
"username": "proxysql-admin"
}
एकत्र किया गया डेटा बहुत समान है, मुख्य अंतर यह है कि यह ProxySQL व्यवस्थापकीय इंटरफ़ेस के कनेक्शन से संबंधित है।
निष्कर्ष
जैसा कि आप देख सकते हैं, एक बहुत ही आसान तरीके से आप ProxySQL तक पहुंच की ऑडिटिंग को सक्षम कर सकते हैं। यह, विशेष रूप से प्रशासनिक पहुंच, एक ऐसी चीज है जिसकी सुरक्षा के दृष्टिकोण से निगरानी की जानी चाहिए। ऑडिट प्लगइन इसे पूरा करना काफी आसान बनाता है।