मैं SQL Server 2008 में संपूर्ण सक्रिय निर्देशिका समूह सुरक्षा पहुँच कैसे प्रदान करूँ?


40

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

जवाबों:


48
  • AD समूह को लॉगिन के रूप में सेट करें। और "लॉगिन" का अर्थ है सर्वर स्तर लॉगिन उपयोगकर्ता / लॉगिन की एडी अवधारणा नहीं है। SQL सर्वर में बोलते हैं, यह एक सर्वर स्तर प्रिंसिपल है
  • एक मैप्ड उपयोगकर्ता बनाएँ। आपको वास्तव में किसी उपयोगकर्ता को सीधे टेबल पर अनुमति नहीं देनी चाहिए। और "उपयोगकर्ता" का अर्थ है डेटाबेस उपयोगकर्ता उपयोगकर्ता का विज्ञापन अवधारणा नहीं: SQL सर्वर में बोलते हैं, यह "डेटाबेस स्तर का प्रिंसिपल" है
  • उपयोगकर्ता को भूमिका में जोड़ें (एक "डेटाबेस स्तर प्रिंसिपल")
  • तालिकाओं पर भूमिकाओं के लिए अनुमति (एक तालिका या खरीद आदि एक "सुरक्षित" है)

नमूना लिपि

USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO

sp_addrolememberSQL सर्वर 2012 के साथ शुरू किया गया पदावनत ALTER ROLEकिया जाता है , जहां इसके बजाय इसका उपयोग किया जाना चाहिए।


3
यह समझाने में मददगार होगा कि आपको SQL उपयोगकर्ताओं (इस मामले में, AD समूहों) के बजाय भूमिकाओं की अनुमति क्यों देनी चाहिए।
ड्रिप चैपिन

शायद आपका मतलब है " लॉगिन से उपयोगकर्ता ... [...] बनाने के लिए " ... लॉगिन के बजाय "?"
Agostino

उपयोगकर्ता बनाने के ... के लिए लॉगिन करें ...; और उपयोगकर्ता बनाने के ... से लॉगिन ...; मेरे लिए दोनों (MSSQL2016) काम करते हैं। निश्चित नहीं है कि क्या अंतर है?
उल्टा इंजीनियर

नहीं, दोनों वैध डॉक्स
gbn

4

AD सर्वर के लिए SQL सर्वर के भीतर अनुमतियाँ देना अपेक्षाकृत सरल है। यह टी-एसक्यूएल या मैनेजमेंट स्टूडियो के माध्यम से किया जा सकता है।

उदाहरण के लिए, यदि आपके पास कोई AD समूह है MYDOMAIN\APPLICATION SUPPORT, तो आप सर्वर स्तर पर लॉगिन बनाएंगे, और फिर डेटा रीडर जैसे थोड़ा और दानेदार अनुमतियाँ देने के लिए व्यक्तिगत डेटाबेस के लिए मैपिंग का उपयोग करें।

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

* देखने के एक सुरक्षा की दृष्टि से, एक विशेष उपयोगकर्ता कुछ विशिष्ट डेटा देखने की अनुमति के लिए, आप एक प्रक्रिया बना सकते हैं और अनुदान उपयोगकर्ता सकता है पर अमल और कुछ नहीं है कि प्रक्रिया पर अनुमति है, और। उपयोगकर्ता को सीधे क्वेरी करने की अनुमति देने का मतलब होगा कि इसमें शामिल सभी तालिकाओं पर चुनिंदा अनुमति देना । प्रक्रियाओं के साथ काम करना भी आसान है, और डीबग करना भी आसान है।

संग्रहीत प्रक्रियाएं सार तालिका तक पहुंच को दूर करती हैं और पहुंच को सीमित करती हैं। DBA प्रकारों के लिए, यह "मुझे आपके सभी उदाहरण चर देखने दें: मैं विधियों, गेटर्स या बसने वालों का उपयोग नहीं करना चाहता"।


