Bitácora de base de datos

15
BITÁCORA DE BASE DE DATOS ADMINISTRACIÓN DE BASE DE DATOS

Transcript of Bitácora de base de datos

Page 1: Bitácora de base de datos

BITÁCORA DE BASE DE DATOSADMINISTRACIÓN DE BASE DE DATOS

Page 2: Bitácora de base de datos

Que es una Bitácora:

Page 3: Bitácora de base de datos

Que es una Bitácora:

Herramienta que permite registrar,analizar, detectar y notificar eventos quesucedan en cualquier sistema deinformación utilizado en lasorganizaciones.

La estructura más ampliamente usadapara grabar las modificaciones de la basede datos.

Page 4: Bitácora de base de datos

Cual es La importancia de

una bitácora?

RECUPERARINFORMACIÓN ANTEINCIDENTES DESEGURIDAD, DETECCIÓNDE COMPORTAMIENTOINUSUAL, INFORMACIÓNPARA RESOLVERPROBLEMAS, EVIDENCIALEGAL, ES DE GRAN AYUDAEN LAS TAREAS DECÓMPUTO FORENSE.

Page 5: Bitácora de base de datos

Permite guardar las transacciones realizadas sobre unabase de datos en especifico, de tal manera que estastransacciones puedan ser auditadas y analizadasposteriormente.

Pueden obtenerse datos específicos de la transacción comoson la Operación que se realizo, el Usuario de BD yWindows, Fecha, Maquina y Programa.

Page 6: Bitácora de base de datos

AlertasRegistro y envío de notificaciones al momento en que seproduzca un evento de modificación de datos en los sistemasde acuerdo a los criterios definidos por el usuario.

Envió de las notificaciones al correo electrónico de losusuarios especificados para cada alerta, con posibilidad deenvío de mensaje a un teléfono móvil.

Page 7: Bitácora de base de datos

Enseguida plantearé un ejemplo de una bitácora desarrollada para la siguiente base de datos de MySQL.

Page 8: Bitácora de base de datos

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;

Page 9: Bitácora de base de datos

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:

Page 10: Bitácora de base de datos

La estructura de la tabla bitácora sería la siguiente: La bitácora deberegistrar todos los movimientos (insertar, eliminar y modificar) que serealicen en las tablas de la base de datos. Para lograr lo anterior esnecesario crear un trigger para que se ejecute después de la operaciónde insertar, otro para después de eliminar y el último para después demodificar para cada una de las 3 tablas de la base de datos.

La estructura de la tabla bitácora sería la siguiente:

Page 11: Bitácora de 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”)

//

Page 12: Bitácora de base de datos

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”)

//

Page 13: Bitácora de base de datos

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”)

Page 14: Bitácora de base de datos
Page 15: Bitácora de base de datos

No se requiere hacer cambios en los sistemas de producción para la implementación de labitá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.