シノニムに許可を適用する必要があるのはいつですか
-
05-07-2019 - |
質問
BOL から、アクセス許可をT-SQLのシノニムですが、シノニムをいじくり回す際に、ベースオブジェクトへのアクセス許可が既に付与されている場合にいつそれを行う必要があるかは明確ではありません。
eg。データベースBのテーブルFREDを指すシノニムがデータベースAにある場合、ユーザーJoeが[Fred]。[B]でSELECTを許可されている限り、JoeはSELECT * FROM [Fred]。[ B]。
解決
次の許可ステートメント シノニムにのみ関連付けられています ベースオブジェクトではありません:(その後、GRANT、REVOKE、DENYに言及します)
その後、所有権チェーンが適用されます。
オブジェクトが チェーン、SQL Serverは最初に比較します オブジェクトの所有者からオブジェクトの所有者 呼び出しオブジェクト。これは チェーン内の前のリンク。両方の場合 オブジェクトの所有者は同じですが、 参照されるオブジェクトの権限 評価されません。
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
編集:あなたの質問に答えたことを願っています...
所属していません StackOverflow