Quando você precisa para aplicar permissões a um sinónimo
-
05-07-2019 - |
Pergunta
Eu vejo de BOL que você pode aplicar permissões a um T-SQL sinônimo, mas em brincar com sinônimos Eu não estou claro quando você precisa fazer isso se você já tiver concedido permissões para o objeto de base.
por exemplo. Se eu tiver um sinônimo de banco de dados A que aponta para uma mesa FRED no banco de dados B, então parece que enquanto o usuário Joe é concedido SELECT [Fred]. [B], então Joe pode fazer SELECT * FROM [Fred]. [ B].
Solução
Usando Sinônimos (Database Engine)
As seguintes declarações de permissão associam-se unicamente com o sinónimo e não o objecto de base: (em seguida, menciona GRANT, revogar; Deny)
Depois disso, propriedade encadeamento aplica.
Quando um objeto é acessado através de um cadeia, SQL Server primeiro compara o proprietário do objeto para o dono o objeto de chamada. Isto é o ligação anterior na cadeia. Se ambos objetos têm o mesmo proprietário, permissões no objeto referenciado não são avaliados.
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: Espero ter respondido à sua pergunta ...