मुझे कैसे पता चलेगा * क्यों * एक उपयोगकर्ता के पास कुछ प्रभावी अनुमतियाँ हैं?


14

मुझे पता है कि मैं प्रभावी अनुमतियों का उपयोग करके क्वेरी कर सकता हूं sys.fn_my_permissions:

USE myDatabase;
SELECT * FROM fn_my_permissions('dbo.myTable', 'OBJECT') 

 entity_name | subentity_name | permission_name 
------------------------------------------------
 dbo.myTable |                | SELECT          
 dbo.myTable |                | UPDATE          
 ...

यह मुझे बताता है कि क्या वर्तमान उपयोगकर्ता के पास SELECT, INSERT, UPDATE, आदि myTableडेटाबेस में अनुमतियाँ हैं myDatabase

क्या यह आसानी से पता चल सकता है कि उपयोगकर्ता के पास ये अनुमतियां क्यों हैं? उदाहरण के लिए, मुझे एक फ़ंक्शन पसंद है fn_my_permissions_exजो एक अतिरिक्त reasonकॉलम आउटपुट करता है :

USE myDatabase;
SELECT * FROM fn_my_permissions_ex('dbo.myTable', 'OBJECT') 

 entity_name | subentity_name | permission_name | reason
------------------------------------------------------------------------------------------------------------------------------------
 dbo.myTable |                | SELECT          | granted to database role public
 dbo.myTable |                | UPDATE          | member of group MYDOMAIN\Superusers, which belongs to database role db_datawriter
 ...

दुर्भाग्य से, मुझे SQL सर्वर प्रलेखन में ऐसा कोई फ़ंक्शन नहीं मिला। क्या कोई उपकरण या स्क्रिप्ट है जो यह कार्यक्षमता प्रदान करती है?


आप इसे txt फ़ाइल में निर्यात क्यों नहीं करते ?, आप किस OS का उपयोग कर रहे हैं?
jcho360

1
@ jcho360: कोई फ़ंक्शन नहीं है fn_my_permission_ex, इसलिए ऐसा कुछ भी नहीं है जो मैं निर्यात कर सकता हूं। मैं पूछ रहा हूं कि क्या उस कार्यक्षमता के साथ कोई फ़ंक्शन या टूल है ।
हेनजी

क्या आप SSMS का उपयोग कर रहे हैं?
jcho360

1
बहुत बढ़िया सवाल। मैं बहुत लंबे समय से इसका पता लगाने की कोशिश कर रहा हूं। fn_my_permissions थोड़े काम करता है, लेकिन अक्सर उन अनुमतियों को दिखाता है जो मैं किसी मूल को ट्रैक नहीं कर सकता।
छद्मटोड

जवाबों:


8

आप नीचे लेख से सुरक्षा के बारे में कुछ अच्छी जानकारी पा सकते हैं।

SQL सर्वर अनुमतियों की समीक्षा करना | TechRepublic http://tek.io/KfzEyp

के सिवाय:

निम्नलिखित क्वेरी sys.database_permissions सिस्टम दृश्य का उपयोग करके यह इंगित करने के लिए करती है कि उपयोगकर्ताओं के पास वर्तमान डेटाबेस के भीतर विशिष्ट अनुमतियाँ थीं।

SELECT
        dp.class_desc
       ,dp.permission_name
       ,dp.state_desc
       ,ObjectName = OBJECT_NAME(major_id)
       ,GranteeName = grantee.name
       ,GrantorName = grantor.name
    FROM
        sys.database_permissions dp
        JOIN sys.database_principals grantee
        ON dp.grantee_principal_id = grantee.principal_id
        JOIN sys.database_principals grantor
        ON dp.grantor_principal_id = grantor.principal_id
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.