Métodos para auditar cambios en datos SQL Server – la solución de auditoría SQL centralizada

En la parte previa de la serie de artículos Métodos para auditar cambios en datos SQL Server, nosotros describimos muchas características de auditoría nativas de SQL Server – Change Tracking, Change Data Capture y Audit. Nosotros describimos sus características únicas y compartidas, cómo almacenan la información capturada, cómo proveen la información, y explicamos las ventajas y desventajas de cada característica.

En este capítulo, nos enfocaremos en ApexSQL Audit, una herramienta de cumplimiento de normas y auditoría SQL Server diseñada para rastrear accesos y cambios en datos y objetos, intentos de accesos no autorizados, y cambios de seguridad. Usa una tecnología de trazas SQL Server (también usada por SQL Server Profiler), pero mejora la manera en que es nativamente usada por la información capturada de análisis adicional, y provee un almacenaje de información auditada centralizada de evidencia de manipulación.

ApexSQL Audit provee un GUI centralizado que es usad para establecer la configuración de auditoría en un lugar. La auditoría es posible a nivel de instancia de SQL Server, base de datos y objeto.

Centralized GUI in ApexSQL Audit used setting for up auditing configuration

Usando la GUI de ApexSQL Audit, la auditoría puede ser establecida en el servidor usando la sección Server filter settings para eventos DDL y de seguridad. Al nivel de base de datos, usando las secciones Database filter settings, Operation types y Objects se puede establecer una selección granular para operaciones de auditoría, eventos y objetos de base de datos.

ApexSQL Audit captura más de 200 operaciones y eventos, , disponibles en las siguientes categorías de auditoría:

  • DML – INSERT, INSERT BULK, SELECT INTO, WRITETEXT, UPDATE, MERGE, UPDATETEXT, DELETE, y TRUNCATE TABLE
  • DDL – Las sentencias ALTER, DROP y CREATE para todos los tipos de objetos, incluyendo renombramientos y otras operaciones similares
  • Execute – llama a funciones, procedimientos almacenados, procedimientos CLR y procedimientos almacenados extendidos
  • Query – SELECT, READTEXT parámetros de salida de EXEC
  • Warning – todas las operaciones emitidas como avisos por SQL Server
  • Security – todas las operaciones que afectan a la seguridad de una instancia SQL Server y sus bases de datos
  • Error – todas las operaciones reportadas como errores por SQL Server

Un filtrado adicional es provisto con el sistema de reportes de ApexSQL Audit.

La información auditada es capturada en la instancia de SQL Server anfitriona de la base de datos repositorio central de ApexSQL Audit, o en otras instancias SQL Server adicionales (locales o remotas). En caso de servidores remotos, los datos capturados son automáticamente transferidos y almacenados a la base de datos repositorio central de ApexSQL Audit.

A diferencia de las características nativas de SQL Server previamente descritas, ApexSQL Audit usa un repositorio centralizado para la información capturadas en múltiples instancias SQL Server y sus bases de datos.

Por otra parte, la base de datos repositorio central es una base de datos SQL Server con todos los beneficios derivados (por ejemplo, disponibilidad, seguridad…), y su localización (una instancia SQL Server que la contiene) es personalizable – es seleccionada durante el proceso de instalación.

El asistente de instalación consiste en muchos pasos, como es descrito en el artículo de la Base de conocimiento en línea Deploying ApexSQL Audit.

En el siguiente ejemplo, nosotros veremos cómo configurar la auditoría en una instancia particular de SQL Server, su base de datos, y cómo rastrear operaciones DML. En nuestro caso, nosotros auditaremos una instancia SQL Server llamada LENOVO, su base de datos ACMEDB, y dos tablas de bases de datos (Customers e Invoices). Para hacer eso, usando el GUI de ApexSQL Audit:

  1. Seleccione la instancia SQL Server deseada (LENOVO en nuestro caso)
  2. Seleccione la base de datos requerida para ser auditada (ACMEDB)
  3. Seleccione la opción DML en la sección Operation types
  4. Seleccione chequee las tablas que necesitan ser auditadas
  5. Confirme los cambios seleccionando la opción Apply

Setting up auditing on a particular SQL Server instance

Por motivos de prueba, insertaremos una nueva fila a la tabla Customers:

