Me llamo Noel, estoy cursando la maestría de Software Libre en la ciudad de
Sucre - Bolivia.

Mi trabajo se basa en el "Diseño del modelo de bases de datos relacionales
*auditables*". Título aún no bien definido.

He podido ver que las implementaciones con controles de auditoría y
seguridad en las bases de datos relacionales no se encuentran debidamente
formalizados y estandarizados, ocasionando complejidad y deficiencia en la
ejecución de procesos de auditoría.

Sería deseable contar con un modelo uniforme (estándar) de bases de datos
en cuanto a su implementación de controles de auditoría.

Por ello, pretendo diseñar una propuesta (convenciones, buenas prácticas,
modelo; aún no defino el término) de estándar abierto de diseño del modelo
de base de datos relacionales con controles de auditoría y seguridad que
permita realizar el control de registros de modificaciones, adiciones y
eliminaciones de datos en las bases de datos relacionales.

En consecuencia, he estado viendo muchos artículos y alternativas actuales,
tal es el caso de CianAudit y pgAudit de PostgreSQL. Específicamente
pgAudit, la cual es una alternativa nueva muy poderosa pero personalmente
al usarla creo que hay mucho que mejorar (al menos en la parte de DML), así
como en las otras alternativas.

Por ejemplo, en cuanto al DML, CianAudit y PgAudit tienen un comportamiento
similar, ambos  almacenan la información de auditoría en una sola tabla en
un esquema nuevo dentro de la misma base de datos. En donde puedo notar:

   -

   Al momento de obtener un backup de toda la base de datos, va a ser
   exponencialmente grande en cuanto a su tamaño en disco, a pesar de que es
   posible obtener backups por esquema.
   -

   Al encontrase el esquema de auditoría dentro de la misma base de datos,
   el espacio en disco aumenta exponencialmente, ya que esa tabla será la más
   grande en tamaño en disco de todas las tablas.
   -

   Al almacenar un nuevo registro por cada campo de una tabla, si una tabla
   tiene 15 columnas, entonces se tendrían 15 inserciones en la tabla de
   auditoria.
   -

   Al almacenar en una sola tabla, una tupla por cada cambio en campo
   modficado de cualquier tabla, es más costoso el procesamiento interno en
   caso de reconstrucción de la información para rollback o ejecución de un
   delete from <table> sin condición.

Para lo arriba expuesto, yo podría recomendar:

   -

   Al momento de generar la auditoría que sea en una nueva base de datos.
   Para mayor seguridad y menor tamaño de los backups total de la base de
   datos.
   -

   Que la base de datos de auditoría esté en otro disco, separado al de la
   base de datos en producción. Para mayor seguridad y ayudar a que el disco
   de producción no se llene más rápido.
   - Que se tenga al menos una partición exclusiva para auditoría. Para
   mayor seguridad y modularizar más los datos.
   - En la base de datos de auditoría, tener una tabla casi idéntica a la
   de producción, con todos los campos que tiene cada tabla (o los que se
   especifique), pero que tenga su propio identificador o clave primaria de
   auditoría y adicionarle en la tabla de auditoría campos adicionales de
   auditoría (acción sql, fecha, usuario, ip, y otros que ya se consideran).
   Ayuda a tener los datos mejor organizado y facilitaría la reconstrucción de
   información.
   - Que sólo el usuario postgres y otro específicos de auditoría tenga
   acceso a la base de datos de auditoría. y.... demás controles de roles y
   cifrado que puedan implementarse.

Son algunas ideas que pueden considerarse en las auditorías de PostgreSQL
(pgAudit), que inicialmente podría ser una configuración adicional.

Espero sus opiniones y retro alimentación.  :)

Noel Vaca Moreno

Reply via email to