عندما لا تحتاج إلى تطبيق أذونات مرادف
-
05-07-2019 - |
سؤال
وأرى من 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
وتحرير: أرجو أن أكون قد أجبت على سؤالك ...