hola,
me he encontrado con el siguiente problema de seguridad en la
aplicacion que estoy desarrollando y necesitaba algo de ayuda,
gracias.
antecedentes:
tenemos un procedimiento almacenado que realiza una serie de
inserciones y actualizaciones contra una serie de tablas.
si este procedimiento se realiza con exito debemos ejectutar un
comando del sistema (este comando abre una conexion a una
maquina remota, le envia una breve informacion y cierra la conexion)
PROCEDURE sp_hace_cosas_y_envia_informe
inserta tablaZ
actualiza t1
...
SI todo_esta_correcto
@COMANDO = 'c:\talk.exe' + @CODIGO
EXEC master..xp_cmdshell @COMANDO
FINSI
FIN PROCEDURE
el problema:
para que este procedimiento almacenado pueda lanzar el programa
de comunicaciones debo permitir la ejecucion de el procedimiento
extendido xp_cmdshell al usuario que ejecuta el procedimiento
'sp_hace_cosas_y_envia_informe'
cosa que me parece, cuando menos, bastante osada :-)
puesto que ese usuario podria ejecutar cualquier comando del sistema.
borrar archivos importantes, por ejemplo.
la pregunta:
¿hay alguna forma de permitir la ejecucion de un programa en concreto?
o mejor aun...
hay forma de decir: "este procedimiento almacenado tiene permiso
para lanzar este procedimiento" asi evitaria dar cualquier tipo
de permiso adicional al usuario que usa el procedimiento.
¿como solucionariais este problema?
-
espero haberme explicado bien,
muchas gracias, un saludo
Leer las respuestas