Quand devez-vous appliquer des autorisations à un synonyme
-
05-07-2019 - |
Question
Je vois dans BOL que vous pouvez appliquer des autorisations à un Synonyme T-SQL, mais en jouant avec les synonymes, je ne sais pas quand vous devez le faire si vous avez déjà accordé des autorisations sur l'objet de base.
par exemple. 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, il apparaît alors que tant que l'utilisateur Joe reçoit SELECT sur [Fred]. [B], il peut faire SELECT * FROM [Fred]. [ B].
La solution
Utilisation de synonymes (moteur de base de données)
Les autorisations suivantes sont associés uniquement au synonyme et non l'objet de base: (puis mentionne GRANT, REVOKE; DENY)
Ensuite, la chaînage des droits de propriété s'applique.
Lorsqu'un objet est accédé via un chaîne, SQL Server commence par comparer le propriétaire de l'objet au propriétaire de l'objet appelant. C'est le lien précédent dans la chaîne. Si les deux les objets ont le même propriétaire, autorisations sur l'objet référencé ne sont pas évalués.
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 ...