lunes, julio 20, 2009

Auditoria para los registros de BD en Postgresql con tablelog (I parte)

Es posible, que alguna vez haga falta realizar auditoría de los datos de algún sistema. Algo así como, quien hizo qué y cuándo. Dicho de otro modo, supongamos que existe el sistema de catastro de X institución, y que varios usuarios alimentan, de manera que varios usuarios podrían, ocasionalmente, insertar, modificar y/o eliminar registros... ¿pero cuál de ellos insertó/modificó/eliminó el registro X? de algo de eso se trata esto...

Existen varias formas de realizar este tipo de auditorías, siempre va a depender de la necesidad, por lo que el más seguro será el que esté hecho a la medida. También, existen diferentes formas de hacerlo, revisando los logs del sistema, etc.

En este post, sólo trataré de traducir lo que dice en el sitio oficial de tablelog y mis comentarios sobre el cómo lo estoy haciendo funcionar.

Paso a paso:
  1. Descargar los fuentes de: pgfoundry http://pgfoundry.org/projects/tablelog
  2. Desempaquetar el archivo, cambiarse la directorio donde acaba de descomprimirse, y ejecutar en la cónsola: make -f Makefile.nocontrib . Esto debería ejecutar sin problemas, sí obtiene algún error, es posible que necesite la versión de desarrollo de su versión de Postgresql. Sí la compilación se realizó con éxito, la librería ya está instalada.
  3. Como root, ejecutar: Makefile.nocontrib make-f install . Esto instalará la biblioteca en el directorio de la biblioteca de PostgreSQL.
  4. Ahora le decimos a la BD que queremos utilizar tablelog. Recordemos que tenemos que tener plpgsql instalado para la BD a auditar. Conectados como superusuario (de la BD) ejecutamos para la BD que deseamos el script: table_log.sql . Además de crear la estructura necesaria, le creará un par de tablas (test y test_log) para que pueda observar más o menos el funcionamiento de tablelog.
  5. Después de esto usted puede añadir algunas funciones de apoyo que harán la vida más fácil, usted puede encontrar en el archivo table_log_init.sql.
Y esto es todo, ahora puede utilizar tablelog en su base de datos. Con tablelog se pueden hacer algunas otras cosas algunas, de las que se habla en el sitio original... y en el código fuente jeje