सर्वर सुरक्षा मुख्य रूप से इस बात पर निर्भर करती है कि आप ऑब्जेक्ट्स पर एक्सेस अनुमतियों को कितनी सही तरीके से कॉन्फ़िगर कर सकते हैं। किसी उपयोगकर्ता को अत्यधिक अनुमतियां प्रदान करने से कई समस्याएं हो सकती हैं। नहीं, कोई उपयोगकर्ता आपकी त्रुटियों का उपयोग नहीं करेगा। इसके बजाय, कोई भी हैकर या मैं ऐसा करूंगा। इस मामले में, आप डेटा या संपूर्ण डेटाबेस के साथ अपनी तालिकाओं के बारे में भूल सकते हैं।
किसी कारण से, डेटाबेस की सुरक्षा बाहर से सुरक्षा है, जैसे हैकर। हालाँकि, ऐसा बहुत कम ही होता है। मैं एक बड़ी कंपनी में प्रोग्रामर हूं और एक व्यवस्थापक सर्वर पोर्ट की सुरक्षा के बारे में सोचता भी नहीं है, जहां सब कुछ खुला है। एक सर्वर पर डेटाबेस, प्रोग्राम और यहां तक कि एक FTP सर्वर का एक गुच्छा है और इसे पिछले 5 वर्षों में कभी भी हैक नहीं किया गया है। सौभाग्य से, मैंने व्यवस्थापक को एक अलग हार्डवेयर पर वेब सर्वर को परिनियोजित करने के लिए राजी किया। अन्यथा, अगर किसी को हमारे मुख्य सर्वर का आईपी पता पता होता, तो कोई भी स्लैकर उसे हैक कर सकता था। कई वर्षों से न तो डेटाबेस और न ही विंडोज़ को पैच किया गया है।
हालांकि, गलत सुरक्षा नीति के कारण हर दिन आंतरिक मुद्दे उठते हैं। सभी उपयोगकर्ता व्यवस्थापक अधिकारों के साथ लॉग इन करते हैं और अपनी इच्छानुसार कुछ भी बना सकते हैं। यह एक वास्तविक समस्या है क्योंकि अत्यधिक अनुमतियाँ स्लैकर्स को अपनी पूर्ण निरक्षरता दिखाने की अनुमति देती हैं। इसलिए, हम सुरक्षा पर विचार करेंगे, भले ही खतरा कहीं से भी आए - किसी हैकर से या किसी उपयोगकर्ता से।
इस लेख में, हम हैकर्स और उपयोगकर्ताओं दोनों से सुरक्षा सुरक्षा के सभी आवश्यक बुनियादी बातों पर विचार करने जा रहे हैं। मैंने MS SQL सर्वर को एक उदाहरण के रूप में चुना क्योंकि इसमें अन्य डेटाबेस (Oracle, MySQL, आदि) में उपलब्ध सब कुछ शामिल है और इसमें अतिरिक्त सुरक्षा प्रबंधन क्षमताएं हैं। कोई सोच सकता है कि यह एमएस को तेज बनाता है। हालांकि, कभी-कभी, अतिरिक्त सुविधाएं अत्यधिक हो सकती हैं, जिससे समस्याएं हो सकती हैं।
सर्वर भूमिकाएं
विंडोज़ और अन्य ऑपरेटिंग सिस्टम में, अनुमतियों को प्रबंधित करने के लिए समूह और उपयोगकर्ता होते हैं। हम उपयोगकर्ताओं को एक समूह में जोड़ सकते हैं और उन सभी को एक ही बार में अधिकार प्रदान कर सकते हैं, जो प्रत्येक उपयोगकर्ता को व्यक्तिगत रूप से अधिकार प्रदान करने से कहीं अधिक आसान है। इन उद्देश्यों के लिए, डेटाबेस में "भूमिका" की अवधारणा है।
मान लें कि 100 उपयोगकर्ताओं के पास किसी विशिष्ट तालिका से डेटा पढ़ने की अनुमति है। प्रत्येक उपयोगकर्ता को यह अनुमति प्रदान करना एक परेशानी है। ऐसी भूमिका बनाना बहुत आसान है जिसे पढ़ने की अनुमति है, और फिर इसमें सभी आवश्यक उपयोगकर्ता जोड़ें। परिणाम समूहीकरण के समान है।
SQL सर्वर में, दो प्रकार की भूमिकाएँ होती हैं:सर्वर और डेटाबेस। सर्वर भूमिकाएँ पूर्व-निर्धारित होती हैं और इन्हें बदला नहीं जा सकता।
एंटरप्राइज़ मैनेजर में सुरक्षा/सर्वर भूमिका शाखा खोलें ताकि आप विंडो के दाहिने हिस्से में उपलब्ध भूमिकाओं की सूची देख सकें। विवरण परिभाषित करता है कि उपयोगकर्ता संबंधित भूमिका के साथ क्या कर सकता है।
MS SQL सर्वर और भूमिका प्रबंधक विंडो में सर्वर भूमिकाएँ
किसी मौजूदा उपयोगकर्ता को किसी भूमिका में जोड़ने के लिए, भूमिका पंक्ति पर डबल-क्लिक करें। दिखाई देने वाली विंडो में, आप उपयोगकर्ताओं को भूमिका में जोड़ सकते हैं या उन्हें हटा सकते हैं। अनुमति टैब विवरण में वर्णन करता है कि प्रत्येक उपयोगकर्ता क्या कर सकता है।
उपयोगकर्ता
उपयोगकर्ताओं को प्रबंधित करने के लिए, एंटरप्राइज़ प्रबंधक में सुरक्षा/लॉगिन शाखा खोलें। दाहिने हिस्से में, आपको सभी सर्वर उपयोगकर्ताओं की एक सूची दिखाई देगी। डिफ़ॉल्ट रूप से, डोमेन व्यवस्थापकों और अंतर्निहित लॉगिन खातों जैसे sa.
एक नया उपयोगकर्ता जोड़ने के लिए, विंडो के खाली दाहिने हिस्से में कहीं भी राइट-क्लिक करें और दिखाई देने वाले मेनू में नया लॉगिन चुनें। विंडो के सबसे ऊपर, एक उपयोगकर्ता नाम चुनें। यदि आपको कोई मौजूदा डोमेन या कंप्यूटर उपयोगकर्ता चुनना है, तो इनपुट फ़ील्ड के दाईं ओर (…) बटन पर क्लिक करें और आप डोमेन में उपयोगकर्ता खोज बॉक्स देखेंगे।
नया उपयोगकर्ता जोड़ना
नीचे, आप प्रमाणीकरण के प्रकार का चयन कर सकते हैं - विंडोज या एसक्यूएल सर्वर। यदि आप विंडोज का चयन करते हैं, तो आपको पासवर्ड निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि सर्वर इसे सिस्टम से प्राप्त करेगा। हालाँकि, आप या तो ग्रांट एक्सेस (परमिट एक्सेस) या इनकार एक्सेस (निषिद्ध) को टॉगल कर सकते हैं। बाद के मामले में, उपयोगकर्ता डेटाबेस में पंजीकृत होगा, लेकिन वे कनेक्ट करने में सक्षम नहीं होंगे - यह निषिद्ध है।
यदि आप SQL सर्वर प्रमाणीकरण का चयन करते हैं, तो आपको एक पासवर्ड सेट करने की आवश्यकता होगी क्योंकि इस मामले में, यह डेटाबेस सर्वर के सिस्टम टेबल में संग्रहीत किया जाएगा। कृपया ध्यान दें कि भले ही सर्वर सेटिंग्स में केवल विंडोज प्रमाणीकरण निर्दिष्ट किया गया हो, आप SQL सर्वर रिकॉर्ड बना सकते हैं, लेकिन आप इन रिकॉर्ड्स के साथ सिस्टम में लॉग इन नहीं कर पाएंगे।
सर्वर भूमिका टैब पर, आप निर्दिष्ट कर सकते हैं कि उपयोगकर्ता को कौन सी सर्वर भूमिका प्रदान की जाएगी। इसलिए, निर्माण के चरण में भी, आप उपयोगकर्ताओं को आवश्यक भूमिकाओं में जोड़ सकते हैं।
डेटाबेस तक उपयोगकर्ता पहुंच
डेटाबेस एक्सेस टैब पर, उन डेटाबेस को निर्दिष्ट करें जिनके साथ उपयोगकर्ता काम कर सकता है। यहां, विंडो को दो भागों में विभाजित किया गया है:ऊपरी आधे हिस्से में, आप उस डेटाबेस का चयन कर सकते हैं जिस तक पहुंच की अनुमति है, और नीचे की सूची में, आप डेटाबेस भूमिका का चयन कर सकते हैं। डेटाबेस में यह भूमिका उपयोगकर्ता अनुमतियों को परिभाषित करेगी। एक उपयोगकर्ता को कई भूमिकाएँ दी जा सकती हैं।
एक खाता qq बनाएँ, जिसकी नॉर्थविंड डेटाबेस तक पहुँच होगी। यह सर्वर परिनियोजित करते समय बनाया गया एक मानक परीक्षण डेटाबेस है।
परिवर्तन सहेजें।
अब, डेटाबेस/नार्थविंड/उपयोगकर्ता शाखा खोलें और उन उपयोगकर्ताओं की सूची देखें जिन्हें चयनित डेटाबेस तक पहुंचने की अनुमति है। कृपया ध्यान दें कि यहाँ qq खाता है। अन्य डेटाबेस में कोई खाता नहीं है क्योंकि हमारे नए उपयोगकर्ता के लिए उन तक पहुंच प्रतिबंधित है।
डेटाबेस भूमिकाएं
प्रत्येक डेटाबेस की अपनी भूमिकाएँ हो सकती हैं, जो वस्तुओं पर पहुँच अनुमतियों को परिभाषित करती हैं। कई व्यवस्थापक इन अनुमतियों से परेशान होना पसंद नहीं करते हैं। इस प्रकार, वे बिल्ट-इन डिफॉल्ट पब्लिक को स्थापित करते हैं, जो लगभग हर चीज की अनुमति देता है। यदि सार्वजनिक भूमिका के लिए अनुमतियों की कमी है, तो बस एक उपयोगकर्ता को सिस्टम प्रशासक सर्वर भूमिका में जोड़ें। इस स्थिति में, डेटाबेस असुरक्षित हो जाता है।
प्रत्येक उपयोगकर्ता को अपनी और आवश्यक अनुमतियां प्रदान की जानी चाहिए। जिसकी अनुमति नहीं है उसे प्रतिबंधित किया जाना चाहिए। सर्वर पर पहले से मौजूद भूमिकाओं का उपयोग नहीं किया जाना चाहिए क्योंकि उनकी अनुमति सभी के लिए खुली है। यहां तक कि उन सभी को हटाने की अनुशंसा की जाती है, विशेष रूप से सार्वजनिक रूप से।
भूमिका बनाना
एक नई डेटाबेस भूमिका बनाने के लिए, डेटाबेस/डेटाबेस नाम/भूमिका शाखा पर राइट-क्लिक करें। दिखाई देने वाले मेनू में, नई डेटाबेस भूमिका चुनें। डेटाबेस भूमिका गुण - नई भूमिका विंडो खुलती है। विंडो के ऊपरी भाग में, भूमिका का नाम टाइप करें।
उदाहरण के लिए, हम एकाउंटेंट के लिए एक भूमिका बनाना चाहते हैं। ऐसा करने के लिए, नाम फ़ील्ड में Buh टाइप करें।
डेटाबेस भूमिका बनाना
नीचे, एक भूमिका प्रकार चुनें, उदाहरण के लिए, एक मानक डिफ़ॉल्ट प्रकार। विंडो के केंद्र में, उन उपयोगकर्ताओं की सूची है जिन्हें भूमिका में जोड़ा जाएगा। अब तक, सूची खाली है। हालाँकि, यदि हम जोड़ें पर क्लिक करते हैं, तो हम उपयोगकर्ताओं को जोड़ देंगे, उदाहरण के लिए, पहले बनाए गए qq खाते में। भूमिका बनाने के चरण में और कुछ नहीं करना है। ओके पर क्लिक करके बदलाव सेव करें।
पहुंच अनुमतियां
अब, हम यह देखने जा रहे हैं कि हम अनुमतियाँ कैसे सेट कर सकते हैं। संपादन के लिए विंडो खोलने के लिए बनाई गई Buh भूमिका पर डबल-क्लिक करें। कृपया ध्यान दें कि अनुमति बटन अब उपलब्ध है। डेटाबेस में भूमिका पंजीकृत होने पर ही हम इसके अधिकारों को बदल सकते हैं। डेटाबेस भूमिका गुण विंडो खोलने के लिए इस बटन पर क्लिक करें।
भूमिकाओं के लिए एक्सेस अनुमतियां सेट करना
विंडो के शीर्ष पर, डेटाबेस भूमिकाओं की एक सूची है ताकि आप उनके बीच शीघ्रता से स्विच कर सकें। अब, Buh भूमिका का चयन किया गया है। विंडो के बीच में, निम्नलिखित कॉलम के साथ एक बड़ा ग्रिड है:
- वस्तु - वस्तुओं के नाम;
- स्वामी - किसी वस्तु का स्वामी;
- चुनें - डेटा देखने या सेलेक्ट स्टेटमेंट को निष्पादित करने की अनुमति। यह केवल टेबल और व्यू के लिए उपलब्ध है;
- INSERT - डेटा जोड़ने या INSERT स्टेटमेंट को निष्पादित करने की अनुमति। यह केवल टेबल और व्यू के लिए उपलब्ध है;
- अद्यतन - डेटा को संशोधित करने या अद्यतन विवरण निष्पादित करने की अनुमति। यह केवल टेबल और व्यू के लिए उपलब्ध है;
- डेटा हटाने या DELETE कथन निष्पादित करने की अनुमति हटाएं। यह केवल टेबल और व्यू के लिए उपलब्ध है;
- EXEC - संग्रहीत प्रक्रियाओं और कार्यों को निष्पादित करने की अनुमति। यह केवल संग्रहित प्रक्रियाओं और कार्यों के लिए उपलब्ध है;
- डीआरआई (घोषणात्मक संदर्भात्मक अखंडता)। यह केवल टेबल, व्यू और फंक्शन के लिए उपलब्ध है।
नई भूमिका के लिए कोई अनुमति नहीं है। तालिका देखने में सक्षम होने के लिए, उदाहरण के लिए, श्रेणियाँ, श्रेणियाँ पंक्ति और चयन कॉलम के चौराहे पर स्थित बॉक्स को चेक करें। आपको बॉक्स में एक हरे रंग का टिक दिखाई देगा, जिसका अर्थ है अनुमति। दूसरा क्लिक टिक को रेड क्रॉस मार्क में बदल देता है और इसका अर्थ है निषेध। यह आवश्यक हो सकता है यदि आप उपयोगकर्ता को अनुमति देते हैं और उन्हें किसी अन्य भूमिका में जोड़ते हैं, जहां चयनित कार्रवाई तक पहुंच की अनुमति है। तीसरा क्लिक कार्रवाई पर किसी भी अनुमति को हटा देता है और बॉक्स को खाली छोड़ देता है। इसका मतलब है कि कोई पहुंच नहीं है; हालांकि, यदि उपयोगकर्ता को ऑब्जेक्ट पर अनुमतियों के साथ किसी अन्य भूमिका में जोड़ा जाता है या अनुमति स्पष्ट रूप से निर्दिष्ट की जाती है तो इसे प्रत्यायोजित किया जा सकता है।
यदि आप तालिका या दृश्य के ऑब्जेक्ट के साथ एक पंक्ति का चयन करते हैं, तो विंडो के नीचे कॉलम बटन उपलब्ध हो जाता है। मान लें कि आपने तालिका का चयन किया है और इस बटन पर क्लिक किया है। विंडो खुलती है, जिसमें आप अलग-अलग टेबल कॉलम के लिए अनुमतियां सेट कर सकते हैं।
स्तंभ अनुमतियां सेट करना
यह वास्तव में एक बड़ी संभावना है क्योंकि डेटाबेस अखंडता के लिए जिम्मेदार कुछ कॉलम उपयोगकर्ताओं या हैकर्स द्वारा नहीं बदले जाने चाहिए। इन स्तंभों के लिए अद्यतन या चयन संचालन (यदि संभव हो) को मना करना बेहतर है।
व्यक्तिवाद
भूमिकाओं का उपयोग करना सुविधाजनक होता है जब समान उपयोगकर्ताओं को संयोजित करना आवश्यक हो। उदाहरण के लिए, कई लेखाकारों को वित्तीय तालिकाओं तक पहुंच प्राप्त करने की आवश्यकता होती है। प्रत्येक लेखाकार को अनुमति प्रदान करने में समय लगता है। लेखाकार के लिए भूमिका बनाना, उसे अनुमति देना और फिर सभी लेखा खातों को इस भूमिका में जोड़ना बहुत आसान है।
हालांकि, ऐसे मामले हैं जब उपयोगकर्ता के लिए अनुमतियां अद्वितीय होनी चाहिए, या भूमिका द्वारा दी गई अनुमतियों के अतिरिक्त, अतिरिक्त अनुमतियां देना आवश्यक है। उदाहरण के लिए, एकाउंटेंट में से एक को मानव संसाधन विभाग की टेबल तक पहुंच की आवश्यकता होती है। इस मामले में, नई भूमिका बनाने के बजाय सीधे एकाउंटेंट को अनुमतियाँ जोड़ना बेहतर है।
हमने उनकी आदत डालने के लिए पहले भूमिकाओं का पता लगाया। ज्यादातर मामलों में, लेखाकारों के लिए एक अलग खाता, अर्थशास्त्रियों के लिए एक अलग खाता आदि होता है। इस मामले में, अधिकांश लोग एक खाते का उपयोग करके सर्वर से जुड़ते हैं। इस प्रकार, जो असंभव है उसे नियंत्रित करने के लिए। जहां आवश्यक हो, व्यक्तिगत अनुमतियों का उपयोग करना बेहतर है, जबकि प्रत्येक उपयोगकर्ता का अपना खाता होना चाहिए।
टेबल पर अनुमतियां
आइए देखें कि हम टेबल पर, उदाहरण के लिए, विशेष वस्तुओं पर अनुमति कैसे दे सकते हैं।
ऑब्जेक्ट ट्री में डेटाबेस/नॉर्थविंड/टेबल्स शाखा का चयन करें। दाहिने हिस्से में, सभी तालिकाओं की एक सूची खुलती है। किसी भी तालिका पर राइट-क्लिक करें और सभी कार्यों/अनुमतियों को प्रबंधित करें चुनें। अनुमति गुण विंडो खुलती है, जो डेटाबेस भूमिका गुण विंडो के समान है जिसमें वस्तुओं की सूची के बजाय उपयोगकर्ताओं की सूची होती है। ऑब्जेक्ट एक टेबल है जिसे हमने क्लिक किया है और उसका नाम विंडो के ड्रॉप-डाउन मेनू में सूचीबद्ध होगा। अब, हमें अलग-अलग उपयोगकर्ताओं के लिए इस ऑब्जेक्ट पर अनुमतियां सेट करने की आवश्यकता है।
टेबल पर अनुमतियां सेट करना
अनुमतियों की सूची इस प्रकार है:देखें, अपडेट करें, जोड़ें, हटाएं, निष्पादित करें और प्रबंधित करें। यदि आप कॉलम बटन पर क्लिक करते हैं, तो किसी विशेष उपयोगकर्ता के लिए टेबल फ़ील्ड के स्तर पर ऑब्जेक्ट पर अनुमतियाँ सेट करने के लिए विंडो खुलती है।
दृश्य
हमारे पास दो टेबल हैं। उनमें से एक कर्मचारियों की सूची संग्रहीत करता है, जबकि दूसरी तालिका में प्रति माह काम किए गए घंटों की संख्या और प्राप्त मजदूरी (आधिकारिक और छिपी हुई मजदूरी) की जानकारी होती है।
मान लीजिए कि एक कर अधिकारी आपके पास आता है और श्रमिकों की मजदूरी दिखाने के लिए कहता है। इसके अलावा, वे पूछते हैं कि क्या आपने सभी करों का भुगतान किया है। आपको अपनी ओर से कौन-सी कार्रवाइयाँ करने की ज़रूरत है?
पहला प्रस्ताव तीसरी पंक्ति से आया - एक नया उपयोगकर्ता बनाने के लिए जिसे कर्मचारियों और वेतन की सूची सहित तालिकाओं को पढ़ने की अनुमति है। इसके अलावा, आपको छिपे हुए वेतन के साथ कॉलम को बंद करना नहीं भूलना चाहिए। दरअसल, समाधान सही है लेकिन बिल्कुल अप्रभावी है।
सबसे अच्छा विकल्प एक दृश्य बनाना है, एक SQL क्वेरी जो डेटा का चयन करती है। डेटाबेस में, यह एक तालिका की तरह दिखता है। आप क्वेरी और अनुदान अनुमतियों का उपयोग करके SQL डेटा का चयन कर सकते हैं। यह पता चला है कि क्वेरी को क्वेरी के विरुद्ध निष्पादित किया जाएगा।
एक दृश्य बनाने के लिए, निम्न क्वेरी चलाएँ:
CREATE VIEW salary AS SELECT fields for a tax official FROM Employees, Wages WHERE joins
अब, डेटाबेस/नार्थविंड/दृश्य शाखा में एक नई मजदूरी वस्तु है। यदि आप इसे राइट-क्लिक करते हैं और सभी कार्यों/अनुमति प्रबंधित करें का चयन करते हैं, तो अनुमति देने के लिए विंडो खुल जाएगी। कर अधिकारी के लिए एक अनुमति निर्धारित करें और इसे सहेजें। दृश्य की सामग्री की समीक्षा करने के लिए, क्वेरी चलाएँ:
SELECT * FROM salary
जैसा कि आप देख सकते हैं, एक साधारण तालिका तक पहुंच है। कर अधिकारी यह भी सोचेंगे कि वे वास्तविक डेटा देखते हैं। हालांकि, वास्तव में, इस क्वेरी में केवल वही डेटा होगा जिसकी हमें आवश्यकता है।
वास्तविक जीवन में, कर अधिकारी को इतनी आसानी से धोखा नहीं दिया जा सकता क्योंकि वे मूर्ख नहीं हैं। हालाँकि, यह उदाहरण दिखाता है कि दृश्य एक आदर्श सुरक्षा पद्धति हो सकती है। हम उपयोगकर्ताओं को आवश्यक डेटा प्रदर्शित कर सकते हैं और कुछ नहीं। उसी समय, हमारे पास टेबल पर एक्सेस अनुमतियों को प्रभावित किए बिना दृश्य पर अनुमतियों को प्रबंधित करने के लिए सभी उपकरण हैं।
इस प्रकार, एक ही तालिका में अलग-अलग दृश्य अलग-अलग डेटा दिखा सकते हैं। यदि आप एक अतिरिक्त कॉलम दिखाना चाहते हैं, तो क्वेरी में दृश्य जोड़ें। इस मामले में, अनुमतियों को बदलने की कोई आवश्यकता नहीं है।
सिस्टम दृश्य
प्रत्येक डेटाबेस में, सर्वर द्वारा स्वचालित रूप से बनाए गए सिस्टम दृश्य हो सकते हैं। मैं उन पर अनुमति देने की अनुशंसा नहीं करता क्योंकि वे कुछ अतिरिक्त जानकारी दिखा सकते हैं, जो किसी हैकर को अनुमतियां सेट करने या डेटा को नष्ट करने में मदद कर सकती है। सिस्टम दृश्य sys उपसर्ग से शुरू होता है और सिस्टम सूची के प्रकार कॉलम में निर्दिष्ट होता है।
प्रक्रियाएं और कार्य
आधुनिक डेटाबेस सर्वर संग्रहीत कार्यविधियों और कार्यों का समर्थन करते हैं। यह डेटाबेस सर्वर पर निष्पादित डेटाबेस के आधार पर एक PL/SQL या Transact-SQL कोड है। इन प्रक्रियाओं का उपयोग करके, हम सर्वर पर कोई भी ऑपरेशन कर सकते हैं या केवल डेटा का चयन कर सकते हैं, जैसा कि दृश्य में है। हम प्रत्येक प्रक्रिया पर अनुमतियां सेट कर सकते हैं।
भूमिकाओं की समीक्षा करते समय, हम पहले से ही ऑब्जेक्ट्स की सूची में प्रक्रियाओं को देख चुके हैं जिन पर आप अनुमतियां सेट कर सकते हैं और इन पंक्तियों में केवल EXEC कॉलम उपलब्ध है क्योंकि प्रक्रियाओं को केवल निष्पादित किया जा सकता है।
संग्रहीत प्रक्रियाओं और कार्यों को एक विशेष डेटाबेस में संग्रहीत किया जाता है। नॉर्थविंड डेटाबेस की प्रक्रियाओं को देखने के लिए, डेटाबेस/नॉर्थविंड/संग्रहीत प्रक्रिया शाखा का चयन करें। कई सिस्टम प्रक्रियाएं हैं, जिनके नाम dt_ उपसर्ग से शुरू होते हैं और सिस्टम टाइप कॉलम में निर्दिष्ट होता है। यह अनुशंसा की जाती है कि यदि संभव हो तो इन प्रक्रियाओं तक पहुंच प्रदान न करें। आप डेटाबेस/नॉर्थविंड/उपयोगकर्ता परिभाषित फ़ंक्शन शाखा में फ़ंक्शन देख सकते हैं।
प्रक्रियाओं और कार्यों पर अनुमतियाँ बदलने के लिए, इसके नाम पर राइट-क्लिक करें और मेनू में सभी कार्य/अनुमतियाँ प्रबंधित करें चुनें। दिखाई देने वाली विंडो में, आप प्रक्रियाओं के लिए केवल EXEC कॉलम और फ़ंक्शंस के लिए EXEC और DRI कॉलम बदल सकते हैं।
अनुमति नीति
कुछ व्यवस्थापक मौजूदा भूमिका के आधार पर अनुमतियाँ सेट करते हैं, उदाहरण के लिए, सार्वजनिक। यह सच नहीं है, क्योंकि इस भूमिका में, ऐसी अनुमतियाँ हो सकती हैं जिनकी उपयोगकर्ताओं को आवश्यकता नहीं है। इस प्रकार, एक नई अनुमति सेट करने का प्रयास करें।
जहां तक मेरी बात है, मैं हमेशा एक नई भूमिका बनाता हूं और न्यूनतम अनुमतियां देता हूं। यदि उपयोगकर्ता अधिक अनुमति मांगते हैं और वे वास्तव में आवश्यक हैं, तो मैं और अनुमतियां जोड़ता हूं। यदि आप डिफ़ॉल्ट रूप से सब कुछ की अनुमति देते हैं, तो इस बात की कोई गारंटी नहीं है कि भविष्य में अनावश्यक और खतरनाक अधिकार हटा दिए जाएंगे।
कम अनुमतियाँ सेट करने की एक और समस्या एक आदत है। उपयोगकर्ता इस तथ्य के अभ्यस्त हो सकते हैं कि उन्हें कई अनुमतियाँ दी जाती हैं और फिर प्रतिबंध एक गंभीर घोटाले का कारण बनेगा। जब उनके अधिकारों का उल्लंघन होता है तो कोई भी पसंद नहीं करता है।
टेबल्स/डेटाबेस
डेटाबेस अपनी सेटिंग्स और छिपी हुई संपत्तियों को सिस्टम टेबल और डेटाबेस में स्टोर करते हैं। वे अन्य डेटाबेस ऑब्जेक्ट्स से भिन्न नहीं होते हैं और उन पर अनुमतियाँ सेट की जा सकती हैं। किसी भी स्थिति में, उपयोगकर्ताओं को विशेष आवश्यकता के बिना इन तालिकाओं तक पहुँचने की अनुमति न दें।
SQL सर्वर में, महत्वपूर्ण सिस्टम डेटा मास्टर और msdb डेटाबेस में संग्रहीत किया जाता है। इस प्रकार, इन डेटाबेस को संरक्षित किया जाना है। Oracle में, प्रत्येक डेटाबेस एक अलग ऑब्जेक्ट के रूप में मौजूद होता है और सिस्टम टेबल को उपयोगकर्ताओं के साथ एक साथ संग्रहीत किया जाता है।
लगभग सभी डेटाबेस सर्वर परीक्षण डेटाबेस स्थापित करने की पेशकश करते हैं जिनका उपयोग सिस्टम को सीखने या परीक्षण करने के लिए किया जा सकता है। यदि आपके पास ये हैं, तो हटा दें - क्योंकि इन डेटाबेस के लिए एक सार्वजनिक पहुंच सेट है। यदि कोई हैकर सिस्टम में किसी मौजूदा वस्तु के नाम या गुण जानता है, तो यह उनके कार्य को बहुत सरल कर देगा।
परीक्षण डेटाबेस से कनेक्ट करते समय, आप सर्वर पर कुछ कमांड निष्पादित कर सकते हैं और ओएस या एक कार्यशील डेटाबेस को नुकसान पहुंचा सकते हैं। सिस्टम में कोई अतिरिक्त सामान नहीं होना चाहिए। इसके अलावा, ऐसी टेबल/डेटाबेस में अतिथि के लिए भी काफी उच्च अनुमतियां होती हैं।
सारांश
इस तथ्य के बावजूद कि हमने एक उदाहरण के रूप में MS SQL सर्वर का उपयोग किया है, सभी डेटाबेस में अनुमतियों, भूमिकाओं और प्रमाणीकरण की अवधारणाएँ मौजूद हैं।
हमारे द्वारा माने गए सभी नियमों को जानने के लिए, आपको केवल अपने डेटाबेस में उनके उपयोग की ख़ासियत का पता लगाने की आवश्यकता है।