Wann benötigen Sie Berechtigungen zu einem Synonym anzuwenden
-
05-07-2019 - |
Frage
Ich sehe von BOL , dass Sie Berechtigungen für eine Anwendung können T-SQL Synonym, sondern in das Spiel mit Synonymen ich bin nicht klar, wann würden Sie tun müssen, dass, wenn Sie bereits erteilten Berechtigungen auf das Basisobjekt.
zB. Wenn ich ein Synonym in der Datenbank A haben, die auf eine Tabelle verweist FRED in Datenbank B, dann scheint es, dass solange Benutzer Joe auf [Fred] SELECT gewährt wird. [B] kann Joe SELECT tun * FROM [Fred]. [ B].
Lösung
verwenden Synonyme (Database Engine)
Die folgenden Berechtigungs Aussagen nur mit dem Synonym zugeordnet ist, und nicht das Basisobjekt: (GRANT dann erwähnt, aufzuheben; Ablehnen)
Danach Verkettungsbesitz gilt.
Wenn ein Objekt durch eine zugegriffen wird Kette, SQL Server vergleicht das erste Eigentümer des Objekts an den Besitzer das aufrufende Objekt. Dies ist das voriges Glied in der Kette. wenn beide Objekte haben den gleichen Besitzer, Berechtigungen für das referenzierte Objekt werden nicht ausgewertet.
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
Edit: Ich hoffe, ich habe Ihre Frage beantwortet ...