जैसा कि SQL सर्वर सर्वोत्तम प्रथाओं का कहना है, " Windows प्रमाणीकरण मोड SQL प्रमाणीकरण से अधिक सुरक्षित है "। और अब मैं जानना चाहता हूं: क्या विंडोज व्यवस्थापक अधिकारों के साथ उपयोगकर्ता से SQL सर्वर की रक्षा करने का एक तरीका है?
जैसा कि SQL सर्वर सर्वोत्तम प्रथाओं का कहना है, " Windows प्रमाणीकरण मोड SQL प्रमाणीकरण से अधिक सुरक्षित है "। और अब मैं जानना चाहता हूं: क्या विंडोज व्यवस्थापक अधिकारों के साथ उपयोगकर्ता से SQL सर्वर की रक्षा करने का एक तरीका है?
जवाबों:
नहीं।
यदि कोई उपयोगकर्ता किसी बॉक्स का विंडोज प्रशासक है, तो मान लें कि वे बॉक्स पर सब कुछ (एसक्यूएल सर्वर सहित) के मालिक हैं। विंडोज प्रशासक अधिकारों के साथ, आपके द्वारा लागू किसी भी लक्षित सुरक्षा को बायपास करने के लिए यह तुच्छ है (जैसे कि एक लॉगऑन ट्रिगर जो उनके उपयोगकर्ता नाम की पहचान करता है), किसी औरNT AUTHORITY\SYSTEM
को प्रतिरूपित करके (जिसमें सभी स्थानीय SQL सर्वर इंस्टेंसेस पर वास्तविक प्रशासन अधिकार प्राप्त होता है )। ऑडिट करने से बहुत मदद नहीं मिलेगी, क्योंकि वे आसानी से इसे बंद कर सकते हैं, लेकिन आपके पास यह होना चाहिए।
यदि आप किसी पर भरोसा नहीं करते हैं, तो उन्हें विंडोज प्रशासक के अधिकार, अवधि न दें।
नहीं, स्थानीय व्यवस्थापकों को sysadmin
SQL सर्वर आवृत्ति तक पहुँच प्राप्त करने से पूरी तरह से रोकना संभव नहीं है ।
यदि उदाहरण को एकल-उपयोगकर्ता मोड में पुनरारंभ किया जाता है , तो स्थानीय व्यवस्थापक sysadmin
विशेषाधिकारों की अनुमति देने के लिए SQL सर्वर को हार्ड-कोड किया जाता है , भले ही एक स्पष्ट लॉगिन न हो। यह मौजूद कारण पुनर्प्राप्ति उद्देश्यों के लिए है क्योंकि किसी उदाहरण से स्वयं को लॉक करना संभव है।
कहा कि, बहु उपयोगकर्ता मोड में चल रहा है (कोई सेवा रुकावट के साथ) पहुँच को प्रतिबंधित करना उतना मुश्किल नहीं है। जैसा कि आरोन ने उल्लेख किया है, स्थानीय प्रशासक प्रतिरूपण कर सकते हैं NT AUTHORITY\SYSTEM
, जो डिफ़ॉल्ट रूप sysadmin
से SQL Server 2008 में एक- लॉगिन लॉगिन बनाया गया है। सर्वर के चलने के दौरान पहुंच को पुनर्प्राप्त करने के लिए इसका फायदा उठाया जा सकता हैsysadmin
। (नोट: SQL सर्वर 2012 में, यह लॉगिन अब नहीं है sysadmin
।) मुझे नहीं पता कि यह लॉगिन वास्तव में क्या उपयोग किया जाता है (उन्नयन / हॉट फ़िक्सेस / आदि, संभवतः), लेकिन मुझे लगता है कि इसके अलावा इसे अक्षम करना सुरक्षित है उन घटनाओं। यदि कोई अन्य अवैयक्तिक लॉगिन नहीं हैं, तो उपयोग को अस्वीकार करने के लिए पर्याप्त होना चाहिए। फिर, केवल अगर उदाहरण चल रहा है, अबाधित ।
SQL 2008 और 2012 में डिफ़ॉल्ट रूप से, SQL सर्वर के लिए Windows व्यवस्थापकों के लिए कोई डिफ़ॉल्ट पहुँच नहीं है। Windows व्यवस्थापक के लिए (अर्थात, कोई व्यक्ति जो या तो एक डोमेन प्रशासक या स्थानीय प्रशासक है) का उपयोग करने के लिए, उनके लॉगिन को स्पष्ट रूप से एक्सेस की आवश्यकता है या वे समूह जो उन्हें SQL सर्वर के भीतर अधिकारों के साथ दी गई पहुंच से संबंधित हैं। एक सक्रिय निर्देशिका लॉगिन या समूह को एक व्यवस्थापक के रूप में निर्दिष्ट करने के लिए, उदाहरण सेट करते समय आपको आवश्यक है, लेकिन वह लॉगिन / समूह आपके डोमेन में कोई भी हो सकता है।
SQL 2005 में, BUILTIN\Administrators
sysadmin एक्सेस अधिकारों के साथ एक समूह था । यह समूह स्थानीय प्रशासक sysadmin को SQL सर्वर तक पहुँच की अनुमति देगा। इस समूह को SQL सर्वर से हटाया जा सकता है और ऐसा करने के लिए इसे सर्वोत्तम अभ्यास माना जाता था।
कहा जा रहा है कि, विंडोज (स्थानीय या डोमेन) को उस सर्वर को प्रभावित करने से रोकने का कोई तरीका नहीं है जो SQL सर्वर पर रहता है। इसका अर्थ है कि व्यवस्थापक अभी भी सेवाओं और OS स्तर कॉन्फ़िगरेशन, परिवर्तन निर्देशिका सुरक्षा और अन्य OS स्तर कार्यों को प्रभावित कर सकते हैं। यह, आखिरकार, वे विंडोज प्रशासक क्यों हैं।
सामान्य तौर पर, आपको अपने प्रशासक, SQL सर्वर और विंडोज दोनों पर भरोसा करना चाहिए। जबकि Windows व्यवस्थापक टास्क या एक्सेस डेटा (डिफ़ॉल्ट रूप से) SQL सर्वर के भीतर नहीं कर सकते, वे अभी भी उस वातावरण को नियंत्रित करते हैं जिसमें आपका SQL सर्वर रहता है। आपको उन भूमिकाओं पर ध्यान देने की आवश्यकता है, जिन्हें आप असाइन करते हैं।