Quando è necessario applicare le autorizzazioni a un sinonimo
-
05-07-2019 - |
Domanda
Vedo da BOL che puoi applicare le autorizzazioni a un Sinonimo di T-SQL, ma nel giocare con i sinonimi non sono chiaro quando sarà necessario farlo se si hanno già le autorizzazioni concesse per l'oggetto base.
ad es. Se ho un sinonimo nel database A che punta a una tabella FRED nel database B, allora sembra che fino a quando l'utente Joe ottiene SELECT su [Fred]. [B] allora Joe può fare SELECT * FROM [Fred]. [ B].
Soluzione
Uso dei sinonimi (Motore di database)
Le seguenti dichiarazioni di autorizzazione sono associati solo al sinonimo e non l'oggetto base: (quindi menziona GRANT, REVOKE; DENY)
Successivamente, si applica concatenamento della proprietà .
Quando si accede a un oggetto tramite a catena, SQL Server confronta prima il file proprietario dell'oggetto al proprietario di l'oggetto chiamante. Questo è il anello precedente nella catena. Se entrambi gli oggetti hanno lo stesso proprietario, autorizzazioni sull'oggetto referenziato non vengono valutati.
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
Modifica: spero di aver risposto alla tua domanda ...