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

डेटाबेस सुरक्षा 101:ओपन सोर्स डेटाबेस में सुरक्षा

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

सामान्य सुरक्षा

डेटाबेस सॉफ़्टवेयर स्थापित करने के बाद, हमें सबसे आम सुरक्षा गलतियों से बचने के लिए कुछ पूर्व जांच करने की आवश्यकता है।

सामान्य दिशा-निर्देश इस प्रकार हैं:

  • कभी भी किसी को रूट/एडमिन को दूसरों तक पहुंच न दें! यह महत्वपूर्ण है।

  • जानें कि डेटाबेस एक्सेस विशेषाधिकार प्रणाली कैसे काम करती है। आवश्यकता से अधिक विशेषाधिकार न दें। सभी मेज़बानों को कभी भी विशेषाधिकार न दें।

  • अपने डेटाबेस में क्लियरटेक्स्ट पासवर्ड स्टोर न करें। इसके बजाय SHA2() या किसी अन्य वन-वे हैशिंग फ़ंक्शन का उपयोग करें और हैश मान संग्रहीत करें।

  • डिफ़ॉल्ट पोर्ट का उपयोग न करें और सुनिश्चित करें कि चुना गया पोर्ट किसी अविश्वसनीय होस्ट से पहुंच योग्य नहीं है।

  • ओपन सोर्स डेटाबेस को फ़ायरवॉल के पीछे रखें। यह आपको किसी भी सॉफ़्टवेयर में कम से कम 50% सभी प्रकार के कारनामों से बचाता है।

पहुंच नियंत्रण और खाता प्रबंधन

डेटाबेस के प्राथमिक कार्यों में से एक उपयोगकर्ता को प्रमाणित करना है जो किसी दिए गए होस्ट से जुड़ता है और उस उपयोगकर्ता को डेटाबेस पर विशेषाधिकारों के साथ संबद्ध करता है। यह नियंत्रित करने के लिए कि कौन से उपयोगकर्ता कनेक्ट हो सकते हैं, प्रत्येक खाते को पासवर्ड जैसे प्रमाणीकरण क्रेडेंशियल असाइन किए जा सकते हैं।
 

उपयोगकर्ता भूमिकाएं 

डेटाबेस भूमिका किसी भी संख्या में विशेषाधिकारों का एक संग्रह है जिसे एक या अधिक उपयोगकर्ताओं को सौंपा जा सकता है। आधुनिक ओपन सोर्स डेटाबेस में, अधिकांश उपयोगकर्ता पूर्वनिर्धारित भूमिकाओं के साथ आते हैं।

पासवर्ड प्रबंधन 

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

एक्सपायर्ड पासवर्ड को हैंडल करना

पासवर्ड की समय सीमा समाप्त होने के बाद, डेटाबेस सर्वर एक समाप्त-पासवर्ड क्लाइंट कनेक्शन को डिस्कनेक्ट कर देता है।

उदाहरण 
[[email protected] vagrant]# mysql -u severalnies -p
Password: ******
ERROR 1862 (HY000): Your password has expired. To log in you must
change it using a client that supports expired passwords.

 

संसाधन सीमित करना 

किसी भी उपयोगकर्ता खाते द्वारा किए जा सकने वाले एक साथ कनेक्शन की संख्या को सीमित करके, डेटाबेस सर्वर संसाधनों के क्लाइंट के उपयोग को प्रतिबंधित करें। उदाहरण के लिए, हम एक उपयोगकर्ता द्वारा प्रति घंटे निष्पादित की जाने वाली क्वेरी की संख्या या उपयोगकर्ता द्वारा प्रति घंटे सर्वर से कनेक्ट होने की संख्या को सीमित कर सकते हैं।

एन्क्रिप्टेड कनेक्शन 

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

सुरक्षा घटक और प्लगइन्स

सुरक्षा घटक आसानी से डेटाबेस के साथ एकीकृत हो जाते हैं। उदाहरण के लिए mysql में कई घटक और प्लगइन्स शामिल हैं जो सुरक्षा सुविधाओं को लागू करते हैं।

प्रमाणीकरण प्लगइन्स - ये प्लगइन्स क्लाइंट द्वारा MySQL सर्वर से कनेक्ट करने के प्रयासों को प्रमाणित कर रहे हैं। हम अपने डेटाबेस सर्वर के साथ आसानी से एकीकृत कर सकते हैं।

पासवर्ड प्लगइन - यह प्लग इन जांचता है कि वर्तमान पासवर्ड मजबूत है या नहीं, और कमजोर माने जाने वाले किसी भी पासवर्ड को अस्वीकार कर देता है।

कीरिंग प्लगइन - यह प्लगइन टेबलस्पेस को एन्क्रिप्ट करता है। यह एन्क्रिप्शन तकनीक मुख्य फाइलों को घुमाने के आधार पर काम करती है। यहाँ एक उदाहरण दिया गया है कि कैसे MySQL 8.0 को एन्क्रिप्ट किया जाए।

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

नमूना लॉग 
20210306 02:30:06,centos14,root,localhost,519,1832,QUERY,,'select sleep(5)',0
20210306 02:30:08,centos14,s9smysqlchk,localhost,571,0,DISCONNECT,,,0
20210306 02:30:09,centos14,root,localhost,519,1867,QUERY,,'show schemas',0

यदि आप ऑडिट लॉग फ़ाइलों को विभिन्न स्थानों पर संग्रहीत करना चाहते हैं, तो आप इस पैरामीटर को अपनी कॉन्फ़िगरेशन फ़ाइल "server_audit_file_path" में जोड़ सकते हैं।

