Foros del Web » Programando para Internet » PHP »

Auditoria sobre acciones sobre una base datos

Estas en el tema de Auditoria sobre acciones sobre una base datos en el foro de PHP en Foros del Web. Hola, Estoy usando adodb en php para la abstraccion del motor a base de datos, he creado una funcion en php que se llama ejecutar() ...
  #1 (permalink)  
Antiguo 12/09/2011, 13:35
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Pregunta Auditoria sobre acciones sobre una base datos

Hola,

Estoy usando adodb en php para la abstraccion del motor a base de datos, he creado una funcion en php que se llama ejecutar() este recibe una sentencia SQL para ser ejecutada, esta funcion se usa en todas las clases de mi programa. Ahora necesito hacer una especie de auditoria sobre el motor, es decir necesito guardar en una tabla todos los procesos que se hagan sobre las tablas (DML y DLL), ejemplo:

si hago un update, debo guardar en una tabla los siguientes datos, tabla afectada, campos afectados, valores que se agregaron, tipo de proceso (update, insert, select, etc..) alguien tiene una idea de como puedo hacer esto, o si adodb tiene implementado algo, por que la unica alternativa que veo es cuando recibo el SQL a ejecutar, comenzar a descomponerlo, verificar como inicia e ir haciendo explodes sacando los datos relevantes de la sentencia, si alguien conoce un proceso mas adecuado se lo agradezco.

gracias.
  #2 (permalink)  
Antiguo 12/09/2011, 13:39
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Auditoria sobre acciones sobre una base datos

vos en tu clase debes tener algo asi:
$this->dbconnection = NewADOConnection($this->dbtype);
$this->dbconnection->SetFetchMode(ADODB_FETCH_ASSOC);
$connect_result = $this->dbconnection->Connect("$host", "$user", "$password", "$database_name");

y podes hacer esto:
$myClase->dbconnection->debug=true;
  #3 (permalink)  
Antiguo 12/09/2011, 13:41
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Auditoria sobre acciones sobre una base datos

Cita:
Iniciado por Patriarka Ver Mensaje
vos en tu clase debes tener algo asi:
$this->dbconnection = NewADOConnection($this->dbtype);
$this->dbconnection->SetFetchMode(ADODB_FETCH_ASSOC);
$connect_result = $this->dbconnection->Connect("$host", "$user", "$password", "$database_name");

y podes hacer esto:
$myClase->dbconnection->debug=true;
Efectivamente lo tengo asi, y guardo un log de todo el debug de mi aplicacion, el problema es que tengo que llevar ese debug a una tabla con campos como "Acccion, Tablas_afectadas,Campos_afectados,valores" esto con el fin de cumplir estándares de programación y la ISO 27001 en mi pais. Despues de tener eso en una tabla ya podría generar informes y auditar el software.

Gracias.
  #4 (permalink)  
Antiguo 12/09/2011, 14:06
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Auditoria sobre acciones sobre una base datos

y bueno si los guardas linea por linea tendrias que extraerlos desde el log que generas
es medio rebuscado lo tuyo por que el adodb lo hace una sola forma, no tendria q ser tan dificil
  #5 (permalink)  
Antiguo 12/09/2011, 14:13
 
Fecha de Ingreso: agosto-2007
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Auditoria sobre acciones sobre una base datos

Totalmende deacuerdo, pero yo puedo tener sentencias sql muy complejas, select anidados, insert select, join, y deberia ser capaz de traer las tablas adectadas en una selentencia sql de esas. mientras sea un select * from tabla, no hay problema pero puedo encontrarme con select mas complejos, pense que existia algo en adodb asi como tienen algo para affectted rows, poder obtener tablas afectadas, campos afectados, o algo por el estilo. Gracias por tus respuestas.

Etiquetas: acciones, auditoria, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:36.