2009-07-30 10 views
3

Je vois de BOL que vous pouvez appliquer des permissions à un synonyme T-SQL, mais en jouant avec des synonymes, je ne suis pas clair quand vous auriez besoin de le faire si vous avez autorisations déjà GRANTed à l'objet de base.Quand avez-vous besoin d'appliquer des permissions à un synonyme

par ex. Si j'ai un synonyme dans la base de données A qui pointe vers une table FRED dans la base de données B, alors il semble que tant que l'utilisateur Joe reçoit SELECT sur [Fred]. [B] alors Joe peut faire SELECT * FROM [Fred]. B].

Répondre

3

Using Synonyms (Database Engine)

Les états d'autorisation suivants sont associés uniquement synonyme et non l'objet de base: (mentionne alors grant, revoke, DENY)

Après cela, ownership chaining applique.

Lorsqu'un objet est accessible par une chaîne , SQL Server compare d'abord le propriétaire de l'objet au propriétaire de l'objet d'appel. C'est le lien précédent de la chaîne. Si les deux objets ont le même propriétaire, les autorisations sur l'objet référencé ne sont pas évaluées.

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: J'espère avoir répondu à votre question ...

Questions connexes