Audite una base de datos SQL Server y vea quién eliminó un valor de columna

Cada Administrador de Base Datos y desarrollador se esfuerza por estar en control de los servidores, bases de datos y datos SQL. Pero a veces la situación puede salirse de control y cosas inusuales comienzan a pasar.

Por ejemplo, usted ha notado que un valor de una columna específica de una tabla en su base de datos ha desaparecido. Usted ha verificado su código todo lo posible y no encontró nada que elimine el valor de la columna, los usuarios dicen que no lo eliminaron, usted ha verificado los permisos en esta tabla/columna y se dio cuenta de que ninguna eliminación desautorizada fue permitida. Pero algo está obviamente mal.

ApexSQL Trigger es una herramienta de auditoría para bases de datos SQL Server, la cual captura los cambios en los datos que hayan ocurrido en la base de datos, incluyendo la información acerca de quién hizo el cambio, cuándo, qué objetos fueron afectados, así como la información del login SQL, la aplicación y el anfitrión usados para hacer el cambio. Almacena toda la información capturada en un repositorio central y la exporta en formatos amigables para la impresión.

Para auditar su base de datos SQL Server y ver quién elimina los datos, cuándo y con qué aplicación y computadora:

  1. Inicie ApexSQL Trigger
  2. En la ventana Main, haga clic en el botón New para crear un nuevo proyecto
  3. Conéctese a la base de datos que desea auditar:

    El usuario necesita tener al menos el rol db_datareader en la base de datos msdb y ser un db_owner de la base de datos auditada.

  4. Si la arquitectura de auditoría de la base de datos no está instalada, se le pedirá que la instale. Haga clic en el botón Yes cuando se le pida Instalar, dado que sin ello la auditoría a la base de datos no es posible. La arquitectura de auditoría contiene objetos de la base de datos que permiten la auditoría – procedimientos almacenados, funciones, vistas y tablas – que capturan los cambios en la base de datos, los almacena y extrae para reportes:

  5. La lista de los scripts y objetos que instala la arquitectura es mostrada. Haga clic en el botón Install para añadir la arquitectura de auditoría a la base de datos auditada:

  6. Seleccione la tabla que desea auditar en la Cuadrícula Principal. Por ejemplo, seleccione la tabla CreditCard si los valores de CreditCardID están desapareciendo.
  7. En el panel Fields for CreditCard, seleccione las columnas que desea auditar:

    La tabla en la Cuadrícula Principal será designada como Prepared

  8. Para auditar sólo las operaciones de eliminación de la fila entera, des-seleccione las columnas Insert y Update para la tabla CreditCard. Para auditar las operaciones de eliminación de una columna específica, seleccione Update, dado que la columna es realmente actualizada a un valor NULL

  9. Haga clic en la opción Create en la pestaña Home del grupo Actions para crear desencadenadores
  10. El script DDL que crea desencadenadores para la tabla CreditCard es mostrado en el editor interno ApexSQL Trigger. Para crear desencadenadores, haga clic en el botón Execute en el menú, o presione F5:

Usted será notificado de que los desencadenadores fueron creados exitosamente:

La tabla CreditCard será marcada como Audited en la Cuadrícula Principal:

Para mostrar cómo realmente funciona esto, muchos números de tarjetas de crédito fueron eliminados usando SQL Server Management Studio con un login personal y ApexSQL Edit con un login de prueba.

Entonces ApexSQL Trigger fue iniciado y un reporte estándar fue generado, filtrado por la tabla CreditCard para reducir los resultados. Los resultados mostrados: Los nombres de usuarios, máquinas y aplicaciones usadas, la hora en que los registros fueron cambiados y los valores antiguos y nuevos:

Auditar una base de datos y rastrear cambios en la base de datos no tiene que ser una tarea que consuma demasiado tiempo de monitoreo y espera porque el incidente ocurra. Sólo abra el reporte estándar del Desencadenador y vea cuándo, cómo y quién ha estado manipulando sus datos.

Traductor: Daniel Calbimonte

junio 4, 2015