Principales respuestas
Sobre permisos SQL2008

Pregunta
-
Estimados.
Tengo un usuario llamado TEST el cual tienen permisos de EXECUTE sobre el SP llamado p_Test
El Sp p_Test esta creado bajo el esquema ignos
Exec ignos.p_Test
Dentro de p_Test se hace referencia a una tabla llamada impresion y para que se ejecute le doy acceso para SELECT al usuario TEST.
Lo que busco es que el usuario TEST solo tenga permiso de EXECUTE al SP pero NO quisiera que pueda hacer Select sobre la tabla impresion.
Saludos.
DBA SQL Server Santiago/Chile
Respuestas
-
Saludos,
Me cuesta trabajo comprender lo que buscas ya que al parecer estas usando el esquema [dbo] y [mision], bastaría con denegarle permiso de SELECT a tu tabla en esquema [dbo], ya que tiene el permiso de EXEC sobre el Stored en el esquema [mision].
Trata así:
USE TuBaseBatos GO DENY SELECT ON OBJECT::[dbo].[prueba] TO [TEST]; GRANT EXECUTE ON OBJECT::[mision].[usr_sp_select] TO [TEST]; GO
Con esto, tu usuario TEST tendrá permiso de ejecutar el Stored pero no podrá hacer select a la tabla. Si tienes una pregunta no dudes en hacerla.
Saludos,
Ayacucho - Perú
Recuerda si mi solución atiende tu consulta por favor márcala como útil y como respuesta.
http://litigiouslobo.blogspot.com/
El Blog de Steve Morrison- Marcado como respuesta Karen MalagónModerator martes, 8 de septiembre de 2015 20:25
Todas las respuestas
-
Usa el execute as dentro del sp quita el permiso de select al usuario TEST y el owner sea Test sobre el SP.
Aun asi con un deny select sobre el usuario y un grant execute al sp deberia de ser suficiente.- Propuesto como respuesta Nathán XS viernes, 4 de septiembre de 2015 15:29
- Editado Enrique AA viernes, 4 de septiembre de 2015 15:40
-
-
es un sql dinamico?
Si es así esto se executa fuera del contexto del sp en otra session y es por eso que falla.
Acabo de probar y me funciono
/****** Script for SelectTopNRows command from SSMS ******/ SELECT TOP 1000 [id] ,[nombre] ,[apaterno] ,[amaterno] ,[direccion] ,[country] ,[birthday] FROM [temp2].[dbo].[Prueba] deny select to [test] create procedure usr_sp_select as select * from prueba exec usr_sp_select
- Editado Enrique AA viernes, 4 de septiembre de 2015 16:06
-
-
-
OK hice una SIn sql dinamico, pero el problema es el siguiente:
el procedimiento
create procedure usr_sp_select as select * from prueba
En realidad es creado bajo el esquema mision
create procedure mision.usr_sp_select as select * from prueba
Al usuario test le doy permiso de execute, pero obviamente me da error pues el SP trata de acceder a la tabla prueba que pertenece al esquema DBO.
Entonces hago:
GRANT SELECT ON [dbo].[prueba] TO [TEST]
Y ahi ejecuto el SP con dicho usuario sin problemas, pero el tema pasaba por no querer que el usuario TEST pueda hacer SELECT sobre la tabla prueba, me parece que la unica manera es usar execute as
Saludos.
DBA SQL Server Santiago/Chile
-
Saludos,
Me cuesta trabajo comprender lo que buscas ya que al parecer estas usando el esquema [dbo] y [mision], bastaría con denegarle permiso de SELECT a tu tabla en esquema [dbo], ya que tiene el permiso de EXEC sobre el Stored en el esquema [mision].
Trata así:
USE TuBaseBatos GO DENY SELECT ON OBJECT::[dbo].[prueba] TO [TEST]; GRANT EXECUTE ON OBJECT::[mision].[usr_sp_select] TO [TEST]; GO
Con esto, tu usuario TEST tendrá permiso de ejecutar el Stored pero no podrá hacer select a la tabla. Si tienes una pregunta no dudes en hacerla.
Saludos,
Ayacucho - Perú
Recuerda si mi solución atiende tu consulta por favor márcala como útil y como respuesta.
http://litigiouslobo.blogspot.com/
El Blog de Steve Morrison- Marcado como respuesta Karen MalagónModerator martes, 8 de septiembre de 2015 20:25