सभी संग्रहीत कार्यविधियों को प्राप्त करें


147

क्या निम्न आदेश प्रभावी रूप से उपयोगकर्ता, "MyUser," डेटाबेस में सभी संग्रहीत प्रक्रियाओं को निष्पादित करने की अनुमति देता है?

GRANT EXECUTE TO [MyDomain\MyUser]

जवाबों:


244

SQL सर्वर 2008 और उससे अधिक:

/* CREATE A NEW ROLE */
CREATE ROLE db_executor

/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor

केवल एक उपयोगकर्ता के लिए (भूमिका नहीं):

USE [DBName]
GO
GRANT EXECUTE TO [user]

28
+1 प्लस: यह भविष्य में संग्रहीत प्रक्रियाओं के लिए EXECUTE की अनुमति भी देता है, उदाहरण के लिए जो अभी तक आपके डेटाबेस में नहीं हैं - लेकिन बाद में बनाया जाएगा।
marc_s

2
मुझे लगता है कि यह ध्यान देने योग्य है कि आपका userवर्ग वर्गाकार कोष्ठक में होना चाहिए। यह मेरे उपयोग के मामले में कम से कम भाग में सही था क्योंकि मेरे उपयोगकर्ता के पास एक डोमेन जुड़ा हुआ था (यानी इसमें उसका एक चरित्र था)। संपादित करें: फिक्स्ड
अनसैप्ड

1
उपयोगकर्ता को db_ddladmin भूमिका क्यों नहीं सौंपी जाती? "Db_ddladmin तय डेटाबेस भूमिका के सदस्य किसी भी डेटाबेस में डेटा परिभाषा भाषा (DDL) कमांड चला सकते हैं।" - यहाँ
माइकल टोबिस्क

1
@MichaelTobisch यहां केवल संग्रहीत प्रक्रियाओं को निष्पादित करने की आवश्यकता है। डीडीएल रोल क्रिएट, ऑल्टर, ड्रॉप, ... परिदृश्यों में उपयोग किया जाना चाहिए। : ये लिंक उपयोगी होना चाहिए docs.microsoft.com/en-us/sql/relational-databases/security/... और geeksforgeeks.org/sql-ddl-dml-dcl-tcl-commands
Qmaster

2
और मामले में किसी उपयोगकर्ता को एक भूमिका में जोड़ने का अगला स्तर यह शोध के किसी अन्य चरण को बचाता है। ALTER ROLE db_executor ADD प्रोफ़ाइल आपका उपयोगकर्ता नाम
Piwaf

72

SQL सर्वर 2005 ने डेटाबेस सिद्धांत को अनुमति देने की क्षमता पेश की , जैसा कि आपने वर्णित किया है:

GRANT EXECUTE TO [MyDomain\MyUser]

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

यदि आप अधिक बारीक होना चाहते हैं, तो आप स्कीमा निष्पादित अनुमतियाँ प्रदान करके भी प्रतिबंधित कर सकते हैं :

GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]

5
महान एक विशिष्ट स्कीमा के लिए ऐसा करने में सक्षम होने के लिए, इसलिए sys पर अनुमतियों से परहेज करना
RemarkLima

17

उपरोक्त उत्तरों के अलावा, मैं जोड़ना चाहूंगा:


आप इसके बजाय इसे एक भूमिका देना चाहते हैं , और फिर उपयोगकर्ता को भूमिका सौंप सकते हैं। मान लीजिए आप एक भूमिका बनाया है myAppRightsके माध्यम से

CREATE ROLE [myAppRights] 

तो आप के माध्यम से निष्पादित अधिकार दे सकते हैं

GRANT EXECUTE TO [myAppRights] 

उस भूमिका के लिए।


या, यदि आप स्कीमा स्तर पर करना चाहते हैं :

GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]

यह भी काम करता है (इस उदाहरण में, भूमिका myAppRightsको स्कीमा के सभी तत्वों पर dboबाद में अधिकार निष्पादित होगा )।

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

नोट: यदि आप एक स्कीमा को एक भूमिका प्रदान करते हैं, जो आपके द्वारा बाद में बनाए गए तत्वों को भी प्रभावित करता है - यह आपके द्वारा इच्छित डिज़ाइन के आधार पर फायदेमंद हो सकता है या नहीं, इसलिए इसे ध्यान में रखें।


-5

अनुदान प्राप्त करने के लिए [रोल]

यह निश्चित रूप से मदद करता है


आप सार्वजनिक भूमिका को निष्पादित नहीं करना चाहते हैं, यह सुरक्षा चिंताओं को खोलता है। बस इसे उपयोगकर्ता या भूमिका को अनुदान दें। विशिष्ट procs को निष्पादित करना सबसे अच्छा तरीका है ताकि आप नियंत्रित कर सकें कि कौन क्या मार रहा है।
अमिल्स 01

यहाँ कटाक्ष प्रश्नोत्तर साइट के लिए उपयुक्त नहीं है, खासकर जब यह संभावित खतरनाक परिणाम देता है।
क्रिस्टोफर ब्राउन

"हर लॉगिन सार्वजनिक फिक्स्ड सर्वर भूमिका से संबंधित है, और प्रत्येक डेटाबेस उपयोगकर्ता सार्वजनिक डेटाबेस भूमिका से संबंधित है। जब एक लॉगिन या उपयोगकर्ता को एक securable पर विशिष्ट अनुमति नहीं दी गई है या इनकार नहीं किया गया है, तो लॉगिन या उपयोगकर्ता सार्वजनिक पर दी गई अनुमतियों को प्राप्त करता है। वह सुरक्षित "तो सार्वजनिक करने के लिए किसी भी अनुमति देने का अर्थ है कि सभी उपयोगकर्ताओं को उन अनुमतियों को देने के लिए। यह एक बड़ी भेद्यता है। : के लिए अतिरिक्त इस लिंक पढ़ें docs.microsoft.com/en-us/sql/relational-databases/security/...
Qmaster

इस तरह के जवाब के साथ, यह कोई आश्चर्य नहीं है कि वहाँ बहुत खराब सुरक्षित वेबसाइटों और डेटाबेस है। गीज़ आदमी।
डेव लुस्रे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.