BITÁCORA DE BASE DE
DATOS
ADMINISTRACIÓN DE BASE DE DATOS
Que es una Bitácora:
Que es una Bitácora:

Herramienta que permite registrar,
analizar, detectar y notificar eventos que
sucedan en cualquier sistema de
información       utilizado      en     las
organizaciones.
La estructura más ampliamente usada
para grabar las modificaciones de la base
de datos.
RECUPERAR
                   INFORMACIÓN        ANTE
                   INCIDENTES           DE
  Cual es La       SEGURIDAD,    DETECCIÓN
                   DE     COMPORTAMIENTO
importancia de     INUSUAL,   INFORMACIÓN

               ?
                   PARA           RESOLVER
una bitácora       PROBLEMAS,    EVIDENCIA
                   LEGAL, ES DE GRAN AYUDA
                   EN   LAS    TAREAS   DE
                   CÓMPUTO FORENSE.
Permite guardar las transacciones realizadas sobre una
base de datos en especifico, de tal manera que estas
transacciones puedan ser auditadas y analizadas
posteriormente.

Pueden obtenerse datos específicos de la transacción como
son la Operación que se realizo, el Usuario de BD y
Windows, Fecha, Maquina y Programa.
Alertas
Registro y envío de notificaciones al momento en que se
produzca un evento de modificación de datos en los sistemas
de acuerdo a los criterios definidos por el usuario.

Envió de las notificaciones al correo electrónico de los
usuarios especificados para cada alerta, con posibilidad de
envío de mensaje a un teléfono móvil.
Enseguida plantearé un ejemplo de
una bitácora desarrollada para la
siguiente base de datos de MySQL.
CREATE DATABASE proyecto;

USE proyecto


CREATE TABLE IF NOT EXISTS `carrera` (`clave_carrera` int(11) NOT NULL,
`nom_carrera` varchar(20) NOT NULL, `num_depto` int(11) NOT NULL, PRIMARY KEY
(`clave_carrera`), KEY `num_depto` (`num_depto`) ) ENGINE=InnoDB DEFAULT
CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `departamento` ( `num_departamento` int(11) NOT
NULL,`nombre_dept` varchar(20) NOT NULL, `jefe_num_tarjet` int(11) NOT NULL,
PRIMARY KEY (`num_departamento`), KEY `jefe_num_tarjet` (`jefe_num_tarjet`) )
ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `maestros` (`num_tarjeta` int(11) NOT NULL DEFAULT
’0′,`nombre` varchar(50) DEFAULT NULL, PRIMARY KEY (`num_tarjeta`))
ENGINE=InnoDB DEFAULT CHARSET=latin1;
La estructura de la tabla bitácora sería la siguiente:




