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

MySQL को सुरक्षित करना - सुरक्षित इंस्टालेशन के लिए डेटा एक्सेस विशेषाधिकारों का उपयोग करना

MySQL इंस्टालेशन सुरक्षा एक ऐसी चीज है जो प्रत्येक MySQL DBA के दिमाग में होनी चाहिए। जबकि हमने चर्चा की है कि आपको पूरी तरह से अपनी MySQL सुरक्षा का ध्यान कैसे रखना चाहिए (हमारी कुछ पिछली पोस्टों पर एक नज़र डालें, विशेष रूप से MySQL सुरक्षा श्रृंखला भाग एक और भाग दो), हमने विशिष्ट सुरक्षा-संबंधी मुद्दों पर चर्चा नहीं की है, विशेषाधिकारों से संबंधित वे मुद्दे शामिल हैं। हम यहां ऐसा करते हैं।

MySQL में विशेषाधिकार क्या हैं?

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

MySQL सुरक्षा के लिए विशेषाधिकारों का उपयोग कैसे करें

MySQL में विशेषाधिकारों का उपयोग करने के लिए, आपको यह याद रखना होगा:

  • विशेषाधिकार सौंपने या रद्द करने के लिए, आपके पास एक MySQL उपयोगकर्ता होना चाहिए। उपयोगकर्ता बनाएं क्वेरी चलाकर उपयोगकर्ता बनाए जा सकते हैं:
     

    CREATE USER ‘demouser’@’localhost’ IDENTIFIED BY ‘password’;

  • विशेषाधिकार सौंपने या निरस्त करने के लिए, क्रमशः GRANT और REVOKE कथनों का उपयोग करें:
     

    GRANT ALL ON demo_db.* TO ‘demouser’@’localhost’;
    REVOKE INSERT ON *.* FROM ‘demouser’@’localhost’;

  • आप FLUSH PRIVILEGES चलाकर विशेषाधिकारों को बचा सकते हैं। SHOW GRANTS चलाकर उन्हें देखें।

  • अनुदान विवरण का उपयोग विशेषाधिकार और भूमिका दोनों प्रदान करने के लिए नहीं किया जा सकता है; बयान को या तो विशेषाधिकार या भूमिकाएं देनी चाहिए।

अपने MySQL इंस्टॉलेशन को अधिक सुरक्षित बनाने के लिए, निम्नलिखित पर विचार करें:

  • केवल अपने उपयोगकर्ताओं को उनके कार्यों को पूरा करने के लिए आवश्यक विशेषाधिकार प्रदान करें (उदाहरण के लिए, GRANT ALL का उपयोग न करें यदि ऐसा है जरूरी नहीं)

  • सामान्य तौर पर, MySQL को यूनिक्स रूट उपयोगकर्ता के रूप में चलाने से बचें क्योंकि FILE विशेषाधिकार वाला कोई भी उपयोगकर्ता इसका कारण बन सकता है सर्वर फ़ाइलों को रूट के रूप में बनाने के लिए।

  • उन उपयोगकर्ताओं को FILE विशेषाधिकार न दें जो व्यवस्थापक नहीं हैं (उपरोक्त स्पष्टीकरण देखें)

  • mysqld को एक सामान्य गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चलाने पर विचार करें।

  • उन उपयोगकर्ताओं को प्रोसेस या सुपर विशेषाधिकार न दें जो व्यवस्थापक नहीं हैं। PROCESS विशेषाधिकार उपयोगकर्ता को MySQL में चल रही सभी प्रक्रियाओं को देखने की अनुमति देता है। सुपर विशेषाधिकार, अन्य बातों के अलावा, सर्वर कॉन्फ़िगरेशन परिवर्तन को सक्षम बनाता है, सर्वर, सर्वर और ड्रॉप सर्वर स्टेटमेंट का उपयोग करने में सक्षम बनाता है, और किल स्टेटमेंट के उपयोग को भी सक्षम बनाता है जिससे उपयोगकर्ता अन्य खातों से संबंधित स्टेटमेंट को मार सकता है। ध्यान रखें कि MySQL सुपर विशेषाधिकार वाले उपयोगकर्ताओं के लिए एक अतिरिक्त कनेक्शन सुरक्षित रखता है। सुपर विशेषाधिकार उपयोगकर्ता को प्रतिकृति सर्वर को नियंत्रित करने देता है।