लॉग मॉनिटरिंग - लॉग मॉनिटरिंग ऑप्स टीम को डेटाबेस वातावरण में बेहतर स्तर की दृश्यता प्रदान करता है, जो डेटाबेस इंस्टेंस की रचना करता है लेकिन लोड बैलेंसर भी। यह विसंगतियों की पहचान करने में मदद करता है, जब ये विसंगतियाँ होती हैं और जिस आवृत्ति पर वे होती हैं।

पासवर्ड सत्यापन प्लगिन

पासवर्ड एक शब्द, संख्या और वर्णों की स्ट्रिंग की तरह है। डेटाबेस और सर्वर साइड पर, कुछ एक्सेस के लिए यूजरनेम और पासवर्ड की जरूरत होती थी। उदाहरण के लिए यदि पासवर्ड एक क्लियरटेक्स्ट मान के रूप में दिया गया है, तो वैलिडेट_पासवर्ड प्लगइन वर्तमान पासवर्ड नीति के खिलाफ पासवर्ड की जांच करता है और कमजोर होने पर यह पासवर्ड को अस्वीकार कर देता है।

Valid_password_policy के तीन मान LOW, MEDIUM, या STRONG हैं। LOW का मान केवल पासवर्ड की लंबाई की जांच करता है, MEDIUM नीति कुछ शर्तों को जोड़ती है और STRONG नीति यह शर्त जोड़ती है कि पासवर्ड सबस्ट्रिंग जिसमें 4 या अधिक वर्ण होते हैं, वे एक शब्दकोश फ़ाइल में शब्दों से मेल नहीं खा सकते हैं जो कि validate_password_dictionary_file चर को संशोधित करके निर्दिष्ट किया जा सकता है।

LDAP प्लगइन

LDAP प्लगइन डेटाबेस सर्वर को LDAP निर्देशिकाओं में परिभाषित उपयोगकर्ताओं से कनेक्शन स्वीकार करने में सक्षम बनाता है। LDAP प्रमाणीकरण में, क्लाइंट-साइड और सर्वर-साइड प्लगइन्स पासवर्ड को क्लियरटेक्स्ट के रूप में संप्रेषित करते हैं। पासवर्ड एक्सपोजर को रोकने के लिए क्लाइंट और सर्वर के बीच एक सुरक्षित कनेक्शन की सिफारिश की जाती है। यदि क्लाइंट उपयोगकर्ता नाम और होस्ट नाम मेल नहीं खाते हैं, तो डेटाबेस कनेक्शन को अस्वीकार कर देगा।

 क्लस्टरकंट्रोल में एलडीएपी कॉन्फ़िगरेशन बहुत सीधा है। इस पोस्ट में हमने ClusterControl का उपयोग करके कॉन्फ़िगरेशन चरणों के बारे में बताया।

डेटाबेस बैकअप सुरक्षित करना 

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

जंप होस्ट नेटवर्क के लिए वीपीएन एक्सेस 

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

जंप होस्ट के माध्यम से डेटाबेस एक्सेस प्रबंधन

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

हम इसे कैसे प्राप्त कर सकते हैं?

लिनक्स मशीन से अपने डेटाबेस से कनेक्ट करने के लिए एक जंप सर्वर सेट करना सबसे अच्छा अभ्यास है, भले ही डीबी इंस्टेंस एक निजी नेटवर्क पर हो। जम्प होस्ट बनाने के बाद नीचे दिए गए दिशा-निर्देशों का पालन करें,

  • निजी सबनेट के साथ अपने डेटाबेस पर सार्वजनिक रूप से पहुंच योग्य प्रतिबंधित करें।

  • रूट टेबल में इंटरनेट गेटवे प्रतिबंधित करें।

  • एक नया VPC बनाएं या अपने जम्प होस्ट को उसी VPC में जोड़ें जो आपके डेटाबेस इंस्टेंस के रूप में है। फिर सार्वजनिक सबनेट के साथ अपने जंप सर्वर में एक इंटरनेट गेटवे जोड़ें।

  • आवश्यक IP के लिए केवल विशिष्ट डेटाबेस पोर्ट की अनुमति दें।

तब हम डेटाबेस सर्वर को सुरक्षित तरीके से एक्सेस करने के लिए SSH टनलिंग बना सकते हैं।

SELinux

SELinux कर्नेल संशोधनों और यूजर स्पेस टूल्स का एक सेट है और इसमें कुछ नीति मॉड्यूल हैं। नीति मॉड्यूल SELinux संदर्भ हैं जो नियमों को परिभाषित करते हैं कि कैसे प्रक्रियाएं, फाइलें, पोर्ट और अन्य सिस्टम ऑब्जेक्ट एक दूसरे के साथ इंटरैक्ट करते हैं। सिस्टम ऑब्जेक्ट के बीच सहभागिता की अनुमति केवल तभी दी जाती है जब कोई नीति नियम अनुमति देता है।

सिस्टम उपयोगकर्ता काफी हद तक SELinux से अनजान होंगे। केवल सिस्टम प्रशासकों को यह विचार करने की आवश्यकता है कि उनके सर्वर वातावरण के लिए नीति कितनी सख्त है। यह विवरण SELinux कर्नेल को संपूर्ण सिस्टम पर पूर्ण, बारीक नियंत्रण देता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समान परिणाम कैसे खोजें और समानता के आधार पर छाँटें?

  2. MySQL एक कॉलम DISTINCT का चयन करें, इसी अन्य कॉलम के साथ

  3. GROUP_CONCAT सीमा के साथ

  4. MySQL कई मानों की तरह

  5. MySQL में एक संयोजित स्ट्रिंग में एक सेपरेटर कैसे जोड़ें - CONCAT_WS ()