La estructura de la tabla bitácora sería la siguiente:
CREATE TABLE IF NOT EXISTS `bitacora` (`id` int(11) NOT NULL AUTO_INCREMENT,
`operacion` varchar(10) DEFAULT NULL, `usuario` varchar(40) DEFAULT NULL,
`host` varchar(30) NOT NULL, `modificado` datetime DEFAULT NULL, `tabla`
varchar(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB             DEFAULT
CHARSET=latin1 AUTO_INCREMENT=1 ;
La estructura de la tabla bitácora sería la siguiente:




La estructura de la tabla bitácora sería la siguiente: La bitácora debe
registrar todos los movimientos (insertar, eliminar y modificar) que se
realicen en las tablas de la base de datos. Para lograr lo anterior es
necesario crear un trigger para que se ejecute después de la operación
de insertar, otro para después de eliminar y el último para después de
modificar para cada una de las 3 tablas de la base de datos.
DROP TRIGGER IF EXISTS `bit_carr_ins`;
DELIMITER //
CREATE TRIGGER `bitacora` AFTER INSERT ON `carrera`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla)
VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)),
SUBSTRING(USER(),1,(instr(user(),’@')-1)), “INSERTAR”, NOW(), “CARRERA”)
//
DROP TRIGGER IF EXISTS `bit_carr_upd`;
CREATE TRIGGER `bit_carr_upd` AFTER UPDATE ON `carrera`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla)
VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)),
SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ACTUALIZAR”, NOW(), “CARRERA”)
//
DROP TRIGGER IF EXISTS `bit_carr_del`;
CREATE TRIGGER `bit_carr_del` AFTER DELETE ON `carrera`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla)
VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)),
SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ELIMINAR”, NOW(), “CARRERA”)
//
DROP TRIGGER IF EXISTS `bit_depto_ins`;
CREATE TRIGGER `bit_depto_ins` AFTER INSERT ON `departamento`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla)
VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-
1)), “INSERTAR”, NOW(), “DEPARTAMENTO”)
//
DROP TRIGGER IF EXISTS `bit_depto_upd`;
CREATE TRIGGER `bit_depto_upd` AFTER UPDATE ON `departamento`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla)
VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-
1)), “ACTUALIZAR”, NOW(), “DEPARTAMENTO”)
//
DROP TRIGGER IF EXISTS `bit_depto_del`;
CREATE TRIGGER `bit_depto_del` AFTER DELETE ON `departamento`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla)
VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-
1)), “ELIMINAR”, NOW(), “DEPARTAMENTO”)
//
DROP TRIGGER IF EXISTS `bit_mae_ins`;
CREATE TRIGGER `bit_mae_ins` AFTER INSERT ON `maestros`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla)
VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-
1)), “INSERTAR”, NOW(), “MAESTROS”)
//
DROP TRIGGER IF EXISTS `bit_mae_upd`;
CREATE TRIGGER `bit_mae_upd` AFTER UPDATE ON `maestros`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla)
VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)),
“ACTUALIZAR”, NOW(), “MAESTROS”)
//
DROP TRIGGER IF EXISTS `bit_mae_del`;
CREATE TRIGGER `bit_mae_del` AFTER DELETE ON `maestros`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla)
VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)),
“ELIMINAR”, NOW(), “MAESTROS”)
No se requiere hacer cambios en los sistemas de producción para la implementación de la
bitácora.

A través de la para metrización se generan las pantallas de consulta y reportes sin necesidad de programar.

Acceso a la bitácora a través de una aplicación WEB.

Control de Acceso a la información de la bitácora a través de Roles.

Se puede implementar en los sistemas de información que utilicen Las principales bases de datos del mercado:
ORACLE, SQL SERVER, INFORMIX, SYBASE.

Permite hacer el seguimiento de todos los cambios que ha tenido un registro.

Registra información acerca de eventos relacionados con el sistema que la genera.

