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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top