Permisos sobre objetos...

28/08/2003 - 17:16 por AlejoR | Informe spam
Hola grupo...
Tengo algo extraño que no habia pasado NUNCA.
Tengo una base de datos, con tablas y procedimientos...(algo normal). Existe
un usuario que es el db_owner.
Ahora creo un usuario le permito acceso a la base y realizo consultas sobre
tablas y procedimientos. En tablas saca error de permiso de SELECT asi que
le doy ese permiso y no problem, trato de ejecutar un procedimiento y aqui
viene lo raro.
1) Me toca anteponerle el nombre del usuario ej: sigma.sp_procedimiento
2) El procedimiento internamente hace un select a una tabla, y me esta
sacando que no tengo permito sobre la tabla de SELECT .como asi..no
se supone que si se le da permiso de EXECUTE al procedimiento a los objetos
internos no hay que darle permisos explicitamente???


Algun comentario al respecto.
Gracias mil

Ejms:
exec sp_Cargar_Dia_Habil '2002'
Servidor: mensaje 2812, nivel 16, estado 62, línea 1
No se encontró el procedimiento almacenado 'sp_Cargar_Dia_Habil'.

exec sigma.sp_Cargar_Dia_Habil '2002'
Servidor: mensaje 229, nivel 14, estado 5, procedimiento
sp_Cargar_Dia_Habil, línea 4
Permiso SELECT denegado para el objeto 'SIB_DIAS_HABILES', base de datos
'Sigma', propietario 'dbo'.
 

Leer las respuestas

#1 Carlos Luis Rojas Vargas
28/08/2003 - 17:43 | Informe spam
Hola Alejo:

Sí es cierto que la seguridad se puede manejar a nivel de Vistas,
Procedimientos Almacenados y Funciones en SQL-Server, de hecho es una de las
recomendaciones, sin embargo, para que esto sea efectivo el dueño(owner) de
los objetos debe ser el mismo y en tu caso el Proced. Almacenado tiene como
dueño a sigma y la tabla tiene como dueño dbo, y así bajo esa configuración
no aplica y sí tendrías que dar permisos explícitos a la tabla para el
usuario sigma.

Igualmente el que tengas que ponerle el usuario adelante es porque al ser
el dueño sigma, sino le has otorgado permisos a otros usuarios sobre ese
Proced. Almacenado sólo él como dueño lo podrá ejecutar.

Una de las principales recomendaciones es que todos los objetos se creen
con un usuario dbo para no tener que controlar las cadenas de permisos que
deben generarse cuando los dueños de los diferentes objetos son diferentes.

Espero ésto te sirva de guía,


Saludos,


Carlos Rojas Vargas
Costa Rica



"AlejoR" wrote in message
news:#
Hola grupo...
Tengo algo extraño que no habia pasado NUNCA.
Tengo una base de datos, con tablas y procedimientos...(algo normal).


Existe
un usuario que es el db_owner.
Ahora creo un usuario le permito acceso a la base y realizo consultas


sobre
tablas y procedimientos. En tablas saca error de permiso de SELECT asi que
le doy ese permiso y no problem, trato de ejecutar un procedimiento y aqui
viene lo raro.
1) Me toca anteponerle el nombre del usuario ej: sigma.sp_procedimiento
2) El procedimiento internamente hace un select a una tabla, y me esta
sacando que no tengo permito sobre la tabla de SELECT .como


asi..no
se supone que si se le da permiso de EXECUTE al procedimiento a los


objetos
internos no hay que darle permisos explicitamente???


Algun comentario al respecto.
Gracias mil

Ejms:
exec sp_Cargar_Dia_Habil '2002'
Servidor: mensaje 2812, nivel 16, estado 62, línea 1
No se encontró el procedimiento almacenado 'sp_Cargar_Dia_Habil'.

exec sigma.sp_Cargar_Dia_Habil '2002'
Servidor: mensaje 229, nivel 14, estado 5, procedimiento
sp_Cargar_Dia_Habil, línea 4
Permiso SELECT denegado para el objeto 'SIB_DIAS_HABILES', base de datos
'Sigma', propietario 'dbo'.


Preguntas similares