SQL Server 2012 पर केवल-पढ़ने के लिए सर्वर रोल कैसे बनाएँ?


15

मैं एक नया सर्वर रोल बनाते समय "किसी भी डेटाबेस को देखने" की अनुमति दे रहा हूं, लेकिन इस अनुमति का एहसास केवल उपयोगकर्ता को सिस्टम डेटाबेस को देखने की अनुमति देता है।

मैं एक सर्वर रोल बनाने की कोशिश कर रहा हूं जो केवल पढ़ने के लिए है और किसी भी डेटाबेस को पढ़ सकता है।

क्या उपयोगकर्ता डेटाबेस पढ़ने के लिए उपयोगकर्ता-परिभाषित सर्वर भूमिका बनाने का एक तरीका है? या क्या मुझे प्रति उपयोगकर्ता प्रति उपयोगकर्ता मानचित्रण के माध्यम से ऐसा करना है?

जवाबों:


16

इसे केवल एक उत्तर के रूप में पोस्ट करना क्योंकि यह एक टिप्पणी के लिए बहुत लंबा है, और क्योंकि यह बहुत जल्द अन्य उपयोगकर्ताओं के लिए प्रासंगिक होगा

SQL सर्वर 2014 में कुछ नए सर्वर-स्तर की अनुमतियाँ शामिल हैं जो इस प्रकार के परिदृश्य के साथ सहायता करेंगे - उन्हें ऑडिटिंग को ध्यान में रखते हुए डिज़ाइन किया गया था, लेकिन इस प्रकार की आवश्यकता उस बिल को भी फिट करने में लगती है। आप सर्वर-स्तर लॉगिन में निम्नलिखित दो अनुमतियाँ जोड़ सकते हैं:

CONNECT ANY DATABASE

SELECT ALL USER SECURABLES

पूर्व, जैसे यह लगता है, लॉगिन किसी भी डेटाबेस से जुड़ने की अनुमति देता है। इसके बारे में अच्छी बात यह है कि यह भविष्य में बनाए जाने वाले डेटाबेस के लिए भी अनुमति देगा (बशर्ते आप स्पष्ट इनकार सेट नहीं करते हैं, जो आप कुछ उपयोगकर्ता डेटाबेस को इस अनुमति वाले लॉगिन से सुरक्षित कर सकते हैं)। उत्तरार्द्ध लॉगिन को किसी भी डेटाबेस पर पढ़ने के संचालन का संचालन करने की अनुमति देता है, जिनके पास उनकी पहुंच है - इसलिए वे SELECTतालिकाओं, विचारों, यूडीएफ आदि से कर सकते हैं, लेकिन वे किसी भी UPDATEऑपरेशन को करने में सक्षम नहीं होंगे (मैंने यह परीक्षण नहीं किया है यदि यह अनुमति समझता है जब संग्रहीत कार्यविधि DML करता है)। ये संयोजन में बहुत काम करते हैं, यदि आप पूरे सर्वर पर एक लॉगिन विस्तृत-खुली रीड एक्सेस देना चाहते हैं, या अधिक ठीक-ठाक होना चाहते हैं, तो आप CONNECTकुछ डेटाबेस के लिए पारंपरिक विशेषाधिकार प्रदान कर सकते हैं , और SELECT ALL USER SECURABLESसही इच्छाशक्तिकेवल उन डेटाबेस के लिए कार्य करें जहां लॉगिन की स्पष्ट पहुंच है।

2014 सुरक्षा परिवर्तन यहाँ प्रलेखित रहे हैं - अच्छी तरह से, आंशिक रूप से; वे डेटाबेस-स्तर की अनुमति के बारे में भूल गए ALTER ANY DATABASE EVENT SESSION- हालांकि यह यहां प्रासंगिक नहीं है।


आने वाले सर्वर के लिए इस विस्तारित उत्तर के लिए धन्यवाद। होने के नाते यह ऑपरेशन / चेक सर्वर स्तर पर है। क्या डीबी संगतता स्तर पर कोई टिप्पणी है। तो अगर डीबी सीएल 2012 है, तो क्या 2014 की सुविधा अभी भी काम करेगी?
स्नैपजैग

@SnapJag संगतता स्तर का सुरक्षा सुविधाओं पर कोई असर नहीं पड़ता है, यह ज्यादातर इस बारे में है कि टी-एसक्यूएल को कैसे पार्स किया जाता है और कैसे ऑप्टिमाइज़र क्वेरी योजनाओं को उत्पन्न करता है।
हारून बर्ट्रेंड

@AaronBertrand क्या आप जानते हैं कि क्या कोई अनुमति है जो हम किसी सर्वर पर भी अपडेट की अनुमति देने के लिए सर्वर-स्तर की भूमिकाओं पर सेट कर सकते हैं? (sysadmin निश्चित भूमिका सुनिश्चित कर सकता है, लेकिन क्या हम इसे एक उपयोगकर्ता परिभाषित सर्वर भूमिका के लिए कर सकते हैं?)
MaxiWheat

@MaxiWheat नहीं, ऐसा करने का कोई तुच्छ तरीका नहीं सोच सकता, क्षमा करें।
हारून बर्ट्रेंड

FWIW यह Azure SQL डेटाबेस के लिए काम नहीं करेगा। SQL सर्वर के इस संस्करण में समर्थित 'NameOfUserOrGroup] सुरक्षित श्रेणी' सर्वर 'के लिए किसी भी डेटा को कनेक्ट करें।
डेजजम्स

8

कोई सर्वर-स्तर नहीं है 'किसी भी डेटाबेस की अनुमति पढ़ें और सर्वर-स्तरीय भूमिकाओं को डेटाबेस-स्तर की अनुमति नहीं दी जा सकती

तो हां, आपको उपयोगकर्ताओं को व्यक्तिगत रूप से डेटाबेस में मैप करना होगा। यदि आप सक्रिय निर्देशिका का उपयोग कर रहे हैं, तो आप एक विंडोज़ समूह बना सकते हैं, फिर उस समूह को SQL सर्वर पर लॉगिन करें, फिर उस समूह के लिए सभी डेटाबेस में db_datareader लागू करें (आपको प्रत्येक डेटाबेस में उपयोगकर्ताओं को बनाने की आवश्यकता होगी)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.