कल मैंने यह सवाल कई डेटाबेस के dbo बदलने के बारे में पूछा जो मेरे पास हैं। परिवर्तन समझ में आता है, लेकिन मैं स्पष्ट होना चाहता हूं।
क्या कोई कारण, अच्छा कारण या परिस्थिति है कि मुझे [sa] डेटाबेस का dbo सेट क्यों नहीं करना चाहिए ?
कल मैंने यह सवाल कई डेटाबेस के dbo बदलने के बारे में पूछा जो मेरे पास हैं। परिवर्तन समझ में आता है, लेकिन मैं स्पष्ट होना चाहता हूं।
क्या कोई कारण, अच्छा कारण या परिस्थिति है कि मुझे [sa] डेटाबेस का dbo सेट क्यों नहीं करना चाहिए ?
जवाबों:
SA को डेटाबेस का मालिक बनाना वास्तव में कई चीजों को सरल और / या हल करता है, लेकिन कुछ सुरक्षा निहितार्थ हो सकते हैं।
विशेष रूप से, याद रखें कि यदि एसए एक डेटाबेस का मालिक है, तो dbo = 'SA'
। इसका मतलब यह है कि, अन्य बातों के अलावा, [dbo] स्कीमा (जो कि डिफ़ॉल्ट है) में कोई भी प्रक्रिया, जिसमें "EXECUTE As Owner" है, वास्तव में SA के रूप में निष्पादित हो रहे हैं। यह उतना बुरा नहीं है जितना यह लगता है, क्योंकि जब तक आपने डेटाबेस को TRUSTWORTHY के रूप में चिह्नित नहीं किया है, तब तक SQL सर्वर डेटाबेस से बाहर एक सत्र या कार्य को उस तरह के प्रतिरूपण सर्वर-स्तरीय प्रिंसिपल के साथ नहीं होने देगा।
जो अगले बिंदु को लाता है: कभी भी ऐसे डेटाबेस को TRUSTWORTHY के रूप में चिह्नित न करें, जब तक कि आप वास्तव में नहीं हैं , वास्तव में सुनिश्चित करें कि यह सुरक्षित है। क्योंकि [dbo] स्कीमा में प्रक्रियाएं बनाने की क्षमता वाला कोई भी व्यक्ति, यदि वे चाहें, तो पूरे सर्वर पर SA के रूप में निष्पादित कर सकते हैं।
एक और मुद्दा सामने आ सकता है क्योंकि कई उत्पादों और अनुप्रयोगों के पास अपना स्वयं का SQL सर्वर डेटाबेस होता है, अक्सर निर्दिष्ट करते हैं कि उनके अनुप्रयोग लॉगिन को डेटाबेस का DBO होना चाहिए। जाहिर है कि आप यह निर्धारित कर सकते हैं कि उनके आवेदन को लॉगिन करके 'SA' बनाया जाए। उम्मीद है, यह भी स्पष्ट है कि आपको कभी ऐसा नहीं करना चाहिए, जब तक कि SQL सर्वर इंस्टेंस का उपयोग किसी और चीज के लिए नहीं किया जाता है (तब भी, मैं इसके खिलाफ सिफारिश करूंगा)।