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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top