INSERT INTO dbo.Customers
VALUES (
	'John Doe'
	,'jdoe@acme.info'
	,'aValue'
	);

Para ver la información capturada inicie el módulo de reportes Web de ApexSQL Audit, ya sea abriendo la siguiente dirección en su navegador: http://localhost:41301/Reports/Common/Common.aspx, o seleccionando la opción View reports en la barra de herramientas principal del GUI de ApexSQL Audit.

El módulo de reportes centralizado ofrece acceso remoto a los reportes de ApexSQL Audit usando la plataforma Internet Information Services (IIS) la cual adicionalmente ofrece personalización de permisos de acceso.

Ofrece 30 reportes integrados divididos en muchos grupos, y un módulo de diseño de reportes personalizado.

ApexSQL Audit offers 30 built-in common reports divided into several groups

Los reportes integrados comunes pueden ser ordenados y filtrados especificando parámetros adicionales (una instancia SQL Server específica, un nombre de base de datos, el login usado, etc.), o especificando el tipo de la operación (por ejemplo, Select, Merge, Delete, Alter, Insert, etc.).

Para nuestro ejemplo, para ver la operación INSERT capturada:

  1. Seleccione la pestaña Common reports
  2. En la sección Change and activity auditing seleccione el reporte Data operations history
  3. Establezca los parámetros de filtro apropiados y haga clic en la opción Generate
  4. EL reporte resultante se verá así:

Showing the captured INSERT operation in Data operations history report

Si por alguna razón (por ejemplo, un diseño de reporte diferente) un reporte personalizado es requerido, usted puede usar el diseñador de reportes personalizado:

  1. Seleccione la pestaña Custom reports
  2. Arrastre los filtros deseados desde la sección Columns a la sección Filter, e ingrese los valores para los filtros seleccionados. Ingrese/seleccione los valores de los campos de filtro (por ejemplo, INSERT para el filtro Operation), el reporte personalizado mostrará el exacto rango de información requerida

    Custom report designer - setting up the Operation filter

  3. En la sección Display columns seleccione las columnas de su interés
  4. Haga clic en la opción Generate

ApexSQL Audit captura información que incluye el tiempo de la acción realizada, el nombre de usuario que realizó la acción, el servidor afectado, la base de datos y el objeto que fue el objetivo de la acción.

Provee la completa historia de acciones para los cambios de datos de la tabla con disposiciones de auditoría y reportes granulares. EL módulo es amigable al usuario y no requiere ningún conocimiento de T-SQL.

ApexSQL Audit viene con el GUI centralizado y el repositorio de información capturada que provee múltiples beneficios cuando se trata de configurar una auditoría en múltiples instancias SQL Server (locales y remotas), y mantenimiento de repositorio (por ejemplo, la característica integrada de archivar)

La siguiente tabla provee una comparación entre los métodos de auditoría descritos en esta serie de artículos:

Característica Rastreo de Cambios en SQL Server Captura de Cambios de Datos SQL Server Auditoría de SQL Server ApexSQL Audit
Cambios rastreados
Cambios DML Si Si Si Si
Información rastreada
Quién / Cuándo / Cómo Si Yes
Antes y después de UPDATEs Si
Ejecución SELECT Si Si
Características
Configuraciones de auditoria y repositorio centralizados Si
Repositorio de evidencia de manipulación Si
Repositorio de Archivos Si
Requerimientos
SQL Server edición Enterprise / Developer Si Si
Conocimiento de T-SQL Si *Si

*Requerido para análisis y reportes más profundos

Fuentes útiles
MSDN – SQL Server Audit Action Groups and Actions
MSDN – CREATE SERVER AUDIT (Transact-SQL)
Auditing database-level objects in SQL Express 2012
MSDN Work with Change Data (SQL Server)
MSDN – Change Data Capture Tables (Transact-SQL)
MSDN – cdc.<capture_instance>_CT
MSDN – Overview of Change Data Capture
MSDN – Change Data Capture and Other SQL Server Features
MSDN – Enable and Disable Change Data Capture (SQL Server)
MSDN – Enable and Disable Change Tracking (SQL Server)
MSDN – Change Tracking
MSDN – Comparing Change Data Capture and Change Tracking

Este artículo es parte de una serie

Véase la parte anterior        Ver todas las partes

Traductor: Daniel Calbimonte

junio 12, 2015