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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top