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].

War es hilfreich?

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 ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top