उपरोक्त सलाह का पालन करें और आपको अधिक सुरक्षित MySQL स्थापना के लिए अपने पथ पर अच्छी तरह से होना चाहिए। हालाँकि, यदि आप MySQL के एक नए संस्करण का उपयोग कर रहे हैं, तो एक और बात है जिससे हमें अवगत होना चाहिए - MySQL ने MySQL 8.0.16 में भूमिकाएँ पेश की हैं।

MySQL सुरक्षा में भूमिकाएं

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

CREATE ROLE [IF NOT EXISTS] ‘role_1’;
GRANT SELECT ON db_name.* TO user_name;
GRANT role_1 TO [email protected];

आपको कौन से विशेषाधिकार प्रदान करने चाहिए?

विशेषाधिकार प्रदान करते समय, कम से कम विशेषाधिकार के सिद्धांत का पालन करें:एक MySQL खाते को केवल इसके उद्देश्यों के लिए आवश्यक विशेषाधिकार दिए जाने चाहिए। सबसे अधिक उपयोग किए जाने वाले विशेषाधिकार हैं:

  • सभी विशेषाधिकार जो किसी खाते को सभी विशेषाधिकार प्रदान करते हैं।

  • CREATE डेटाबेस और टेबल बनाने के लिए आवश्यक विशेषाधिकार प्रदान करता है।

  • DROP डेटाबेस और तालिकाओं को छोड़ने के लिए आवश्यक विशेषाधिकार प्रदान करता है।

  • DELETE टेबल से पंक्तियों को हटाने के लिए आवश्यक विशेषाधिकार प्रदान करता है।

  • INSERT तालिका में पंक्तियों को सम्मिलित करने के लिए आवश्यक विशेषाधिकार प्रदान करता है।

  • SELECT क्वेरी को चलाने के लिए आवश्यक विशेषाधिकार प्रदान करता है।

  • अद्यतन तालिका में पंक्तियों को अद्यतन करने के लिए आवश्यक विशेषाधिकार प्रदान करता है (अपडेट क्वेरी चलाने के लिए)

सामान्य तौर पर, किसी खाते को सभी विशेषाधिकार देने से बचना एक अच्छा विचार है; इसके बजाय, कम से कम विशेषाधिकार के सिद्धांत का पालन करने पर विचार करें। यह भी ध्यान रखें कि किसी खास उपयोगकर्ता को अतिरिक्त विशेषाधिकार देने से वे विशेषाधिकार नहीं हटते जो पहले थे। आप इस सिंटैक्स का उपयोग करके किसी विशिष्ट उपयोगकर्ता के विशेषाधिकार भी देख सकते हैं (उपयोगकर्ता नाम को अपने उपयोगकर्ता के उपयोगकर्ता नाम से बदलें):

SHOW GRANTS FOR ‘username’;

सारांश

MySQL में विशेषाधिकारों के साथ काम करते समय, ध्यान रखें कि आपको कम से कम विशेषाधिकार के सिद्धांत का पालन करना चाहिए (यानी, केवल आवश्यक विशेषाधिकार देना)। इस ब्लॉग में उल्लिखित सलाह का पालन करने से आपके MySQL इंस्टॉलेशन को और अधिक सुरक्षित बनाने में मदद मिलेगी। याद रखें कि प्रभावी होने के लिए आपके विशेषाधिकारों को सहेजने की आवश्यकता है (FLUSH PRIVILEGES कथन आपको ऐसा करने में मदद कर सकता है), इसके अलावा, ध्यान रखें कि MySQL 8.0.16 से आप MySQL में भूमिकाओं का उपयोग कर सकते हैं ताकि विशेषाधिकारों के सेट को असाइन किया जा सके। विशिष्ट उपयोगकर्ता।

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


  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. मारियाडीबी में SIN () कैसे काम करता है

  3. Amazon RDS पॉइंट-इन-टाइम रिकवरी की तुलना ClusterControl से करना

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

  5. MySQL में साझा तालिका के लिए परीक्षण डेटा उत्पन्न करने के लिए Sysbench का उपयोग करना