Bitácora de base de datos

  • 1.
    BITÁCORA DE BASEDE DATOS ADMINISTRACIÓN DE BASE DE DATOS
  • 2.
    Que es unaBitácora:
  • 3.
    Que es unaBitácora: Herramienta que permite registrar, analizar, detectar y notificar eventos que sucedan en cualquier sistema de información utilizado en las organizaciones. La estructura más ampliamente usada para grabar las modificaciones de la base de datos.
  • 4.
    RECUPERAR INFORMACIÓN ANTE INCIDENTES DE Cual es La SEGURIDAD, DETECCIÓN DE COMPORTAMIENTO importancia de INUSUAL, INFORMACIÓN ? PARA RESOLVER una bitácora PROBLEMAS, EVIDENCIA LEGAL, ES DE GRAN AYUDA EN LAS TAREAS DE CÓMPUTO FORENSE.
  • 5.
    Permite guardar lastransacciones realizadas sobre una base de datos en especifico, de tal manera que estas transacciones puedan ser auditadas y analizadas posteriormente. Pueden obtenerse datos específicos de la transacción como son la Operación que se realizo, el Usuario de BD y Windows, Fecha, Maquina y Programa.
  • 6.
    Alertas Registro y envíode notificaciones al momento en que se produzca un evento de modificación de datos en los sistemas de acuerdo a los criterios definidos por el usuario. Envió de las notificaciones al correo electrónico de los usuarios especificados para cada alerta, con posibilidad de envío de mensaje a un teléfono móvil.
  • 7.
    Enseguida plantearé unejemplo de una bitácora desarrollada para la siguiente base de datos de MySQL.
  • 8.
    CREATE DATABASE proyecto; USEproyecto CREATE TABLE IF NOT EXISTS `carrera` (`clave_carrera` int(11) NOT NULL, `nom_carrera` varchar(20) NOT NULL, `num_depto` int(11) NOT NULL, PRIMARY KEY (`clave_carrera`), KEY `num_depto` (`num_depto`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `departamento` ( `num_departamento` int(11) NOT NULL,`nombre_dept` varchar(20) NOT NULL, `jefe_num_tarjet` int(11) NOT NULL, PRIMARY KEY (`num_departamento`), KEY `jefe_num_tarjet` (`jefe_num_tarjet`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `maestros` (`num_tarjeta` int(11) NOT NULL DEFAULT ’0′,`nombre` varchar(50) DEFAULT NULL, PRIMARY KEY (`num_tarjeta`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  • 9.
    La estructura dela tabla bitácora sería la siguiente: La estructura de la tabla bitácora sería la siguiente: CREATE TABLE IF NOT EXISTS `bitacora` (`id` int(11) NOT NULL AUTO_INCREMENT, `operacion` varchar(10) DEFAULT NULL, `usuario` varchar(40) DEFAULT NULL, `host` varchar(30) NOT NULL, `modificado` datetime DEFAULT NULL, `tabla` varchar(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  • 10.
    La estructura dela tabla bitácora sería la siguiente: La estructura de la tabla bitácora sería la siguiente: La bitácora debe registrar todos los movimientos (insertar, eliminar y modificar) que se realicen en las tablas de la base de datos. Para lograr lo anterior es necesario crear un trigger para que se ejecute después de la operación de insertar, otro para después de eliminar y el último para después de modificar para cada una de las 3 tablas de la base de datos.
  • 11.
    DROP TRIGGER IFEXISTS `bit_carr_ins`; DELIMITER // CREATE TRIGGER `bitacora` AFTER INSERT ON `carrera` FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “INSERTAR”, NOW(), “CARRERA”) // DROP TRIGGER IF EXISTS `bit_carr_upd`; CREATE TRIGGER `bit_carr_upd` AFTER UPDATE ON `carrera` FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ACTUALIZAR”, NOW(), “CARRERA”) // DROP TRIGGER IF EXISTS `bit_carr_del`; CREATE TRIGGER `bit_carr_del` AFTER DELETE ON `carrera` FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ELIMINAR”, NOW(), “CARRERA”) //
  • 12.
    DROP TRIGGER IFEXISTS `bit_depto_ins`; CREATE TRIGGER `bit_depto_ins` AFTER INSERT ON `departamento` FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')- 1)), “INSERTAR”, NOW(), “DEPARTAMENTO”) // DROP TRIGGER IF EXISTS `bit_depto_upd`; CREATE TRIGGER `bit_depto_upd` AFTER UPDATE ON `departamento` FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')- 1)), “ACTUALIZAR”, NOW(), “DEPARTAMENTO”) // DROP TRIGGER IF EXISTS `bit_depto_del`; CREATE TRIGGER `bit_depto_del` AFTER DELETE ON `departamento` FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')- 1)), “ELIMINAR”, NOW(), “DEPARTAMENTO”) //
  • 13.
    DROP TRIGGER IFEXISTS `bit_mae_ins`; CREATE TRIGGER `bit_mae_ins` AFTER INSERT ON `maestros` FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')- 1)), “INSERTAR”, NOW(), “MAESTROS”) // DROP TRIGGER IF EXISTS `bit_mae_upd`; CREATE TRIGGER `bit_mae_upd` AFTER UPDATE ON `maestros` FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ACTUALIZAR”, NOW(), “MAESTROS”) // DROP TRIGGER IF EXISTS `bit_mae_del`; CREATE TRIGGER `bit_mae_del` AFTER DELETE ON `maestros` FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado, tabla) VALUES (SUBSTRING(USER(), (INSTR(USER(),’@')+1)), SUBSTRING(USER(),1,(instr(user(),’@')-1)), “ELIMINAR”, NOW(), “MAESTROS”)
  • 15.
    No se requierehacer cambios en los sistemas de producción para la implementación de la bitácora. A través de la para metrización se generan las pantallas de consulta y reportes sin necesidad de programar. Acceso a la bitácora a través de una aplicación WEB. Control de Acceso a la información de la bitácora a través de Roles. Se puede implementar en los sistemas de información que utilicen Las principales bases de datos del mercado: ORACLE, SQL SERVER, INFORMIX, SYBASE. Permite hacer el seguimiento de todos los cambios que ha tenido un registro. Registra información acerca de eventos relacionados con el sistema que la genera.