Pregunta

Desde BOL veo que puede aplicar permisos a un Sinónimo de T-SQL, pero al jugar con los sinónimos, no estoy claro cuándo tendría que hacerlo si ya tiene permisos GRANADOS para el objeto base.

por ejemplo. Si tengo un sinónimo en la base de datos A que apunta a una tabla FRED en la base de datos B, entonces parece que siempre que se otorgue a Joe el usuario SELECT en [Fred]. [B] entonces Joe puede hacer SELECT * FROM [Fred]. [ B].

¿Fue útil?

Solución

Uso de sinónimos (motor de base de datos)

  

Las siguientes declaraciones de permiso   se asocian solo con el sinonimo   y no el objeto base: (luego menciona GRANT, REVOKE; DENY)

Después de eso, se aplica encadenamiento de propiedad .

  

Cuando se accede a un objeto a través de un   cadena, SQL Server primero compara la   propietario del objeto al propietario de   el objeto llamante. Este es el   Enlace anterior en la cadena. Si ambos   los objetos tienen el mismo dueño,   permisos sobre el objeto referenciado   no son evaluados.

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

Editar: Espero haber respondido a tu pregunta ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top