अनुमति के साथ एक एसक्यूएल सर्वर उपयोगकर्ता बनाना एक दृश्य और कुछ नहीं पढ़ने के लिए - लेकिन वह प्रणाली विचारों और प्रक्रियाओं देख सकते हैं?

वोट
6

मेरी कंपनी एक ठेकेदार को काम पर रखा हमारे लिए एक छोटी परियोजना, जिसके लिए वह एक ही दृश्य से डेटा का चयन करने के हमारे मुख्य डेटाबेस में की जरूरत है ऐसा करने के लिए ( SQL Server 2005)।

मैं एक बंद-डाउन बनाना चाहता था SQL Server, अनुमतियों के साथ बस के लिए उसके लिए लॉगिन SELECTसे अपने दृश्य और कुछ नहीं ... और।

इसलिए मैं सर्वर पर एक नया प्रयोक्ता बनाया, और फिर मैं उसे सिर्फ इस एक दृश्य पर अनुमति दे दी:

grant select on SpecialView to SpecialUser;

असल में, यह काम करता है - वह हमारे टेबल और संग्रहित प्रक्रियाओं, न तो कोई किसी भी दृश्य को छोड़कर अपने एक नहीं देख सकता।

परंतु:

  • वह सभी सिस्टम विचारों का उपयोग कर सकते
  • वह सभी सिस्टम संग्रहित प्रक्रियाओं का उपयोग कर सकते हैं।

जाहिरा तौर पर अपने अनुमतियाँ स्वचालित रूप से लॉक ( sys.objectsशो केवल वस्तुओं है जिस पर वह अनुमतियों, sp_whoकेवल अपने ही प्रक्रियाओं और इतने पर दिखाता है)।

तो, मेरा सवाल यह है:

यह प्रणाली विचारों और संग्रहित प्रक्रियाओं के लिए उपयोग के बिना एक उपयोगकर्ता बनाने के लिए संभव है?
(और अगर हां, क्या मैं गलत कर रहा हूँ?)

या वहाँ कुछ कारण है कि यहां तक ​​कि बंद कर दिया-डाउन उपयोगकर्ताओं प्रणाली विचारों और संग्रहित प्रक्रियाओं के लिए उपयोग की आवश्यकता है?

संपादित करें:
- केवल देखने वह देखने के लिए माना जाता है के साथ डेटाबेस के लिए kevchadders, उपयोगकर्ता मास्टर, मॉडल या msdb तक पहुंच नहीं है।

लेकिन, एक बात स्पष्ट कर देना: प्रणाली विचारों / procs जो उपयोगकर्ता देख सकते हैं डेटाबेस में जहां अपने दृश्य है ... मास्टर डेटाबेस में नहीं। तो मैं उसके सारे पहुँच को अक्षम नहीं कर सकता, क्योंकि वह एक ही डेटाबेस में एक दृश्य से चयन करने के लिए की जरूरत है।
बिंदु भले ही मैं स्पष्ट रूप से केवल एक दृश्य है कि वह, क्यों वह अभी भी प्रणाली विचारों / procs देखता रूप में अच्छी तरह माना जाता है के लिए अनुमति सेट, है?

16/07/2010 को 10:52
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
2

का प्रयोग करें DENY VIEW DEFINITION। आप उपयोगकर्ता के विचारों और संग्रहित प्रक्रियाओं के अस्तित्व को देखने की क्षमता नहीं निकाल सकते, लेकिन आप उन्हें में (सबसे) सामग्री की देखने की क्षमता निकाल सकते हैं।

deny view definition to smallperms_role 
go
sp_addrolemember 'smallperms_role ', 'smallperms_user'
go
sp_addrolemember 'db_datareader', 'smallperms_user'
go

उदाहरण के लिए:
EXEC sys.sp_databases कुछ भी नहीं देता है, लेकिन निष्पादित करता है।
SELECT * FROM INFORMATION_SCHEMA.TABLESकुछ भी नहीं देता है, लेकिन एक त्रुटि वापस नहीं करता है।

16/07/2010 को 19:51
का स्रोत उपयोगकर्ता

वोट
1

सही उपयोगकर्ता पर क्लिक करें और उपयोगकर्ता का मिलान पेज।

से वहाँ है आप से उसके सारे पहुंच को अक्षम करने की कोशिश की मास्टर , मॉडल और msdb डेटाबेस?

मुझे लगता है कि वह उन लोगों में से सभी 3 पर सार्वजनिक रूप में स्थापित किया जाएगा ताकि आप सार्वजनिक भूमिका को हटाने के क्या प्रभाव यह अपने प्रवेश पर है जब उन प्रणाली विचारों / संग्रहीत procs चल देखने की कोशिश कर सकता है।

या बेहतर अभी भी एक परीक्षण लॉगिन इसके साथ प्रयोग करने के लिए पैदा करते हैं।

16/07/2010 को 11:05
का स्रोत उपयोगकर्ता

वोट
0

मुझे नहीं लगता कि आप एक उपयोगकर्ता के लिए सार्वजनिक उपयोग को दूर कर सकते हैं। (उपभोक्ता के गुण से)

आप डेटाबेस गुण से, जनता के लिए अनुमतियाँ अस्वीकार कर सकते हैं।

  • राइट-क्लिक करें डीबी
  • गुण पर जाएं
  • अनुमतियाँ पर जाएं
  • अतिथि भूमिका के लिए अनुमतियां बदलें।

लेकिन आप नहीं कर सकते मास्टर या अस्थायी डीबीएस पर 'नियंत्रण' अनुमति से इनकार और आप सर्वर से प्रवेश नहीं कर सकते यदि आप मास्टर पर चयन इंकार करते हैं।

16/07/2010 को 13:58
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more