0% encontró este documento útil (0 votos)
182 vistas5 páginas

Crear Una Bitácora en MySQL

El documento describe cómo crear una bitácora en MySQL para registrar eventos como inserciones, eliminaciones y modificaciones realizadas en las tablas de una base de datos. Explica la estructura de una tabla de bitácora y los nueve triggers necesarios para registrar los cambios en tres tablas (carrera, departamento y maestros). El propósito es almacenar información sobre actividades del sistema que pueda ser útil para resolver problemas o realizar auditorías de seguridad.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
182 vistas5 páginas

Crear Una Bitácora en MySQL

El documento describe cómo crear una bitácora en MySQL para registrar eventos como inserciones, eliminaciones y modificaciones realizadas en las tablas de una base de datos. Explica la estructura de una tabla de bitácora y los nueve triggers necesarios para registrar los cambios en tres tablas (carrera, departamento y maestros). El propósito es almacenar información sobre actividades del sistema que pueda ser útil para resolver problemas o realizar auditorías de seguridad.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Crear una bitcora en MySQL

WRI TTEN BY: MTRO. GUSTAVO REYES HERNNDEZ - JUN 0910


Con el crecimiento de Internet, y el desarrollo de sistemas de informacin bajo la
arquitectura Cliente/Servidor, los sistemas de cmputo ,en general, estn expuestos a
mltiples amenazas, vulnerabilidades y ataques cada vez ms complejos. Por lo tanto, es
importante que las organizaciones implementen bitcoras (o archivos logs) para almacenar
los sucesos que ocurren en el sistema. La informacin contenida en una bitcora es muy
importante y til cuando ocurre un incidente de seguridad o cuando se realiza una auditora
de sistemas.
Una bitcora puede registrar mucha informacin acerca de eventos relacionados con el
sistema que la genera los cuales pueden ser:
Fecha y hora.
Host origen.
Usuario.
Actividad realizada.
La importancia de las bitcoras es la de recuperar informacin ante incidentes de seguridad,
deteccin de comportamiento inusual, informacin para resolver problemas, evidencia
legal, es de gran ayuda en las tareas de cmputo forense.
Enseguida plantear un ejemplo de una bitcora desarrollada para la siguiente base de datos
de MySQL, llamada proyecto, que tiene las tablas carrera, departamento y maestros.
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 bitcora sera 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 bitcora 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 despus de la operacin de insertar, otro para
despus de eliminar y el ltimo para despus de modificar para
cada una de las 3 tablas de la base de datos. Los nueve triggers
necesarios para que funcione la bitcora son los siguientes:
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)
//
El resultado que se espera de la bitcora se muestra en la
siguiente imagen.

Espero que puedan implementar sus propias bitacoras en
todas las bases de datos que implementen de ahora en adelante.

También podría gustarte