"सर्वर स्थिति देखें" की सुरक्षा और प्रदर्शन निहितार्थ


13

यह प्रश्न बताता है कि विभिन्न DMV (डायनेमिक मैनेजमेंट व्यू) के लिए "सर्वर सर्वर स्टेट" अनुमति की आवश्यकता है, लेकिन मैं इस बारे में कुछ नहीं पा सकता कि आप क्या करते हैं और किसको अनुमति नहीं देना चाहते हैं।

अब निश्चित रूप से मैं "कम से कम अनुमति" को समझता हूं, और आप इसे किसी को भी क्यों नहीं देना चाहते हैं, लेकिन मुझे इस बारे में कोई दिशानिर्देश नहीं मिल सकता है कि इसका मूल्यांकन कैसे किया जाए या नहीं।

तो, मेरा प्रश्न: उपयोगकर्ता "सर्वर स्टेट" की अनुमति देने के लिए सुरक्षा और प्रदर्शन निहितार्थ क्या हैं। वे क्या कर सकते हैं कि उन्हें करने की अनुमति नहीं होनी चाहिए ...

अद्यतन : एक निहितार्थ यह है कि उपयोगकर्ता प्रश्नों को देखने के लिए DMV का उपयोग करने में सक्षम होगा। यदि क्वेरी या क्वेरी पैरामीटर में गोपनीय जानकारी हो सकती है, जिसे उपयोगकर्ता अन्यथा नहीं देख पाएगा, तो VIDE SERVER STATE उन्हें ऐसा करने की अनुमति देगा (यानी dob = या ssn =)।

जवाबों:


5

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

क्या यह संभव है? निश्चित रूप से। क्या यह संभावना है? मैं ना कहने के लिए मजबूर हूं, लेकिन याद रखें कि यह अनुमान है कि कंपनियों के खिलाफ 90 प्रतिशत हमले आंतरिक हमलावरों के हैं।


3

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

अंत में यह हमेशा "भाग्य और उदारता" का मुद्दा रहा है क्योंकि किसी विशेष अनुरोध का औचित्य क्या है यह एक नरम विकल्प होने के नाते समाप्त होता है न कि कुरकुरा फॉर्मूला। संदर्भ को देखे बिना सर्वोत्तम अभ्यास पैटर्न का उपयोग खुद एक बहुत बुरा विरोधी पैटर्न है और वास्तविकता यह है कि कई लोग "बात करने के लिए हाथ" के साथ एक प्रारंभिक बिंदु के रूप में अपनी स्थिति में आते हैं।


1

प्रदर्शन के निहितार्थ के बारे में, मुझे इस या किसी अन्य अनुमति के बारे में कोई जानकारी नहीं है।

के बारे में:

वे ऐसा क्या कर सकते हैं कि उन्हें करने की अनुमति न दी जाए

सीधे शब्दों में कहें, तो वे ऐसी चीजें देख सकते हैं जो शायद उन्हें नहीं दिखनी चाहिए। और यह सिर्फ SQL सर्वर के संदर्भ में मत सोचो। यह विशेष रूप से अनुमति भी रूप में इस तरह DMVs को नियंत्रित करता है sys.dm_os_sys_info और काफी कुछ अन्य कहते हैं कि मेजबान मशीन (हार्डवेयर, सेवाओं, आदि) में अंतर्दृष्टि प्रदान करते हैं। आप हमेशा नहीं जानते कि आपके खिलाफ कौन सी जानकारी का उपयोग किया जा सकता है। और, यहां तक ​​कि अगर आप किसी के साथ ठीक हैं, तो अब इस अनुमति द्वारा सब कुछ देखने के बाद, कभी-कभी DMV को सेवा पैक / संचयी अद्यतन में जोड़ा जाता है, और इसलिए शायद जानकारी का एक नया टुकड़ा उजागर हो जाता है जिसे आप जानते नहीं हैं।

मुझे इस बात का कोई मार्गदर्शन नहीं मिल सकता है कि कैसे मूल्यांकन किया जाए कि यह प्रदान किया जाए या नहीं।

चूँकि आपने पहले से ही लोगों को आवश्यक न्यूनतम अनुमतियाँ देने का उल्लेख किया है, इसलिए यह वास्तव में निम्न है: क्या किसी को तदर्थ उपयोग के लिए इस अनुमति की आवश्यकता है ? मतलब, क्या किसी को अपने प्रश्नों के साथ आने की लचीलेपन की आवश्यकता है? एक या एक से अधिक संग्रहीत कार्यविधियाँ और / या मल्टी-स्टेटमेंट TVFs काम करेंगे? यदि ऐसा है, तो आपको किसी भी उपयोगकर्ता को अनुमति देने की आवश्यकता नहीं है (जो तब उस अनुमति से किसी भी चीज़ के लिए स्वतंत्र है), और इसके बजाय आप कोड को अनुमतियाँ प्रदान करते हैं (जो केवल वही करता है जो इसे करने के लिए कोडित है)। मॉड्यूल साइनिंग यह है कि आप इसे कैसे पूरा करते हैं। सामान्य अवधारणा है:

  1. वांछित कार्रवाई करने के लिए संग्रहीत प्रक्रिया (ओं) और / या बहु-कथन TVF (s) बनाएं।
  2. EXECUTEजो भी उपयोगकर्ता और / या भूमिकाओं को इन क्रियाओं को करने के लिए इन मॉड्यूल पर अनुदान
  3. एक प्रमाण पत्र बनाएँ
  4. उस प्रमाणपत्र का उपयोग करके मॉड्यूल पर हस्ताक्षर करें (उपयोग करके ADD SIGNATURE)
  5. प्रमाणपत्र को [master]डेटाबेस में कॉपी करें (अर्थात [master]मॉड्यूल पर हस्ताक्षर करने के लिए उपयोग किए गए प्रमाणपत्र की सार्वजनिक कुंजी का उपयोग करके एक प्रमाण पत्र बनाएं ।
  6. कॉपी किए गए प्रमाणपत्र से एक लॉगिन बनाएं [master]
  7. प्रमाणपत्र-आधारित लॉगिन के लिए जो भी उदाहरण-स्तर की अनुमति आवश्यक है, उसे प्रदान करें (जिसमें इसे उदाहरण-स्तर की भूमिकाओं में शामिल किया जा सकता है)।

कुछ उदाहरणों के लिए, कृपया देखें:


0

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

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


1
कौन कहता है कि वे इसे दूर दे रहे हैं? ओपी को किसी विशिष्ट मुद्दे (जैसे देखने के लिए sys.dm_db_missing_index_details) की जांच करने के लिए इसे किसी को देने की आवश्यकता हो सकती है और वे जानना चाहते हैं कि वास्तव में जोखिम क्या हैं।
मार्टिन स्मिथ

मुझे लगता है कि मैं इस प्रश्न के साथ निशान को याद कर रहा हूं, मुझे उस प्रश्न में कुछ भी दिखाई नहीं देता है जो अनुमति के लिए आवश्यकता को इंगित करता है।
थॉमस स्ट्रिंगर

4
@ThomasStringer: प्रश्न आवश्यकता के बारे में नहीं है, यह जोखिम के बारे में है । इसे मौद्रिक शब्दों में कहें, तो आप जान सकते हैं कि यह आपके सर्वर के लिए कौन से अतिरिक्त जोखिमों को उजागर करेगा, और इसलिए एक पैसा नहीं, और हाँ एक मिलियन डॉलर तक कह सकते हैं। मैं नहीं, लेकिन मैं करना चाहता हूँ।
jmoreno
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.