سؤال

وأرى من BOL التي يمكنك تطبيق الأذونات ل T-SQL مرادف، ولكن في اللعب حولها مع المرادفات أنا لست واضحة عندما كنت في حاجة للقيام بذلك إذا كنت قد منحت بالفعل أذونات إلى كائن قاعدة.

وعلى سبيل المثال. إذا كان لدي مرادف في قاعدة البيانات والذي يشير إلى جدول FRED في قاعدة بيانات B، ثم يبدو أنه طالما المستخدم يمنح جو SELECT على [فريد] [B] ثم جو يمكن أن تفعله SELECT * FROM [فريد]. [ B].

هل كانت مفيدة؟

المحلول

عن طريق المرادفات (قاعدة بيانات المحرك)

<اقتباس فقرة>   

والبيانات إذن التالية   ترتبط فقط مع مرادف   وليس كائن قاعدة: (ثم يذكر منحة، إبطال، DENY)

وبعد ذلك، ينطبق تسلسل ملكية .

<اقتباس فقرة>   

عند الوصول كائن من خلال   سلسلة، SQL خادم يقارن لأول مرة   مالك الكائن إلى مالك   الكائن الاستدعاء. هذا ال   الارتباط السابق في السلسلة. إذا كان كل من   كائنات لها نفس المالك،   الأذونات على الكائن المشار إليه   لم يتم تقييمها.

CREATE SYNONYM dbo.FooBar FOR dbo.MyBaseProc
GO
GRANT EXECUTE ON dbo.FooBar TO MyUser
GO
REVOKE EXECUTE ON dbo.MyBaseProc TO MyUser
GO
EXEC AS USER = 'MyUser'
GO
PRINT '1'
EXEC dbo.MyBaseProc --fail
GO
PRINT '2'
EXEC dbo.bob    --pass
GO
REVERT
GO


DENY EXECUTE ON dbo.MyBaseProc TO MyUser
GO
PRINT '3'
EXEC AS USER = 'MyUser'
GO
EXEC dbo.bob    --pass, 'coz DENY aint checked...
GO
REVERT
GO

وتحرير: أرجو أن أكون قد أجبت على سؤالك ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top