3

"SQL सर्वर में लॉगिन के रूप में सक्रिय निर्देशिका उपयोगकर्ता समूह को जोड़ने के लिए" का उत्तर देने वाले marc_s से :

SQL सर्वर प्रबंधन स्टूडियो में, पर जाएँ Object Explorer > (your server) > Security > Loginsऔर राइट-क्लिक करें New Login:

यहाँ छवि विवरण दर्ज करें

फिर डायलॉग बॉक्स में जो पॉप अप करता है, उस प्रकार की वस्तुओं को चुनें जिन्हें आप देखना चाहते हैं ( Groupsडिफ़ॉल्ट रूप से अक्षम है - इसे जांचें!) और उस स्थान को चुनें जहां आप अपनी वस्तुओं को देखना चाहते हैं (उदाहरण के लिए उपयोग करें Entire Directory) और फिर अपना विज्ञापन समूह ढूंढें। ।

यहाँ छवि विवरण दर्ज करें

अब आपके पास एक नियमित SQL सर्वर लॉगिन है - ठीक उसी तरह जब आप एक एकल AD उपयोगकर्ता के लिए बनाते हैं। उस नए लॉगिन को उन डेटाबेस पर अनुमतियाँ दें, जिनकी आपको आवश्यकता है, और आप जाते हैं!

उस AD समूह का कोई भी सदस्य अब SQL सर्वर पर लॉगिन कर सकता है और अपने डेटाबेस का उपयोग कर सकता है।


2
उस SO उत्तर को जोड़ना संभवत: उपयोगी है लेकिन आप पोस्ट में कुछ भी नया नहीं जोड़ रहे हैं, क्या आप हैं। आप लिंक को केवल एक टिप्पणी के रूप में पोस्ट कर सकते थे।
एंड्री एम

2
उत्तर में ऑब्जेक्ट प्रकार के तहत समूहों की जांच के लिए एक अच्छा स्क्रीनशॉट है, क्योंकि जब मैं ऐसा करने की कोशिश कर रहा था, तब मैं गायब था। एक लिंक इसे मेरी राय में उपयोगी तरीके के रूप में नहीं दिखाता है। बस अगले व्यक्ति की मदद करने की कोशिश कर रहा हूँ ...
यहां तक ​​कि मियां

क्या मतलब? आमतौर पर इसका अनुसरण करने के लिए एक लिंक होता है, और लिंक का अनुसरण करने वाला हर कोई अच्छा स्क्रीनशॉट देखता है जिसके बारे में आप बात कर रहे हैं, साथ ही साथ आपके द्वारा यहां पोस्ट की गई सभी चीजें भी। बहस करने के लिए नहीं जा रहा है, हालांकि, बस आपको यह बताने की अनुमति है कि मेरी राय अपरिवर्तित है: एक लिंक (एक टिप्पणी में) बस भी करेगी।
एंड्री एम

4
मेरी राय भी अपरिवर्तित है। एक टिप्पणी में एक लिंक वेब पेज पर एक वास्तविक छवि के रूप में एक ही जानकारी को व्यक्त नहीं करता है। "दिखाओ, बताओ मत।"
यहां तक ​​कि मियां

1

यदि उपयोगकर्ता DOMAIN \ SecurityGroup का सदस्य है जिसमें SQL में Sysadmin प्राधिकरण है, तो डेटाबेस का उपयोग करते समय इसका उपयोग किया जाएगा। अन्यथा आपको यह देखने की जरूरत है कि प्रत्येक डेटाबेस में DOMAIN \ SecurityGroup (s) को क्या अधिकार दिया गया है। यदि उपयोगकर्ता 2 SecurityGroups का सदस्य है, जिसमें SecGroupA के पास सेलेक्ट अथॉरिटी है और SecGroupB में इन्सर्ट अथॉरिटी है, तो यूजर सेलेक्ट और इन्सर्ट कर सकता है।

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