Quantcast
Channel: Auditoría de SQL – Solution center
Viewing all 17 articles
Browse latest View live

Cumplimiento de la HIPAA para Administradores de Bases de Datos SQL Server

$
0
0

La Ley de Responsabilidad y Transferibilidad de Seguros Médicos (Health Insurance Portability and Accountability Act, HIPAA) es un acto de seguridad que establece estándares para asegurar la seguridad, privacidad, confidencialidad, integridad y disponibilidad de la información de salud de los pacientes – Información de Salud Protegida electrónicamente (Protected Health Information, PHI). The HIPAA compliance requires […]

The post Cumplimiento de la HIPAA para Administradores de Bases de Datos SQL Server appeared first on SQL solution center.


Obtenga una alerta cuando un cierto registro cambia en SQL Server

$
0
0

Auditar una base de datos es el primer paso hacia mantenerse actualizado acerca de cambios en la base de datos. De todas maneras, si datos específicos y altamente sensitivos necesitan revisión, una notificación inmediata de cualquier cambio es preferible. Mandar correos electrónicos de alerta a uno o más recipientes es una de las maneras más […]

The post Obtenga una alerta cuando un cierto registro cambia en SQL Server appeared first on SQL solution center.

Auditando sentencias SELECT en SQL Server

$
0
0

Aunque las sentencias SELECT no son destructivas por naturaleza ni tampoco pueden cambiar datos o esquemas, hay muchos cases que requieren su auditoría en SQL Server. Las sentencias SELECT ejecutadas pueden indicar varios problemas actuales o potenciales, y esta es la razón por la cual es importante saber quién vio qué y cuándo. En general, […]

The post Auditando sentencias SELECT en SQL Server appeared first on SQL solution center.

Auditoría a desencadenadores en bases de datos SQL Server

$
0
0

Uno de los tópicos de seguridad esenciales de SQL Server es encontrar quién hizo algo, qué y cuándo. La capacidad de proveer una historia de datos para varios propósitos de auditoría, algunos de los cuales son reforzados por leyes de Estados Unidos a través de regulaciones de cumplimiento, es una tarea seria para cualquier Administrador […]

The post Auditoría a desencadenadores en bases de datos SQL Server appeared first on SQL solution center.

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

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

$
0
0

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 […]

The post Métodos para auditar cambios en datos SQL Server – la solución de auditoría SQL centralizada appeared first on SQL solution center.

Seguridad y cumplimiento de normas para bases de datos SQL Server

$
0
0

Cuando se discute la seguridad de SQL Server, uno de los términos más importantes es entidad de seguridad. Las entidades de seguridad son entidades de SQL Server, organizadas en una jerarquía, la cual puede requerir recursos de SQL Server específicos. Hay varias entidades de seguridad en SQL Server, y en este artículo nos enfocaremos en […]

The post Seguridad y cumplimiento de normas para bases de datos SQL Server appeared first on SQL solution center.

Técnicas de auditoría de bases de datos SQL Server

$
0
0

La auditoría de bases de datos SQL Server no es usada solamente para cumplir con requerimientos de conformidad. Se ha vuelto necesaria para el análisis de acciones de bases de datos, soluciones de problemas y la investigación de actividades sospechosas y maliciosas. La auditoría también puede ayudar a evitar acciones inapropiadas de parte de los […]

The post Técnicas de auditoría de bases de datos SQL Server appeared first on SQL solution center.


Rastrear cambios de seguridad en una base de datos SQL Server

$
0
0

Configurar un ambiente seguro y a salvo para su instancia SQL Server es una tarea compleja. La seguridad de SQL Server debe ser configurada en la instancia SQL Server, en el sistema operativo, cortafuegos, el programa antivirus, etc. Pero fallar en configurar la seguridad apropiadamente puede traer muchos dolores de cabeza e incluso daños irreversibles. […]

The post Rastrear cambios de seguridad en una base de datos SQL Server appeared first on SQL solution center.

Cómo asegurar una auditoría continua de SQL Server con cero pérdidas de datos

$
0
0

Un enfoque de auditoría continua de SQL Server debe incluir:

  1. Auditoría continua
  2. Recolección de datos en tiempo real
  3. Habilidad de generar reportes significativos
  4. Alertas de actividades no deseadas
  5. Un almacenaje a prueba de modificaciones no deseadas de la auditoría de datos

En muchos casos, el requerimiento primario que debe cumplirse es que la auditoría se debe realizar con cero pérdidas de datos de auditoría..

Y es aquí donde soluciones de terceros como ApexSQL Audit pueden ayudar.

ApexSQL Audit

ApexSQL Audit es una  herramienta de auditoría y cumplimiento de normas para SQL Server, la cual audita más de 200 eventos SQL Server y almacena los datos recolectados en una base de datos repositorio central a prueba de modificaciones. La información capturada está disponible a través de un rango de reportes integrados con un diseñador adicional de reportes personalizados para cumplir con los requerimientos del usuario. La herramienta permita auditorías a nivel de empresa y cumplimiento con un cliente particular, mientras que reduce los riesgos con alertas en tiempo real.

ApexSQL Audit está diseñado para cumplir los requerimientos para una auditoría continua en SQL Server. La aplicación está cuidadosamente diseñada para prevenir cualquier pérdida de datos auditados incluso en situaciones de fallas de hardware o software. ApexSQL Audit está diseñado para asegurar la máxima continuidad del flujo de datos auditados incluso en casos de fallas de la red o la base de datos.

Componentes de sistema y descripciones de ApexSQL Audit

El sistema de ApexSQL Audit incluye una instancia central que instala en la misma máquina donde reside la base de datos repositorio central. Las instancias de auditoría independientes están instaladas en cada máquina que hospeda la instancia SQL Server auditada, como se ilustra en el siguiente diagrama.

La instancia central de ApexSQL Audit es un servicio de Windows que puede ser descrito como un nodo de comunicación inteligente que recibe, envía y distribuye información entre varios componentes de aplicación. La instancia central de ApexSQL Audit archiva los datos auditados recibidos de las instancias de auditoría en la base de datos repositorio central. A diferencia de la instancia central, la instancia auditada está a cargo de la auditoría directa de las instancias SQL Server, procesando los datos auditados y enviándolos a la instancia central.

Al inicio del proceso de auditoría, los eventos/cambios SQL Server a ser auditados deben ser seleccionados. Esto puede lograrse vía los filtros de auditoría localizados en la GUI de ApexSQL Audit de acuerdo con los requerimientos del usuario final.

Una vez que el usuario establece los filtros de auditoría para cada instancia de auditoría SQL Server, la GUI pasará la información del filtro de auditoría a la instancia central, que la procesará y distribuirá la configuración de filtro de auditoría apropiada a cada instancia de auditoría.

Cada instancia de auditoría está diseñada para trabajar como una entidad independiente en la computadora que la hospeda, iniciando la auditoría de SQL Server y recolectando datos auditados.

Nota: La instancia ApexSQL Auditing es un servicio de Windows que corre como un componente de Windows en la máquina que hospeda la instancia SQL Server. No es un componente de SQL Server y ApexSQL Audit no instala ningún agente/componente en las instancias SQL Server auditadas.

Los datos auditados recolectados son procesados y filtrado localmente por la instancia de auditoría antes de ser enviados a la instancia central. Sólo los datos requeridos en concordancia con la configuración de filtro de auditoría recibido serán enviados a la instancia central, por tanto creando un mínimo impacto en la red.

Continuidad de la auditoría en caso de una falla de comunicación de red

Un desafío se forma si la comunicación entre las instancias central y auditada es interrumpida (por ejemplo, debido a problemas de red). En el momento cuando la comunicación es interrumpida, por cualquier razón, la instancia auditada comenzará temporalmente a almacenar datos auditados en el disco duro local.

Independientemente de cuánto tiempo es interrumpida la comunicación entre las instancias central y auditada, siempre que exista la interrupción, la instancia auditada continuará almacenando los datos auditados en el sistema de archivos local. Por tanto, es necesario asegurar suficiente espacio libre en el disco duro del servidor auditado.

Nota: Para asegurar la máxima seguridad de los datos, se recomienda ampliamente tener un dispositivo de almacenamiento HDD dedicado. La localización para los archivos temporales es configurable durante la instalación de la instancia de auditoría.

Tan pronto como la comunicación entre las instancias de auditoría y central se restablece, la instancia de auditoría inmediatamente continuará enviando los datos auditados almacenados en el sistema de archivos local a la instancia central. Después de que la instancia central manda de vuelva una confirmación de que un paquete de datos es recibido, la instancia de auditoría borrará los datos del disco duro, liberando el espacio temporalmente ocupado en el sistema de archivos.

Continuidad de la auditoría en el caso de una falla de la base de datos de la instancia de auditoría central

Un mecanismo adicional de seguridad de ApexSQL Audit estça disponible para asegurar la continuidad en situaciones cuando la instancia SQL Server que hospeda la base de datos repositorio central experimenta problemas. En la situación cuando la instancia central de ApexSQL Audit no puede comunicarse con la base de datos repositorio central, y por tanto no puede almacenar los datos auditados recibidos de las instancias de auditoría, un mecanismo será desencadenado para asegurar que la instancia almacene todos los datos auditados en el sistema de archivos local, hasta que se restablezca la comunicación con la base de datos repositorio central.

Después de que la comunicación es restablecida con la base de datos repositorio central, la instancia central de ApexSQL Audit comenzará a transferir los datos auditados del sistema de archivos a la base de datos repositorio central.

Nota: Los mismos principios válidos para la configuración del almacenamiento HDD de la instancia de auditoría son aplicables aquí también. Un tamaño adecuado del espacio de almacenamiento HDD debe ser asegurado para el repositorio central.

La combinación de salvaguardias contra fallas remotas y/o locales de red o de base de datos, implementadas en ApexSQL Audit, asegura la confiabilidad de los datos auditados y la continuidad del proceso de auditoría.

Traductor: Daniel Calbimonte

The post Cómo asegurar una auditoría continua de SQL Server con cero pérdidas de datos appeared first on Solution center.

Auditoría de seguridad de bases de datos SQL Server

$
0
0

Las siguientes implementaciones de auditoría son recomendadas al nivel de base de datos como parte de cualquier sistema de auditoría de seguridad de bases de datos:

  1. Auditoría a nivel de esquema:
    • Actividad DDL
    • Cambios hechos a los procedimientos almacenados y desencadenadores
    • Cambios en los privilegios, usuarios y atributos de seguridad
  2. Auditoría a nivel de datos:
    • Cambios en datos sensibles (actividad DML)
    • Sentencias SELECT
  3. Cualquier cambio en los ajustes de auditoría

Estos son algunas soluciones de auditoría de seguridad de base de datos nativas que pueden ayudar a cumplir estos requerimientos.

Auditoría a nivel de esquema

Los comandos DDL, desde un punto de vista de seguridad, tienen un alto potencial para uso malicioso y pueden ser fácilmente usados para comprometer cualquier base de datos del sistema.

Hay algunas maneras de auditar la actividad DDL:

  • La característica SQL Server Audit o los archivos de rastreo de SQL Server
  • Desencadenadores DDL
  • Comparación de instantáneas de esquema

Para el propósito de este artículo, no consideraremos los desencadenadores DDL y la comparación de instantáneas de esquema, sin embargo revisaremos SQL Server Audit y los archivos de rastreo.

La característica SQL Server Audit es un modo de auditoría de SQL Server nativo, basado en los eventos extendidos de SQL Server. Introducido con SQL Server 2008, es el método menos intrusivo y por tanto generalmente recomendado para la auditoría de actividades DDL. Puede almacenar los eventos de auditoría cuando sea que ocurran en el registro de seguridad o el registro de eventos de la aplicación, pero el método recomendado, el cual será descrito en este artículo, es almacenar los eventos en el archivo de auditoría.

Nota: La auditoría de actividades a nivel de base de datos, y por tanto la auditoría de seguridad de la base de datos usado SQL Server Audit, está reservada para SQL Server Enterprise y SQL Server Developer solamente.

Para establecer una auditoría de seguridad de base de datos usando SQL Audit, el primer paso es crear un objeto SQL Audit. Esto puede ser hecho usando T-SQL o vía SQL Server Management Studio.

Para crear un objeto SQL Audit que pueda ser usado para la auditoría de seguridad de la base de datos, el siguiente script T-SQL de creación puede ser usado:

USE [master]
GO

CREATE SERVER AUDIT [Audit ADW2014 DDL ]
TO FILE 
(	FILEPATH = N'C:\SQLAudits\'
	,MAXSIZE = 20 MB
	,MAX_FILES = 20
	,RESERVE_DISK_SPACE = ON
)
WITH
(	QUEUE_DELAY = 1000
	,ON_FAILURE = CONTINUE
	,AUDIT_GUID = '928b1094-b02b-437d-a5c7-8266af853b57'
)
ALTER SERVER AUDIT [Audit ADW2014 DDL ] WITH (STATE = ON)
GO

Para usar SQL Server Management Studio, localice la carpeta Security->Audits en Object Explorer y elija New Audit en el menú contextual.

En el diálogo Create Audit que será abierto, seleccione Audit destination->File del menú y determine la File path (ruta de archivo) que será usada para almacenar el archivo donde la auditoría será registrada.

Todas las opciones en este diálogo son claras y no requieren explicaciones adicionales, pero para quienes están interesados, más detalles pueden encontrarse aquí.

Una vez que el objeto de SQL Server Audit es creado, el objeto Database Audit Specifications para el objeto de auditoría creado tiene que ser configurado.

Para crear e objeto de Databse Audit Specifications para los requerimientos de auditoría mencionados anteriormente, el siguiente T-SQL puede ser usado:

USE [AdventureWorks2014]

GO

CREATE DATABASE AUDIT SPECIFICATION [ADW2014 Auditing]
FOR SERVER AUDIT [Audit ADW2014 DDL]
ADD (SCHEMA_OBJECT_ACCESS_GROUP),
ADD (SCHEMA_OBJECT_CHANGE_GROUP),
ADD (SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP),
ADD (SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP),
ADD (USER_CHANGE_PASSWORD_GROUP),
ADD (DATABASE_OBJECT_ACCESS_GROUP),
ADD (DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP),
ADD (DATABASE_OBJECT_PERMISSION_CHANGE_GROUP),
ADD (DATABASE_OPERATION_GROUP),
ADD (DATABASE_OWNERSHIP_CHANGE_GROUP),
ADD (DATABASE_PERMISSION_CHANGE_GROUP),
ADD (DATABASE_PRINCIPAL_IMPERSONATION_GROUP),
ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP)

GO

Lo mismo puede hacerse vía Object Explorer en SQL Server Management Studio. Expanda el árbol de objetos de la base de datos, haga clic derecho en Security->Database Audit Specifications y seleccione New Database Audit Specification

Más detalles acerca del objeto Create Database Audit Specifications están disponibles aquí. Siga el enlace para detalles adicionaes acerca de Grupos de Acciones de Auditoría a Nivel de Base de Datos.

Nota: DATABASE_OBJECT_CHANGE_GROUP audita solo los permisos ALTER en SCHEMA como parte de la sentencia CREATE. Para realmente auditar operaciones CREATE, ALTER o DROP en el esquema, SCHEMA_OBJECT_CHANGE_GROUP debe ser añadido a la especificación de auditoría.

Una vez que todos los requerimientos para la auditoría estén configurados, SQL Audit comenzará a recolectar y registrar cada cambio de estructura de la base de datos definido en las especificaciones de auditoría.

Auditoría a nivel de datos


Crear objetos de SQL Audit y Especificaciones de Auditoría de Base de Datos para datos es similar a lo que se indicó anteriormente y la única diferencia consiste en configurar diferentes Especificaciones de Auditoría de Base de Datos.

Después de crear un nuevo objeto de SQL Audit para la auditoría a nivel DML, que será nombrado Audit ADW2014 DML para propósitos de este artículo, el objeto debería estar asociado con el nuevo objeto Especificación de Auditoría de Base de Datos. Para el propósito de auditoría DML, las Acciones de Auditoría a nivel de Base de Datos SELECT, INSERT, UPDATE, DELETE y EXECUTE si es necesario deben ser configuradas para la auditoría. Para más información visite Acciones de Auditoría a Nivel de base de Datos.

Dado que es posible especificar sólo un objeto/principal por evento de auditoría, crear todas las especificaciones de auditoría necesarias puede ser bastante agotador e incómodo. Esto es especialmente evidente cuando se están creando especificaciones para base de datos con cantidades incluso más grandes de tablas y vistas y cuando más principales tiene que ser incluidos en la auditoría. La imagen anterior es sólo un ejemplo donde sólo unas pocas especificaciones están definidas.

Nota: El tipo de auditoría tiene que ser configurado en la clase de objeto de Base de Datos y Esquema, lo que significa que todos los objetos que pertenecen al esquema especificado serán auditados, así como todos los objetos dentro de la base de datos seleccionada, si la base de datos es especificada como clase de objeto. Esto debería ser usado con cuidado, ya que torrentes de datos innecesarios pueden ser recolectados y almacenados en los archivos .audit.

Auditar la auditoría

La manera más fácil para un atacante para permanecer inadvertido es cambiar temporalmente la definición de la configuración de auditoría o cambiar los datos recolectados en sí mismos. Para permitir el rastreo de cambios a audtorías y objetos de especificaciones de auditorías, o mejor dicho “auditar la auditoría”, el Grupo de Acciones de SQL Server Audit AUDIT_CHANGE_GROUP es introducido a partir de SQL Server 2012. Aparte de rastrear los cambios a la auditoría y los objetos de especificaciones de auditorías, este grupo también rastrea auditorías fallidas y cambios hechos a sesiones de auditorías. Una vez que se configura al nivel de Especificaciones de Auditoría de Base de Datos, auditará todos los cambios hechos a las especificaciones de auditoría de base de datos dentro de esa base de datos.

El tipo de acción de auditoría AUDIT_CHANGE_GROUP registrará un evento de auditoría cuando cualquiera de los siguientes comandos sea ejecutado:

  • Crear una auditoría de servidor
  • Crear una especificación de auditoría de servidor
  • Crear una especificación de auditoría de base de datos
  • Alterar una especificación de auditoría de servidor
  • Alterar una especificación de auditoría de base de datos
  • Alterar una auditoría de servidor
  • Quitar una auditoría de servidor
  • Quitar una especificación de auditoría de servidor
  • Quitar una especificación de auditoría de base de datos

ApexSQL Audit

ApexSQL Audit es una  herramienta de cumplimiento de normas y auditoría SQL Server capaz de auditar más de 200 eventos SQL en los niveles de SQL Server y base de datos y almacenarlos en una base de datos repositorio central a prueba de modificaciones. La información recolectada está fácilmente disponible a solicitud a través de once reportes integrados con un reporte personalizado adicional que está diseñado alrededor de filtros avanzados, lo que permite cumplir con incluso los requerimientos más demandantes del usuario.

Con ApexSQL Audit, la auditoría de seguridad de la base de datos y la actividad de datos pueden ser configuradas en un solo paso mientras que todos los cambios en los ajustes de auditoría serán rastreados por defecto.

Para hacer eso en la Interfaz Gráfica de ApexSQL Audit usado el filtro simple:

  1. Seleccione la base de datos a ser auditada usando Add database.

  2. Establezca las condiciones del filtro de auditoría requeridas para cada base de datos añadida para auditoría.

    A continuación está la lista de todas las selecciones de filtro de auditoría al nivel de base de datos incluyendo las selecciones recomendadas que deberían ser habilitadas.

  3. Presione Apply en la barra emergente en la parte superior de la pestaña y eso es todo…esto es todo lo que se tiene que hacer para configurar la auditoría de seguridad de la base de datos.

Alternativamente, para configurar la auditoría vía el filtro avanzado:

  1. Seleccione el botón de radio Advanced en la sección Filter type.

  2. Presione Para añadir la condición.
  3. Seleccione el campo de datos Database name.

  4. Presione Y añada las bases de datos para auditar usando los botones Insert.

  5. Presione De nuevo, seleccione el campo de datos Databse operations y seleccione las operaciones requeridas, por ejemplo auditoría DDL, DML, etc.

  6. Presione Apply en la barra emergente en la parte superior de la pestaña.

La condición de auditoría debería verse así:

ApexSQL ahora comenzará a recolectar los eventos auditados y a almacenarlos en la base de datos repositorio central.

Los requerimientos para rastrear cambios en los ajustes de auditoría son implementados por defecto en ApexSQL Audit y el rastreo de los ajustes de la auditoría no puede ser deshabilitado por el usuario, haciendo a los filtros de auditoría a prueba de modificaciones. Cada cambio en los ajustes de auditoría, junto con información precisa acerca de los ajustes de filtros y quién realizó el cambio, pueden ser vistos en el reporte Audit settings history

Traductor: Daniel Calbimonte

The post Auditoría de seguridad de bases de datos SQL Server appeared first on Solution center.

Antes y después de auditar en SQL Server

$
0
0

Simplemente archivar información para auditar una base de datos es una cosa, pero reconstruir un historial de auditoría exitosamente para proveer datos forenses significativos es otra. Es importante poder ver un historial completo de los cambios del usuario, así como poder revertir los cambios que pueden haber sido accidentales o maliciosos.

Idealmente, tal información del valor añadido puede ser obtenida sin requerir una gran cantidad de datos archivados o creando un impacto significativo en el desempeño en los servidores auditados.

En este artículo, vamos a presentar dos diferentes enfoque y soluciones para antes y después de la auditoría.

ApexSQL Audit

ApexSQL Audit es una herramienta de cumplimiento de normas y auditoría para SQL Server que audita todas las operaciones realizadas en la instancia SQL Server auditada, incluyendo cambios DDL y DML, actividades relacionadas a ingresos, usuarios, permisos y seguridad.

Aunque ApexSQL Audit configura y utiliza rastros para auditar actividades SQL Server, para realizar una auditoría de antes y después usa una diferente tecnología: desencadenadores SQL. Estos desencadenadores pueden ser aplicados para capturar cambios específicos hechos sólo en objetos seleccionados o en todos los objetos en una base de datos. La información puede ser capturada en todas las operaciones DML (INSERT, UPDATE y DELETE), e incluye detalles acerca de quién hizo el cambio y cuándo, qué objetos fueron afectados, qué inicio de sesión, aplicación y host fueron usados, así como el valor original (antes).

La auditoría basada en desencadenadores trabaja en una manera simple – cuando el cambio ocurre en la tabla/campo auditado, el desencadenador es gatillado y captura la información acerca de la operación ejecutada. Toda la información capturada luego es almacenada en 2 tablas que son automáticamente creadas en la base de datos auditada. Esto permite un fácil acceso directamente desde la aplicación, o desde SQL Server Management Studio para investigar los resultados o crear reportes de auditoría profundos.

Para configurar la auditoría antes y después en ApexSQL Audit, los siguientes pasos necesitan ser completados:

  1. Inicie la Interfaz de Usuario de ApexSQL Audit
  2. Haga clic en el botón Before-After en la cinta principal:

  3. En el diálogo Before and after data auditing haga clic en el botón New para iniciar el asistente:

  4. Seleccione la instancia SQL Server y la base de datos, provea detalles de autenticación válidos y haga clic en el botón OK:

  5. Seleccione las tablas y columnas a las que se aplicarán los desencadenadores y especifique las operaciones que activarán los desencadenadores (INSERT, UPDATE y/o DELETE):

  6. Haga clic en el botón Create en la cinta principal:

  7. El script SQL Server que ha sido creado aplicará desencadenadores predefinidos para elegir tablas/columnas. Ejecútelo para completar el proceso de configuración haciendo clic en el botón Execute :

  8. Con esto, la auditoría de antes y después ha sido configurada, y cualquier cambio que ocurra será capturado y almacenado en el repositorio central.

Para inspeccionar antes y después de los cambios, uno simplemente necesita crear el reporte de auditoría. Antes de que lleguemos a esa parte, veamos un típico caso de uso donde ApexSQL Audit es usado para identificar algunos cambios inusuales en una tabla particular.

En caso de notar cambios en la tabla de comisión de ventas donde los valores de la comisión han sido cambiado de una manera no autorizada:

Tenemos una tabla “Sales Transaction” que consiste en 3 columnas: 1. Sales Person ID, 2. Comission Level ID y 3. Comission %

Aquí se ve la tabla en su estado original:

Ahora, digamos que los valores de Comission % fueron todos cambiados a nuevos valores:

4.5 –>> 6

5.5 –>> 7

6.5 –>> 8

Este cambio malicioso puede pasar desapercibido si la auditoría de base de datos no es realizada.

ApexSQL Audit puede ser usado para capturar este cambio, y prevenir el daño.

Dado que el historial de datos es colectado en el repositorio central, uno sólo necesita leer los datos de ahí, creando un reporte de auditoría estándar.

Para hacerlo, los siguientes pasos deben ser ejecutados:

  1. En el diálogo Before and after data auditing, conéctese a la base de datos (pasos 1-4 de la guía previa) y haga clic en el botón Standard , desde el grupo Reports:

  2. Provea información variada de filtro para reducir el reporte y obtener sólo resultados relevantes, y haga clic en el botón Apply para obtener los resultados:

  3. En el reporte, es fácil ver los cambios exactos que han ocurrido,así como los valores de antes y después. Información adicional como quién hizo los cambios, cuándo y cómo también está disponible:

Como una característica extra, es fácil configurar una alerta para ser desencadenada cuando cambios UPDATE hayan sido hechos en algunas tablas. ApexSQL Audit puede ser instruido para mandar un correo electrónico de alerta cuando UPDATEs potencialmente maliciosos han sido realizados en tablas específicas. Aquí hay una guía paso a paso acerca de cómo obtener una alerta desde ApexSQL Audit cuando un cierto registro cambia en la base de datos SQL Server.

Pros

  • Parte integral de una herramienta con capacidades completas de auditoría que audita todas las operaciones realizadas en la instancia SQL Server auditada
  • Los datos son almacenado en un repositorio central
  • Configuración rápida y fácil
  • Mecanismos de alerta

Contras

  • Impacto pequeño en el desempeño debido a la implementación de desencadenadores directamente en la base de datos auditada
  • Capacidades forenses limitadas (no se cuenta con el historial de filas completo)
  • No se cuenta con capacidades de restauración

Otra solución – ApexSQL Log

Sólo leyendo el registro de transacciones de SQL Server, la funcionalidad “antes y después” puede ser obtenida sin costo para el desempeño del sistema y sin requerimientos para almacenar/archivar datos adicionales.

ApexSQL Log, un lector de transacciones SQL Server, provee una solución ideal y efectiva a los requerimientos de antes y después típicos ofreciendo ventajas funcionales clave y eliminando las desventajas de almacenaje masivo adicional para la auditoría de antes y después. Implementado junto a ApexSQl Audit, estas herramientas pueden proveer un espectro completo de cobertura de auditoría, pero pueden hacerlo mucho más eficientemente y con economía de recursos.

ApexSQL Log usa una tecnología pasiva que simplemente lee el registro de transacciones versus archivar grandes volúmenes de datos. Así que no hay un requerimiento de almacenamiento o una degradación del desempeño para sistemas auditados. Pero provee vistas de datos poderosas de antes y despu’es, as’i como un historial completo de cambios. Finalmente, ApexSQL Log tiene capacidades extremadamente poderosas para deshacer/rehacer para crear scripts para revertir o reproducir las transacciones seleccionadas.

ApexSQL Log, dado puede ser usado solamente cuando es requerido en servidores afectados, no requiere licencias para cubrir cada servidor. Menos licencias pueden ser compradas, las opciones de licencias flotantes y licencias de sitio también están disponibles para reducir el costo por servidor. O ApexSQL Log puede ser agrupado con ApexSQL DBA a un costo adicional nominal por instancia SQL Server.

Ahora examinemos las capacidades del enfoque de ApexSQL Log, incluyendo a) auditoría antes y después b) historial a nivel de filas c) transacciones UNDO y REDO ya que se relaciona con este particular caso/estudio.

Aquí está lo que necesita ser hecho para obtener los datos de la auditoría de antes y después:

  1. Inicie ApexSQL Log y haga clic en el botón New:

  2. En el asistente de sesión, provea lo detalles de una conexión de base de datos y credenciales válidas, y haga clic en el botón Next:

  3. En el paso Select SQL logs to analyze del asistente, añada todas las copias de seguridad de registros para asegurar que la cadena completa de copias de seguridad de registros de transacciones esté disponible. Esto es esencial, dado que ApexSQL Log necesita la cadena completa para reconstruir el historial de filas y los detalles antes/después. Haga clic en el botón Next para avanzar:

  4. En el paso Filter setup del asistente, use varios filtros para reducir el rango de auditoría tanto como sea posible, de modo que transacciones específicas puedan ser localizadas con facilidad. Proveer rangos de fecha/hora personalizados o seleccionar tablas específicas para auditar afecta de gran manera a los resultados, haciéndolos más fáciles de explorar. Después de que todos los filtros han sido añadidos, haga clic en el botón Next para proceder:

  5. Finalmente, elija la opción Open results in grid para completar la auditoría y mostrar los resultados en una tabla exhaustiva:

  6. Seleccionar una operación de la tabla mostrará los detalles en el panel Operation details, en la parte inferior de la ventana principal. Aquí, los valores de antes (Old) y después (New) pueden ser vistos para la operación seleccionada:

Para ver el historial completo de filas, simplemente seleccione la pestaña Row history en la parte baja del panel. Para nuestro caso, vemos que el usuario Zwerka\FEAR ha hecho 8 cambios en el valor inicial de Comission %:

Otra gran característica de ApexSQL Log es que nos permite simplemente revertir estos cambios. Si decidimos que son no deseados, podemos simplemente revertirlos con sólo unos pocos clics:

  1. Seleccione una o más transacciones que necesitan ser revertidas y elíjalas en la tabla:

  2. En el menú principal, haga clic en el botón Create undo script:

  3. ApexSQL Log crea un script que revertirá los cambios seleccionado a su estado original. El script creado será mostrado y estará disponible para ediciones adicionales si es necesario:

  4. El único paso restante es ejecutar el script, lo cual puede ser hecho directamente desde el editor, o el script puede ser grabado y ejecutado desde SQL Server Management Studio después.

Si vemos nuestra tabla de nuevo, veremos que las filas actualizadas maliciosamente están de vuelta en su estado original:

Pros

  • El historial de filas completo está disponible
  • ApexSQL Log puede auditar operaciones que han ocurrido incluso antes de que la aplicación haya sido instalada en el sistema – si la información es presentada en los archivos de registros de transacciones, ApexSQL Log puede leerla
  • No hay impacto en el desempeño – dado que ApexSQL Log sólo lee los archivos de registros de transacciones, no tiene impacto en el servidor SQL Server que está siendo auditado
  • Capacidades de recuperación completa – todos los cambios maliciosos o no deseado pueden ser revertidos a su estado original con sólo unos pocos clics

Contras

  • Menos capacidades de auditoría que ApexSQL Audit
  • No hay mecanismos de alerta
  • La base de datos tiene que estar en modo de recuperación completa, y una cadena completa de archivos/copias de seguridad de registros de transacciones debe estar disponible, tomando espacio de disco en la red.

Algunas preguntas frecuentes acerca de ApexSQL Log

P: ¿Cómo almaceno los datos de registros de transacciones lo suficientemente atrás para hacer un antes y después histórico?

R: La gran mayoría de las situaciones de auditoría de tipo forense de antes y después suceden en horas, días o semanas recientes. No meses o años. En la mayoría de los casos, esta información está ya disponible en el registro en línea. En otros, las copias de seguridad de registros de transacciones pueden ser encadenadas para información histórica yendo tan atrás como sea necesario.

P: ¿Hay algún impacto en el desempeño a la auditoría antes y después con ApexSQL Log?

R: No, no hay ningún impacto. ApexSQL Log no tiene cargas adicionales durante la captura de datos de auditoría. La aplicación simplemente lee los registros de transacciones para recolectar datos de auditoría. Esto permite que la auditoría sea realizada durante momentos de baja carga o incluso desconectada y puesta en otro servidor.

P: ¿Cómo puedo configurar mi sistema para una auditoría de antes y después óptima?

R: Para asegurar que el archivo de registro de transacciones incluya todos los datos históricos, es importante tener una base de datos en modo de recuperación completo. Esto asegura que los datos en los registros de transacciones en línea nunca son sobrescritos y estarán disponibles para ApexSQL Log.

P: ¿ApexSQL Log y ApexSQL Audit pueden ser comprado juntos?

R: Sí, vía ApexSQL DBA bundle

ApexSQL DBA permite a los Administradores de Bases de Datos apalancar las características de ApexSQL Audit para una auditoría tradicional sinérgicamente, con las capacidades de ApexSQL Log, para una mejor auditoría de antes y después, análisis de historia y deshacer transacciones/recuperar datos. Usados en conjunto, estas herramientas pueden mejorarse mutuamente para proveer capacidades poderosas de auditoría, incluyendo antes y después, con un costo eficiente, mientras que limita la sobrecarga del sistema y los requerimientos de almacenamiento de datos.

Traductor: Daniel Calbimonte

The post Antes y después de auditar en SQL Server appeared first on Solution center.

Auditar cambios del esquema de una base de datos SQL Server

$
0
0

Realizar un seguimiento de los cambios hechos a los objetos de su base de datos es una parte clave de una estrategia de seguridad de bases de datos SQL o una política de cumplimiento de normas, incluyendo, entre otras, Health Insurance Portability and Accountability Act, Sarbanes-Oxley, Payment Card Industry Data Security Standard o European Union Data Protection Directive. De todas maneras, incluso si su ambiente IT no tiene que cumplir con reglas de seguridad rigurosas, quién lo ha cambiado así como el tiempo exacto de este cambio, es invaluable cuando se solucionan problemas relacionados con el esquema, como dependencias rotas. Así que, ¿cómo audita uno cambios en el esquema de SQL Server?

Una opción viable es crear y mantener desencadenadores DDL para cada uno de los objetos de la base de datos, los cuales serán activados cuando sea que un objeto de base de datos es creado, eliminado o alterado. Un desencadenador DDL captura información en el EVENT que lo gatilló usando la función EVENTDATA() la cual retorna la información capturada en formato XML. Para configurar la auditoría del esquema usando desencadenadores DDL:

  1. Prepare la infraestructura de auditoría creando una tabla que contendrá la información capturada. Por ejemplo, si usted desea capturar un cambio de objeto así como el tiempo en el que el cambio fue hecho y la información de inicio de sesión, el anfitrión y la aplicación usada para hacer el cambio, la tabla debería tener la siguiente estructura:
    CREATE TABLE Audit_Info
    (
           EventTime            DATETIME,
           LoginName            VARCHAR(255),
           UserName             VARCHAR(255),
           HostName             VARCHAR(255),
           ApplicationName      VARCHAR(255),
           DatabaseName         VARCHAR(255),
           SchemaName           VARCHAR(255),
           ObjectName           VARCHAR(255),
           ObjectType           VARCHAR(255),      
           DDLCommand           VARCHAR(MAX)
    )
  2. Defina el alcance de la auditoría. Usted puede auditar todos los cambios de esquema en la base de datos especificando la opción ON DATABASE o en la instancia SQL entera especificando la opción ON ALL SERVER
  3. Cree los desencadenadores DDL. Por ejemplo, para auditar cambios hechos a las tablas de la base de datos use lo siguiente:
    CREATE TRIGGER Audit_Table_DDL
    ON DATABASE
    FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
    AS
    DECLARE       @eventInfo XML
    SET           @eventInfo = EVENTDATA()
     
    INSERT INTO Audit_Info VALUES
    (
         REPLACE(CONVERT(VARCHAR(50),
                @eventInfo.query('data(/EVENT_INSTANCE/PostTime)')),'T', ' '),
         CONVERT(VARCHAR(255),
              @eventInfo.query('data(/EVENT_INSTANCE/LoginName)')),
         CONVERT(VARCHAR(255),
              @eventInfo.query('data(/EVENT_INSTANCE/UserName)')),
         CONVERT(VARCHAR(255),
              @eventInfo.query('data(/EVENT_INSTANCE/HostName)')),
         CONVERT(VARCHAR(255),
              @eventInfo.query('data(/EVENT_INSTANCE/ApplicationName)')),
         CONVERT(VARCHAR(255),
              @eventInfo.query('data(/EVENT_INSTANCE/DatabaseName)')),
         CONVERT(VARCHAR(255),
              @eventInfo.query('data(/EVENT_INSTANCE/SchemaName)')),
         CONVERT(VARCHAR(255),
              @eventInfo.query('data(/EVENT_INSTANCE/ObjectName)')),
         CONVERT(VARCHAR(255),
              @eventInfo.query('data(/EVENT_INSTANCE/ObjectType)')),
         CONVERT(VARCHAR(MAX),
              @eventInfo.query('data(/EVENT_INSTANCE/TSQLCommand/CommandText)'))
    )

De todas maneras, este enfoque viene con ciertas advertencias. Por ejemplo, usted puede usar desencadenadores DDL para auditar sentencias CREATE, DROP y ALTER TRIGGER pero un usuario privilegiado podría usar el comando DISABLE TRIGGER y hacer a la auditoría efectivamente inútil, dado que los desencadenadores DDL no pueden capturarlo; es decir, un usuario privilegiado puede cambiar un objeto auditado, luego deshabilitar los desencadenadores DML en la tabla que almacenó los cambios capturados, eliminar las filas que contienen los detalles acerca del objeto cambiado y habilitar los desencadenadores DML de nuevo. De esta manera un usuario malicioso puede efectivamente hacer estragos en el esquema de la base de datos sin ser detectado por el sistema de auditoría. Incluso si usted es el único usuario privilegiado en SQL Server, este tipo de sistema de auditoría tiene la desventaja inherente de no poder reportar acerca de ningún cambio hecho antes de que se ejecutara. Así que, ¿hay alguna manera efectiva de auditar un esquema SQL Server y cambios de objetos?

Afortunadamente sí. El registro de transacciones mantiene un registro de cada cambio hecho a la base de datos incluyendo información acerca de cuándo se hizo el cambio y quién lo hizo. La mejor parte es: debido a su naturaleza, la información no puede ser manipulada. Pero hay un detalle: el registro de transacciones no es legible para un humano. Aquí es donde ApexSQL Log entra en escena

ApexSQL Log es una herramienta de auditoría y recuperación para bases de datos SQL Server que lee registros de transacciones, copias de seguridad de registros, registros de transacciones separados, copias de seguridad de bases de datos y auditorías, revierte o reproduce cambios de objetos y datos que han afectado a la base de datos, incluyendo aquellos que han ocurrido antes de que el producto se instalara.

Para auditar un esquema SQL Server y cambios de objetos con ApexSQL Log:

  1. Inicie ApexSQL Log
  2. Conéctese a la base de datos
  3. Si usted cuenta con cualquier copia de seguridad de registros y/o registros de transacciones separados, haga clic en el botón Add file, seleccione los archivos fuente apropiados y haga clic en Next para avanzar a través del asistente

    Select SQL logs to analyze

  4. En el paso Filter setup del asistente, use varios filtros para reducir los resultados a un rango de tiempo, operación, usuario, objeto o fila de datos específicos. Nota: Las operaciones DDL no son auditadas por defecto, así si uno desea verlas en los resultados auditados, lo mismo debería ser añadido a través del filtro Operations:

    Filter setup dialog

  5. Haga clic en Finish para Abrir los resultados en la cuadrícula

Los cambios que cumplen con el criterio especificado, junto con sus detalles, serán listados en la cuadrícula principal de la aplicación. Para reducir más el conjunto de resultados, use Grid filter en el panel izquierdo.

Grid filter in the left pane

En resumen, si usted desea asegurar que no se le pase ningún cambio al esquema SQL Server y los objetos, examine su registro de transacciones con ApexSQL Log

Autor: Venijamin Zivkovic

Traductor: Daniel Calbimonte

The post Auditar cambios del esquema de una base de datos SQL Server appeared first on Solution center.

Cómo auditar su auditoría en SQL Server – rastreando cuando los desencadenadores están deshabilitados

$
0
0

Los desencadenadores de auditoría de SQL Server son principalmente usados para mantener la integridad de la información en la base de datos o para proveer un rastro de cambios de datos. Un desencadenador es un tipo especial de objeto de base de datos, el cual es automáticamente ejecutado bajo ciertas circunstancias – por ejemplo, las acciones realizadas por el usuario. Lo que los desencadenadores de auditoría deben proveer mientras auditan cambios en los datos son respuestas a las siguientes preguntas forenses:

  1. ¿Quién cambió los datos?
  2. ¿Cuál era la fecha y la hora cuando el cambio ocurrió?
  3. El tipo del cambio de datos – ya sea que fue insertado, actualizado o eliminado
  4. En caso de que el cambio haya sido una sentencia de modificación de datos (UPDATE), ¿cuál era el valor del dato antes y después del cambio?
  5. Qué objeto de SQL Server fue cambiado – por ejemplo, si fue una tabla, un desencadenador o una sola fila.

Hay un rango amplio de escenarios de cambios maliciosos de datos que pueden ser realizados sin dejar ningún rastro (por ejemplo, cuentas de banco, ventas o datos de sistemas de comisiones). Para hacer eso, un usuario podría deshabilitar cualquier desencadenador de datos, cambiar los datos, y habilitar el desencadenador después.

Un desencadenador puede ser deshabilitado usando T-SQL o la Interfaz Gráfica de SQL Server Management Studio. De cualquier manera, para habilitar o deshabilitar un desencadenador DML, el usuario debe tener un permiso ALTER como mínimo en la tabla en la cual el desencadenador fue creado.

“Deshabilitar un desencadenador no lo borra. El desencadenador aún existe como un objeto en la base de datos actual. De todas maneras, el desencadenador no se activará cuando cualquier sentencia INSERT, UPDATE o DELETE en la cual estaba programado sea ejecutada. Los desencadenadores que están deshabilitados pueden ser rehabilitados. Habilitar un desencadenador no lo recrea. El desencadenador se activa en la misma manera que cuando fue originalmente creado” [1]

Los mismos requerimientos de permisos se aplican para eliminar un desencadenador, pero no consideraremos este como un escenario común – el desencadenador eliminado debe ser recreado después para enmascarar las actividades. Como sea, tales escenarios pueden ser rastreados de la misma manera en que describiremos a continuación.

Usando la característica SQL Server Audit para rastrear cuándo los desencadenadores son deshabilitados

Actualmente, sólo SQL Server Enterprise Edition y SQL Server Developer Edition soportan la característica Audit para rastrear la habilitación o deshabilitación de desencadenadores.

Para capturar estos eventos, usted necesita crear primero una especificación de auditoría de Servidor – el objeto de SQL Server Audit recolecta acciones a nivel de base de datos o servidor y grupos de acciones:

USE master;
GO
CREATE SERVER AUDIT ServerAudit
TO FILE (FILEPATH = 'c:\audits\', MAXSIZE = 2 GB)
WITH (ON_FAILURE = CONTINUE);
GO
ALTER SERVER AUDIT ServerAudit
WITH (STATE = ON);

El siguiente paso es crear una especificación de auditoría de Base de Datos al nivel de la base de datos. El grupo de auditoría que necesitamos capturar es en nuestro caso SCHEMA_OBJECT_CHANGE_GROUP – No hay un grupo de auditoría que exclusivamente capture eventos de habilitación/deshabilitación de desencadenadores.

USE [ACMEDB];
GO
CREATE DATABASE AUDIT SPECIFICATION schema_change
FOR SERVER AUDIT ServerAudit
ADD (SCHEMA_OBJECT_CHANGE_GROUP)
WITH (STATE = ON);
GO

Consulte la auditoría previamente creada usando el operador LIKE para reducir las entradas capturadas a aquellas relacionadas con la habilitación/deshabilitación de desencadenadores:

SELECT
       event_time AS [Time],
       server_principal_name AS [User],
       object_name AS [Object name],
       Statement
  FROM sys.fn_get_audit_file('c:\audits\ServerAudit*', NULL, NULL)
WHERE
       database_name
       =
       'ACMEDB'
   AND (
       Statement LIKE '%DISABLE%TRIGGER%'
    OR Statement LIKE '%ENABLE%TRIGGER%')ORDER BY
                                          [Time] DESC;

Los resultados mostrarán quién habilitó/deshabilitó un desencadenador y cuándo:

The results showing who disabled/enabled a trigger in SQL Server

Aunque la solución que describimos es aplicable sólo para usuarios de SQL Server Enterprise Edition y SQL Server Developer Edition, una Auditoría de una Base de Datos SQL Server es bastante simple para ser implementada, y puede ayudar en rastrear cuando los desencadenadores están habilitados/deshabilitados.

Rastreando cuando los desencadenadores están deshabilitados usando un desencadenador DDL

Los desencadenadores DDL de SQL Server pueden ser usados para rastrear operaciones DDL, ya sea que los cambios fueran accidentales o deliberados. La solución de desencadenadores DDL requiere la creación y mantenimiento del almacén de información auditada y los desencadenadores.

En el siguiente ejemplo de un script SQL, el evento del desencadenador DML es capturado vía la función de SQL Server Eventdata (), usada en el desencadenador DDL. El script SQL crea un desencadenador DDL que captura las operaciones ALTER (aunque el desencadenador DDL puede capturar eventos CREATE y DROP también, para el propósito de auditar los desencadenadores DML para habilitar/deshabilitar, capturaremos sólo los eventos ALTER):

CREATE TRIGGER DDL_Audit
ON DATABASE
    FOR ALTER_TABLE
AS
     DECLARE
        @auditevent xml;
     SET
     @auditevent = EVENTDATA();
     INSERT INTO DDL_Audit_Events
     VALUES
     (
     REPLACE(CONVERT(varchar(50),
     @auditevent.query('data(/EVENT_INSTANCE/PostTime)')), 'T', ' ')
     ,
     CONVERT(varchar(150),
     @auditevent.query('data(/EVENT_INSTANCE/LoginName)'))
     ,
     CONVERT(varchar(150),
     @auditevent.query('data(/EVENT_INSTANCE/DatabaseName)'))
     ,
     CONVERT(varchar(150),
     @auditevent.query('data(/EVENT_INSTANCE/ObjectName)'))
     ,
     CONVERT(varchar(max),
     @auditevent.query('data(/EVENT_INSTANCE/TSQLCommand/CommandText)'))
     );

Los datos de auditoría de EVENTDATA XML deberían ser almacenados en una tabla apropiada:

CREATE TABLE DDL_Audit_Events
(
             DDL_Event_Time            datetime
             ,
             DDL_Login_Name            varchar(250)
             ,
             DDL_Database_Name         varchar(250)
             ,
             DDL_Object_Name           varchar(250)
             ,
             DDL_Command              varchar(max)
);

El desencadenador DDL_Audit se activa en cada evento ALTER y la información capturada puede ser consultada desde DDL_Audit_Events la tabla de repositorio de auditoría:

SELECT
       DDL_Event_Time
       , DDL_Login_Name
       , DDL_Database_Name
       , DDL_Object_Name
       , DDL_Command
  FROM ACMEDB.dbo.DDL_Audit_Events WHERE
DDL_Command LIKE '%DISABLE%TRIGGER%'
OR DDL_Command LIKE '%ENABLE%TRIGGER%'
ORDER BY
         DDL_event_time DESC;

Los resultados son similares a los resultados de la característica SQL Server Audit:

The results showing trigger modification, using a DDL trigger

Aunque este método puede producir resultados de auditoría viables, rastrear cuando los desencadenadores están deshabilitados usando un desencadenador DDL tiene muchas desventajas. Primero que nada, un usuario con suficientes permisos (el mínimo es un permiso ALTER en la tabla en la cual el desencadenador fue creado) puede fácilmente deshabilitar el desencadenador DDL, y deshabilitar el desencadenador DML después. Otra manera de evitar el rastrear por desencadenadores DDL es realizar un cambio de habilitar/deshabilitar en un desencadenador DML y luego eliminar la información capturada desde el repositorio de auditoría del desencadenador DDL.

Ambos métodos descritos, la característica SQL Server Audit y los desencadenadores DDL, capturan más eventos que los necesarios. Todos los cambios en el esquema (por ejemplo, vistas, claves primarias y foráneas, índices, permisos…) son capturados, no sólo se habilita o deshabilita los desencadenadores.

La característica SQL Server Audit no está disponible en todas las ediciones de SQL Server. Adicionalmente, los métodos descritos necesitan ser manualmente aplicados a todas las instancias SQL Server y sus bases de datos, y la auditoría debe ser mantenida, por ejemplo, el mantenimiento de los repositorios de información capturada, y la configuración de la auditoria para cualquier base de datos nueva.

Rastreando cuándo los desencadenadores están deshabilitados con ApexSQL Log

ApexSQL Log es una herramienta de auditoría y recuperación para base de datos SQL Server revierte o reproduce cambios en el esquema y los datos que han afectado a la base de datos. La información auditada puede ser capturada incluso para las operaciones ejecutadas antes de que ApexSQL Log fuera instalado, ya que usa el registro de transacciones de la base de datos y copias de seguridad de registros que ya contienen información acerca de los cambios hechos a la base de datos.

Para rastrear cuándo los desencadenadores están deshabilitados/hablitados usando ApexSQL Log:

  1. Conéctese a la base de datos que desea auditar

    Connecting to the desired database using ApexSQL Log

  2. En el paso de sesión Select SQL logs to analyze, añada copias de seguridad de registros de transacciones y/o registros de transacciones desasociados conteniendo los datos requeridos para crear la cadena completa, y una copia de seguridad completa de la base de datos como punto de partida/llegada de la cadena.

    Selecting SQL logs to analyze session in ApexSQL Log

  3. Use el paso de sesión Filter setup y la sección Date/time range para especificar el rango de tiempo para el proceso de auditoría. Esto acelerará la lectura reduciendo el proceso de búsqueda.

    Filter setup - the Date/time range section

  4. Use el filtro Operations para reducir la búsqueda a operaciones de habilitar/deshabilitar desencadenadores: Deseleccione todas las operaciones DML y DDL, y seleccione la opción Enable/disable trigger solamente.

    Tracking when triggers are disabled using ApexSQL Log

  5. Cuando todos los filtros han sido configurados apropiadamente, use la opción Open result in grid view para iniciar el proceso.

Después de que el proceso es finalizado, la cuadrícula principal de la aplicación muestra las transacciones que cambiaron el estado deshabilitado/habilitado de los desencadenadores de la base de datos. Las transacciones pueden ser exportadas para un análisis posterior, o retrotraídas vía la opción Create undo script, para revertir los cambios DDL.

      Main grid in ApexSQL Log showing the transactions that changed the status of database triggers

Comparado con las herramientas nativas de SQL Server, para auditar cuando los desencadenadores están habilitados/deshabilitados, ApexSQL Log:

  • Muestra la información auditada incluso antes para las operaciones ejecutadas antes de que se instalara concatenando diferentes archivos de registros de transacciones en uno solo.
  • No requiere ninguna acción adicional en los ajustes por defecto de la instancia/base de datos de SQL Server – es suficiente mantener las bases de datos en el modelo de recuperación Completo y mantener la cadena completa de registros de transacciones.
  • No requiere conocimiento de codificación T-SQL.
  • No usa ningún sistema adicional o recursos de SQL Server para capturar información de auditoría
  • Es independiente de la edición de SQL Server.
  • Convierte los datos a CSV, HTML, XML o SQL y le ayuda a grabar el contenido para un análisis posterior.

Recursos útiles:
[1] Delete or Disable DML Triggers
[2] Using the Default Trace in SQL Server 2005 and SQL Server 2008
[3] Fire a DDL TRIGGER when the new syntax “DISABLE TRIGGER” is executed
[4] SQL Server Audit (Database Engine)
[5] Create server audit specification
[6] Create database audit specification

Autor: Ivan Stankovic

Traductor: Daniel Calbimonte

The post Cómo auditar su auditoría en SQL Server – rastreando cuando los desencadenadores están deshabilitados appeared first on Solution center.

Auditando cambios de seguridad en SQL Server

$
0
0

Cuando se trata de seguridad de SQL Server, es importante notar que hay niveles de seguridad de servidor y de base de datos. Todo trabajo hecho por un usuario es realizado en la base de datos, pero para acceder a la base de datos y hacer el trabajo, el usuario primero necesita acceder al servidor, y después a la base de datos – el nivel de seguridad del servidor afecta al nivel de seguridad de la base de datos.

Para acceder al servidor, una entidad de inicio de sesión apropiada debe ser configurada para el usuario. Una entidad de inicio de sesión de SQL Server determina las credenciales de usuario para acceder a SQL Server. La seguridad en SQ Server inicialmente depende de inicios de sesión apropiadamente configurados, dado que ellos realmente representan una entrada a SQL Server y sus bases de datos. También, los inicios de sesión son un campo importante de regulaciones – la confidencialidad, consistencia y exactitud de los datos puede ser fácilmente arriesgada si un usuario tiene suficientes permisos en su inicio de sesión.

Hay dos propiedades de inicios de sesión de SQL Server relacionados con la seguridad:

  • Roles de Servidor – “SQL Server provee roles a nivel de servidor para ayudarle a administrar los permisos en un servidor. Estos roles son principales de seguridad que agrupan otros principales. Los roles a nivel de servidor abarcan todo el servidor en alcance de sus permisos. (Los roles son como grupos en el sistema operativo Windows)” [1]
  • Elementos protegibles – los recursos cuyo acceso es regulado por el sistema de autorización del Motor de Base de Datos de SQL Server (por ejemplo, Ver los permisos de cualquier base de datos).

Estas propiedades pueden ser cambiadas usando ya sea SQL Server Management Studio o T-SQL. EN ambos casos, las operaciones GRANT, REVOKE o DENY son realmente aplicadas en la entidad de inicio de sesión de SQL Server que está siendo cambiada.

Para cumplir con las regulaciones y mantener SQL Server seguro, se requiere auditar los cambios de seguridad, ya sea que los cambios fueron intencionales o accidentales.

Auditar los cambios de seguridad de SQL Server usando desencadenadores DDL

Los cambios aplicados a los inicios de sesión de SQL Server relacionados a las propiedades de los Elementos Protegibles y los Roles de Servidor pueden ser auditados usando desencadenadores DDL a nivel del servidor. En el siguiente ejemplo, usaremos los eventos de seguridad de SQL Server ADD_SERVER_ROLE_MEMBER, DDL_GDR_SERVER_EVENTS y DROP_SERVER_ROLE_MEMBER en el desencadenador DDL, el cual activará y capturará las acciones de alteración de las entidades de inicio de sesión.

CREATE TRIGGER DDL_AUDIT_Logins ON ALL SERVER
FOR ADD_SERVER_ROLE_MEMBER
	,DDL_GDR_SERVER_EVENTS
	,DROP_SERVER_ROLE_MEMBER AS

SET NOCOUNT ON;

DECLARE @EventsTable TABLE (
	EType NVARCHAR(max)
	,EObject VARCHAR(100)
	,EDate DATETIME
	,EUser VARCHAR(100)
	,ECommand NVARCHAR(max)
	);
DECLARE @EType NVARCHAR(max);
DECLARE @ESchema NVARCHAR(max);
DECLARE @DBName VARCHAR(100);
DECLARE @Subject VARCHAR(200);
DECLARE @EObject VARCHAR(100);
DECLARE @EObjectType VARCHAR(100);
DECLARE @EMessage NVARCHAR(max);
DECLARE @ETSQL NVARCHAR(max);

SELECT @EType = EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]',
 'nvarchar(max)')
,@ESchema = EVENTDATA().value('(/EVENT_INSTANCE/SchemaName)[1]',
 'nvarchar(max)')
,@EObject = EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]',
 'nvarchar(max)')
,@EObjectType = EVENTDATA().value('(/EVENT_INSTANCE/ObjectType)[1]',
'nvarchar(max)')
,@DBName = EVENTDATA().value('
(/EVENT_INSTANCE/DatabaseName)[1]',
 'nvarchar(max)')
,@ETSQL = EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 
'nvarchar(max)');

INSERT INTO @EventsTable
SELECT @EType
	,@EObject
	,GETDATE()
	,SUSER_SNAME()
	,@ETSQL;

SET @EMessage = 'Login_Event: ' + @EType + CHAR(10) + 'Event Occured at: '
 + Convert(VARCHAR, GETDATE()) + CHAR(10) + 'Changed Login: ' + @EObject + 
CHAR(10) + 'Changed by: ' + SUSER_SNAME() + CHAR(10) + 'Executed T-SQL: ' + 
@ETSQL

SELECT @Subject = 'SQL Server Login changed on ' + @@servername;

EXEC msdb.dbo.sp_send_dbmail @recipients = 'DDL_Alert@companydomain.com'
	,@body = @EMessage
	,@subject = @Subject
	,@body_format = 'HTML';

SET NOCOUNT OFF;
GO

La auditoría de los desencadenadores provee un rastreo viable de los cambios en los inicios de sesión, utilizando la tecnología Eventos Extendidos. Esta característica puede ser configurada usando T-SQL o SQL Server Management Studio. Nosotros usaremos SQL Server Management Studio en este artículo. Los scripts T-SQL correspondientes pueden ser fácilmente generados usando la opción CREATE To

Para rastrear y documentar cambios en las entidades de inicio de sesión en una instancia específica de SQL Server:

  1. Expanda la carpeta Security
  2. Seleccione New Audit y, usando el diálogo Create Audit, establezca el Audit name ((por ejemplo, AuditLoginChangesSpecification) y File path (un archivo sqlaudit con un nombre correspondiente será creado en la carpeta y usado como un repositorio de auditoría)

    Creating new audit - specifying audit name and path

  3. Haga clic en OK para confirmar la creación del objeto de auditoría SQL Server.
  4. Haga clic derecho en AuditLoginChangesSpecification y seleccione la opción Enable Audit

    Usando los siguientes pasosnosotrs crearemos una especificación de auditoría del servidor, lo cual requiere un objeto de auditoría de SQL Server previamente creado (AuditLoginChangesSpecification). La especificación de auditoría del servidor será usado para afinar y especificar exactamente qué será rastreado – cambios en entidades de inicio de sesión.

  5. Haga clic derecho en la carpeta Server Audit Specification y seleccione New Server Audit Specification
  6. Escriba el nombre de la nueva especificación de auditoría de servidor (por ejemplo, AuditLoginChangesServerSpecification) y seleccione el objeto de auditoría previamente creado usando el menú desplegable Audit. Para afinar la auditoría, establezca lo siguiente:
    1. Audit Action Type: SERVER_ROLE_MEMBER_CHANGE_GROUP – “Este evento es lanzado cuando sea que un inicio de sesión es añadido o removido de un rol fijo de servidor. Este evento es lanzado para los procedimientos almacenados sp_addsrvrolemember y sp_dropsrvrolemember.” [2]
    2. Audit Action Type: SERVER_PERMISSION_CHANGE_GROUP – “Este evento es lanzado cuando GRANT, REVOKE o DENY son emitidos por permisos en el alcance del servidor, como cuando creando un inicio de sesión.” [2]

      Specifying new server audit specification name and audit action type

  7. Haga clic en OK para confirmar la creación de la especificación de auditoría de servidor.
  8. Para completar el proceso de configuración de la característica de auditoría de SQL Server, haga clic derecho en la auditoría creada y seleccione la opción Enable Server Audit Specification. /li>

Después de que el objeto de auditoría y la especificación de auditoría de servidor están configurados y habilitados, los cambios relacionados conseguridad en SQL Server ejecutados en entidades de inicio de sesión serán rastreados y documentado en el archivo .sqlaudit.

Para ver los cambios auditados de inicio de sesión en SQL Server:

  1. Para iniciar el diálogo de vista del registro de auditoría, haga clic derecho en la auditoría AuditLoginChangesSpecification y seleccione la opción View Audit Logs.
  2. El diálogo mostrará los datos capturados acerca de los cambios de inicio de sesión con sentencias ejecutadas en las entidades de inicio de sesión.

Dialog showing the captured data about the login changes

La otra manera de exportar y proveer datos capturados es vía la función fn_get_audit_file. La función lee los archivos de repositorio *.sqlaudit creados por la característica SQL Server Audit.

El siguiente script consulta la información capturada relacionada a cambios de inicio de sesión en SQL Server:

SELECT event_time
	,session_server_principal_name AS Changed_by
	,target_server_principal_name AS LoginName
	,server_instance_name
	,statement
FROM sys.fn_get_audit_file('C:\AUDITs\*.sqlaudit', DEFAULT, DEFAULT)
WHERE action_id = 'G'
	OR action_id = 'APRL';

Dialog showing queried results related to SQL Server login changes

A diferencia de la auditoría a nivel de base de datos, la característica nativa SQL Server Audit a nivel del servidor es soportada en todas las ediciones de SQL Server, comenzando de SQL Server 2008. De todas maneras, para reportes y consultas viables de información capturada, es necesario un conocimiento de T-SQL. Y de nuevo, un usuario con suficientes permisos puede deshabilitar la especificación de auditoría, aplicar los cambios de inicio de sesión y habilitar de vuelta la especificación de auditoría sin dejar rastros.

Auditar cambios de inicio de sesión SQL Server – la solución por defecto

Cualquier cambio relacionado a seguridad aplicado a entidades de inicio de sesión de SQL Server es un problema de seguridad potencial. Además, cualquier regulación de normas requiere que los cambios de inicio de sesión sean capturados, apropiadamente documentados y hechos disponibles a solicitud.

ApexSQL Audit es una SQL Server auditing tool, con un rango de reportes integrados y personalizados, la cual monitorea cambios y accede a múltiples instancias de SQL Server y sus objetos (bases de datos, tablas, procedimientos almacenados, funciones y vistas).

Para auditar cambios en una instancia SQL Server particular:

  1. Inicie la Interfaz Gráfica de ApexSQL Audit.
  2. Seleccione la instancia de SQL Server que desea auditar y seleccione las opciones DDL y Securitydebajo de Operations en el filtro Simple.

    Selecting the SQL Server instance and Server auditing settings in ApexSQL Audit

    O usando el filtro Advanced:

  3. Confirme el cambio de configuraciones seleccionando la opción Apply en la cinta emergente.

Para auditar cambios de seguridad en múltiples instancias SQL Server, repita los primero dos pasos en cada instancia SQL Server.

Los datos capturados acerca de cambios en entidades de inicio de sesión son reportados dentro del reporte Security configuration history. El reporte provee todos los cambios en las entidades de seguridad (inicios de sesión, usuarios y roles) incluyendo información acerca de inicios de sesión siendo creados o eliminados, los permisos otorgados, revocados o denegados. Cada evento es documentado con un tiempo de ejecución, el nombre de la instancia SQL Server, el nombre del inicio de sesión, la aplicación (por ejemplo, Microsoft SQL Server Management Studio), el nombre de la computadora cliente, la operación, el T-SQL que fue ejecutado, la clase (por ejemplo, Audit add member to DB role event) y la sub clase del evento.

Security Configuration History report found in ApexSQL Audit

Para rastrear y documentar cambios en las entidades de inicio de sesión de SQL Server, ApexSQL Audit provee:

  • Configuración centralizada basada en clics para múltiples instancias de SQL Server.
  • Proceso de monitoreo y reporte sin usar T-SQL.
  • Auditoría automática de eventos relacionados con la seguridad de SQL Server sin excluir acciones administrativas, e identificación de riegos potenciales de seguridad.
  • Una base de datos repositorio central con características de archivar.
  • Reportes exhaustivos, exactos y a prueba de modificaciones para revisión.

Para auditar cambios de inicios de sesión en SQL Server usted puede usar ya sea las características y métodos de SQL Server o productos como ApexSQL Audit. Incluso los métodos que están integrados no ofrecen una solución por defecto, y requieren conocimiento avanzado para configurar y reportar la información capturada. Por otra parte, ApexSQL Audit provee características de valor añadido como un diseño centralizado y a prueba de modificaciones, una solución por defecto para el cumplimiento de requerimientos, auditoría de múltiples instancias SQL Server y más vía una interfaz de usuario amigable.

Referencias

[1] Server-Level Roles
[2] SQL Server Audit Action Groups and Actions

Recursos útiles

Microsoft SQL Server 2012 Security Cookbook
Audit Login Change Property Event Class
Login Auditing (SQL Server Management Studio)
DDL_SERVER_SECURITY_EVENTS

Autor: Ivan Stankovic

Traductor: Daniel Calbimonte

The post Auditando cambios de seguridad en SQL Server appeared first on Solution center.


Auditoría de SQL Server – cómo ser alertado acerca de eventos de auditoría importantes

$
0
0

Mientras que numerosos métodos nativos de auditoría están disponibles para SQL Server, ninguno de ellos provee una característica por defecto para generar una alerta cuando un evento específico de SQL Server es detectado. Veremos cómo utilizar soluciones nativas y también una solución inmediata, ApexSQL Audit.

SQL Server Audit

SQL Server Audit permite establecer una auditoría automática y la creación de especificaciones de auditoría para eventos a nivel de servidor y base de datos, las cuales luego pueden ser escritas a los registros de seguridad o eventos de la aplicación o al archivo de auditoría. SQL Server Audit pone disponibles las herramientas y procesos que deben ser habilitados, almacenados y luego para ver auditorías en los objetos del servidor y la base de datos.

SQL Server Audit permite grabar auditorías a nivel de SQL Server y/o la base de datos. El evento de auditoría será registrado cada vez cuando las acciones auditables sean encontradas.

El siguiente ejemplo le mostrará cómo ser notificado por un correo electrónico en cualquier evento de seguridad relacionado con cambios en el inicio de sesión de SQL Server.

Primero, cree un nuevo SQL Server Audit que enviará todos los eventos de auditoría a un archivo .audit.

En Object Explorer, navegue a la carpeta Security -> Audits y desde el menú contextual seleccione New Audit.

Selecting the New Audit option

Esto abrirá el diálogo Create Audit como el que se ve abajo, pero dependiendo de la versión de SQl Server, la disposición puede ser ligeramente diferente:

The Create Audit dialog

Revisemos rápidamente algunas opciones menos específicas que pueden ser configuradas aquí:

Audit name (nombre de la auditoría) es suficientemente explícito.

Queue delay (in milliseconds) (Retraso de la cola en milisegundos) permite definir el tiempo de demora después m del cual los eventos auditados serán escritos a los registros.

Shut down server on audit log failure (Apagar el servidor en caso de un fallo en el registro) forzará al servidor a apagarse cuando el servidor no puede escribir datos al repositorio de auditoría. Esta opción debería ser usada sólo cuando una falla de auditoría podría afectar seriamente la seguridad o integridad del servidor.

Nota: La cuenta usada para la auditoría debe tener el permiso SHUTDOWN para aplicar exitosamente esta opción

Fail operation (operación fallida) evitará que la operación actual del servidor sea ejecutada si SQL Server Audit no puede escribir en el repositorio por alguna razón. A las operaciones que no desencadenan los eventos auditados se les permitirá continuar con la ejecución. Esta opción debería ser usada sólo si la integridad de la auditoría es más importante que la operatividad completa de SQL Server.

La siguiente opción es para elegir el destino donde las auditorías serán registradas:

Choosing the destination where audits will be logged

Cuando el Registro de Seguridad de Windows y el Registro de la Aplicación son seleccionados para almacenar eventos de auditoría, todas las otras opciones en este diálogo serán deshabilitadas. El comportamiento, en este caso, será controlado por Windows de acuerdo a los ajustes para el registro seleccionado. Generalmente, la opción más amigable al usuario que asegura la seguridad más alta, así como la mejor estabilidad y desempeño, es la opción File, la cual almacenará el archivo binario del registro en el sistema de archivos de Windows, así que basaremos nuestra solución en esta opción. El resto de las opciones son explícitas, y más información puede ser encontrada aqui

En el caso de que la auditoría tenga que soportar reflejos de bases de datos, un GUID específico debe ser asignado a la auditoría que coincida con el GUID en la base de datos reflejo. Si este es el caso, un script SQL para crear la nueva auditoría debe ser usado, y en nuestro caso se ve así:

USE [master]
GO

CREATE SERVER AUDIT [Audit Login Changes]
TO FILE 
(	FILEPATH = N'C:\SqlAudits\'
	,MAXSIZE = 1024 MB
	,MAX_FILES = 10
	,RESERVE_DISK_SPACE = OFF
)
WITH
(	QUEUE_DELAY = 1000
	,ON_FAILURE = CONTINUE
	,AUDIT_GUID = '<enter_appropriate_guid_here>'
)
ALTER SERVER AUDIT [Audit Login Changes] WITH (STATE = ON)
GO

Ahora que el nuevo objeto de SQL Server Audit es creado, el objeto de Server Audit Specifications para el objeto de auditoría creado debe ser establecido.

En Object Explorer navegue a la carpeta Security -> Server Audit Specifications y desde el menú contextual seleccione New Server Audit Specification

Selecting the New Server Audit Specification option

El objeto de Especificación de Auditoría de Servidor describe qué eventos a nivel de servidor serán auditados. El único objeto de Especificación de Auditoría de Servidor puede ser creado por el objeto Auditoría de Servidor; de todas maneras, la Especificación de Auditoría de Servidor puede contener múltiples grupos de acciones de auditoría. Para rastrear todos los cambios hecho en inicios de sesión, usuarios y roles, el siguiente Tipo de Acción de Auditoría mostrado en la siguiente imagen debería ser creado. Más acerca de los tipos especificados de Acciones de Auditoría está disponible en el appendice

Server Audit Specification Properties

Y finalmente, después de especificar el nombre para este objeto de Especificación de Auditoría de Servidor e ingresar el nombre del objeto de Auditoría al cual el objeto de Especificación de Auditoría de Servidor estará relacionado, la solución de auditoría de SQL Server está lista.

Para quienes prefieran crear el objeto de Especificación de Auditoría de Servidor usando T-SQL, aquí está un script que lo hará por usted:

USE [master]
GO

CREATE SERVER AUDIT SPECIFICATION [Audit Login]
FOR SERVER AUDIT [Audit Login Changes]
ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP),
ADD (SERVER_ROLE_MEMBER_CHANGE_GROUP),
ADD (DATABASE_PERMISSION_CHANGE_GROUP),
ADD (SERVER_OBJECT_PERMISSION_CHANGE_GROUP),
ADD (SERVER_PERMISSION_CHANGE_GROUP),
ADD (DATABASE_PRINCIPAL_CHANGE_GROUP),
ADD (SERVER_PRINCIPAL_CHANGE_GROUP)
WITH (STATE = ON)
GO

Ahora, después de que el nuevo SQL Server Audit está configurado para recolectar los eventos de seguridad especificados, el sistema que lanzará una notificación cuando el evento ocurra tiene que ser establecido. Primero, un script que es capaz de leer y analizar el archivo .audit y luego enviar un correo electrónico al usuario especificado debe ser creado. Aquí está un ejemplo:

DECLARE @TempTime datetime2;
DECLARE @Counter int;
DECLARE @MailQuery NVARCHAR(MAX);
SET @Counter = 0
SET @TempTime = (SELECT TOP 1 LastEventTime FROM dbo.TempAuditTime)
SET @Counter= (SELECT COUNT (event_time) 
 FROM sys.fn_get_audit_file('C:\SqlAudits\*.sqlaudit', default, default)
 WHERE DATEADD(hh, DATEDIFF(hh, GETUTCDATE(), CURRENT_TIMESTAMP), event_time ) > @TempTime)
 PRINT @Counter
 IF @Counter > 0 

 	BEGIN
	SET @MailQuery = CAST ((SELECT td = DATEADD(hh, DATEDIFF(hh, GETUTCDATE(), CURRENT_TIMESTAMP), event_time), '', 
							td =statement, ''
					FROM sys.fn_get_audit_file('C:\SqlAudits\*.sqlaudit', default, default)
					WHERE DATEADD(hh, DATEDIFF(hh, GETUTCDATE(), CURRENT_TIMESTAMP), event_time ) > @TempTime FOR XML PATH('tr'), TYPE
					) AS NVARCHAR(MAX))

DECLARE @tableHTML  NVARCHAR(MAX) ;

SET @tableHTML =
    N'<H1>Security Event Report</H1>' +
    N'<table border="1">' +
    N'<tr><th>Event time</th><th>Statement</th>'+
	N'</tr>' +
    @MailQuery +
    N'</table>';
	
 PRINT @tableHTML

 -- Update temp table event time
USE master

	UPDATE dbo.TempAuditTime
   SET [LastEventTime] = SYSDATETIME ()

-- Send Email
EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'SecurityEvent', 
		@recipients = 'nikola.dimitrijevic@apexsql.com',
		@body = @tableHTML,
		@body_format = 'HTML',
		@subject = 'Security Event Occured';
		
    	END; 

Este script particular requiere que se cree una tabla dbo.TempAuditTime, ya que será usada para almacenar la información acerca del tiempo cuando ocurrió la última lectura del archivo, y este DateTime será usado para comparación con el tiempo cuando el evento ha ocurrido. Si el tiempo del evento es más nuevo, el correo electrónico con los detalles del evento será enviado.

Para ese propósito, el trabajo de SQL Server puede ser creado para que ejecute este script. Un trabajo de SQL Server Agent permite programar la ocurrencia tan frecuentemente como sea necesario, pero cuán frecuentemente un trabajo será ejecutado depende también de cuán seguido habrá la necesidad de revisar el archivo de repositorio de SQL Server Audit en busca de eventos importantes y luego enviar una alerta de correo electrónico. En nuestro caso, una alerta de correo electrónico es formateada a HTML como una tabla para asegurar una mejor legibilidad de la información importante.

Security event report

Las desventajas de este método son que requiere un conocimiento avanzado de T-SQL, recursos significativos de SQL Server pueden ser usados dependiendo de la frecuencia del programa, pero también dependen del tamaño del archivo .audit que tiene que ser leído cada vez. Finalmente, requiere el procedimiento completo descrito anteriormente sea repetido manualmente y configurado manualmente para cada tipo de evento y base de datos.

ApexSQL Audit

ApexSQL Audit es una  herramienta de cumplimiento de normas y auditoría de SQL Server que rastrea más de 200 eventos en múltiples instancias de SQL Server y sus objetos y lo graba en un repositorio central a prueba de manipulación. La información capturada está disponible a través de un rango de reportes integrado con un diseñador de reportes personalizados adicional para cumplir con los requerimientos específicos del usuario.

Una de las características que ApexSQL Audit provee es las alertas. Consiste en alertas predefinidas de sistema (monitorean estados de salud básicos como el espacio en disco y el uso del repositorio central), alertas de datos (monitorean eventos capturados) y alertas SQL personalizadas (la habilidad de alertar en cualquier evento y/o métrica que puede ser recuperada con un script SQL).

Para crear alertas de datos en ApexSQL Audit:

  1. Inicie la aplicación principal de  ApexSQL Audit
  2. Seleccione la pestaña Alerts en el panel izquierdo en la pestaña Manage, haga clic en el botón New.

    Managing data alert creation from within the ApexSQL Audit GUI

  3. Desde el menú desplegable, seleccione Data alert (la opción Custom script alert es descrita abajo).

    Selecting the Data alert option

En el texto siguiente nos enfocaremos en las opciones de alertas. Los siguientes pasos generalmente aplican a todos los tipos de alertas con diferencia en condiciones específicas de la alerta.

  1. Ingrese la información de la alerta en el diálogo Alert name and notification options. Aquí, el nombre de la alerta, el sujeto y el cuerpo del reporte pueden ser especificados. Los marcadores de posición como $LoginName$ serán reemplazados cuando la alerta sea desencadenada, así que el usuario puede personalizar completamente el formato del reporte de alerta que obtendrá. La opción Limit the number of reports for this alert to one per minute (for each server) asegura que el usuario final no reciba una cantidad desordenada de reportes, en caso de un pico en las alertas.

    Entering the alert information

  2. Seleccione la instancia SQL Server acerca de la que desea ser alertado en el diálogo Server deployment. Presione Next para continuar configurando las condiciones para la alerta.

    Selecting the SQL Server instance(s)

  3. La característica de alerta de ApexSQL Audit utiliza un filtro avanzado que permite una configuración granular de las condiciones de la alerta. Los usuarios pueden establecer las condiciones bajo las cuales el evento desencadenará la alerta. Los eventos pueden ser filtrados usando el nombre de la aplicación, el cliente del anfitrión, el nombre de la base de datos, la operación del servidor y los datos en texto. Todas las condiciones pueden usar los operadores is e is not, mientras que los datos de texto pueden usar adicionalmente los operadores contains y does not contain.

    Setting alerting conditions

    Adicionalmente, para bases de datos con colación sensible a mayúsculas y minúsculas, la casilla Case sensitive debería ser seleccionada.

  4. En el siguiente diálogo Actions, el usuario puede elegir si desea tener la notificación de alerta vía correo electrónico. Después de seleccionar la casilla Send this alert report via email, la cuenta de correo electrónico puede ser configurada haciendo clic en el enlace Click here to configure an account for sending e-mail.

    The Account settings dialog, shown upon clicking the Click here to configure as account for sending e-mail link

  5. Ingrese la dirección de correo electrónico de destino en el campo To y luego presione el enlace Send test e-mail. Si el correo electrónico de prueba es recibido correctamente, presione Next.
  6. El último diálogo Alert summary muestra toda la información relevante acerca del correo electrónico creado. Si todo está correcto, la nueva alerta será creada haciendo clic en OK.

    The Alert summary dialog

En caso de que alguna habilidad de alerta avanzada/personalizada sea necesaria, y la opción Custom script alert es usada en el paso 3, reemplace los pasos del 3 al 6 con lo siguiente:

  1. Seleccione la opción Custom script alert, la cual le permitirá ejecutar el script definido por el usuario y desencadenar o no la alerta de acuerdo al resultado del script.

    Selecting the Custom script alert option

  2. Ingrese la información de la alerta en el diálogo Alert name and notification options – el nombre de la alerta, la Severidad (Low, Medium o High), el nombre de la alerta, el asunto y el texto del reporte pueden ser especificados.

    Alert name and notification options

  3. Seleccione la instancia de SQL Server acerca de la que desea ser alertado en el diálogo Server deployment. Presione Next para continuar configurando las condiciones para la alerta.

    The Server deployment dialog

  4. En el diálogo Conditions, el valor numérico y el script que será ejecutado debe ser especificado. El script deber estar diseñado para retornar un valor numérico, y si este valor numérico es igual o mayor que el valor numérico ingresado, una alerta será desencadenada. En nuestro ejemplo, un script retornará el tamaño de la base de datos AdventureWorks2014 en MB. Si el tamaño de la base de datos es igual o mayor que 2048 MB (2 GB), la alerta será desencadenada.

    The Conditions dialog

  5. El diálogo Check interval nos permite establecer la fecha/tiempo cuando la alerta iniciará con la ejecución del script, así como el periodo de recurrencia. El periodo de recurrencia puede ser establecido por el usuario ingresando el valor de recurrencia y seleccionando la medida de tiempo desde el menú desplegable.

    The Check interval dialog

  6. Cuando todo esté configurado, el diálogo Alert summary aparecerá al presionar el botón Next. Esto permite una revisión final de los parámetros personalizados de la alerta. Si todo está correcto, presione el botón OK y la nueva alerta personalizada será creada.

    The Alert summary dialog

Una vez que la alerta es desencadenada, aparte del correo electrónico, todas las alertas activadas pueden ser revisadas en la pestaña History del diálogo Alerts.

Reviewing all raised alerts in the History tab

Desde la pestaña Manage, cada alerta creada puede ser editada, eliminada, deshabilitada o habilitada.

The Manage tab - managing created alerts

Cada método nativo de auditoría de SQL Server tiene algunas limitaciones significativas y/o desventajas, mientras que al mismo tiempo cada una requiere algo de conocimiento avanzado de SQL para establecer apropiadamente el sistema de alertas. ApexSQL Audit, por otro lado, permite configurar alertas usando las opciones estándar o avanzadas en unos cuantos clics, mientras que asegura unos procesos efficient auditing and reporting para múltiples instancias de SQL Server, bases de datos y sis objetos al mismo tiempo.


Apéndice

  • DATABASE_ROLE_MEMBER_CHANGE_GROUP – El evento es registrado cuando un inicio de sesión es añadido/removido de un rol de base de datos.
  • SERVER_ROLE_MEMBER_CHANGE_GROUP – El evento es registrado cuando un inicio de sesión es añadido/removido de un rol fijo de servidor.
  • DATABASE_PERMISSION_CHANGE_GROUP – El evento es registrado para los eventos GRANT, REVOKE o DENY.
  • SERVER_OBJECT_PERMISSION_CHANGE_GROUP – El evento es registrado cuando GRANT, REVOKE o DENY son enviados por un permiso de objeto de servidor.
  • SERVER_PERMISSION_CHANGE_GROUP – El evento es registrado cuando GRANT, REVOKE o DENY son enviados para permisos en el alcance del servidor, como crear un inicio de sesión.
  • DATABASE_PRINCIPAL_CHANGE_GROUP – El evento es registrado cuando usuarios son creados, alterados o eliminado de la base de datos.
  • SERVER_PRINCIPAL_CHANGE_GROUP – El evento es registrado cuando principales del servidor son creados, alterados o eliminados.

Traductor: Daniel Calbimonte

The post Auditoría de SQL Server – cómo ser alertado acerca de eventos de auditoría importantes appeared first on Solution center.

Auditoría y reportes de bases de datos SQL Server continuos usando el registro de transacciones

$
0
0

Los archivos de registros de transacciones de la base de datos en SQL Server son continuamente inyectados con información transaccional y detalles acerca de los cambios de la base de datos por SQL Server mismo. Incluso cuando la información desde los archivos de registros de transacciones y copias de seguridad pueden ser usados como una fuente sólida para auditorías de bases de datos, SQL Server no provee una solución sólida para utilizar los archivos de registros de transacciones en su potencial completo, ni ofrece una manera simple de explorar esos archivos de registros de transacciones o analizar la información dentro para realizar una auditoría continua de la base de datos SQL.

Para usar la información dentro de los archivos de registros de transacciones y las copias de seguridad, ApexSQL Log es una herramienta poderosa de auditoría y recuperación que no sólo permitirá al usuario explorar sus archivos de registros de transacciones, sino que proveerá una solución fácil para cumplir con los principales requerimientos de auditoría:

  • Auditoría continua de cambios DML y DDL – que aseguran que todos los cambios de la base de datos SQL Server son auditados sin crear ninguna entrada duplicada.

  • Auditoría sin supervisión/automatizada – flujo constante e ininterrumpido de trabajos nocturnos de auditoría que son pre programados por cada plan de auditoría.

  • Los datos auditados que está almacenada en tablas de repositorio – que pueden ser creadas directamente dentro de la base de datos SQL Server auditada o alguna otra específica.

  • Acceso fácil y rápido a los datos auditados ya sea consultando el repositorio directamente o creando reportes de auditoría.

Solución

En este artículo vamos a mostrar cómo configurar ApexSQL Log para realizar una auditoría continua nocturna de los archivos/copias de seguridad del registro de transacciones de una base de datos SQL Server y crear tablas de repositorio que almacenarán todos los datos auditados creando una sesión repetible en ApexSQL Log. Luego, vamos a mostrar cómo automatizar la ejecución de esta sesión de manera regular usando PowerShell. Finalmente, vamos a tratar las capacidades de reporte y cómo consultar las tablas repositorio manualmente, lo cual se puede traducir en la creación de varios procedimientos almacenados.

Resumen rápido

  • Configure ApexSQL Log para auditoría continua – ApexSQL Log es configurada de cierta manera para agarrar automáticamente todos los archivos de registros de transacciones existentes y a ser creados, así como continuar cada trabajo de auditoría subsecuente donde el trabajo previo ha finalizado.

  • Proceso de automatización – utilizando el proyecto de ApexSQL Log, veremos cómo usar Windows PowerShell para programar trabajos de auditoría de modo que estos puedan correr en la noche- El script de automatización puede ser encontrado aquí.

  • Finalmente, veremos cómo extractar la información auditada desde las tablas de repositorio.

Descripción

Como se mencionó arriba, comenzamos creando y configurando un sesión en ApexSQL Log.

  1. Una vez que ApexSQL Log es iniciado, una nueva sesión es automáticamente iniciada, y el usuario puede siempre iniciar una sesión fresca haciendo clic en el botón ‘New’ en la cinta de la aplicación principal.

  2. En el primer paso del asistente de sesión, elija un SQL Server desde el menú desplegable de servidores, elija entre los métodos de autenticación de Windows o SQL Server y provea credenciales apropiadas (si aplica). Finalmente, elija una base de datos para auditar y haga clic en el botón Next para proceder.

  3. En el siguiente paso del asistente, Data sources, es importante asegurarnos de que ApexSQL Log busque en los archivos de registros de transacciones apropiados que contienen la información apropiada para la auditoría. En los casos cuando los respaldos de los registros de transacciones estén siendo creado regularmente, es importante asegurar que todos los archivos sean incluidos en el proceso de auditoría y que son automáticamente añadidos como fuentes por la aplicación. Para hacer esto, usaremos la característica de patrón de nombre que recuperará todos los archivos de registros de transacciones desde las carpetas especificadas e incluiremos todas las copias de seguridad de registros de transacciones que coincidan con el patrón provisto – los caracteres comodines deberían ser usados aquí para configurar el patrón para coincidir con condiciones de ambientes específicas. Para hacer esto, simplemente haga clic en el botón ‘Add pattern’, provea la localización de la carpeta y configure el patrón usando comodines – los archivos que coinciden con el patrón serán mostrados inmediatamente para asegurar que esto ha sido apropiadamente configurado. Haga clic en OK para cerrar la ventana de configuración de patrones, y asegúrese de que el patrón está seleccionado como fuente de datos. Adicionalmente, los registros de transacciones en línea deberían permanecer seleccionados como otra fuente de taos, pero pueden ser deseleccionados/excluidos si el usuario no desea usarlos como fuentes de datos debido a requerimientos específicos – esto no afectará la salida de la auditoría, sino que sólo afectará el último trabajo de auditoría – si el registro de transacciones no está seleccionado, cada última auditoría terminará con la última información desde la copia de seguridad del registro de transacciones, y no incluirá más información residiendo en el archivo de registro de transacciones hasta que la nueva copia de seguridad es creada. Para lograr el mejor desempeño, es recomendado crear copias de seguridad de registros de transacciones regularmente (por ejemplo, cada hora) y generar copias de seguridad de la base de datos también regularmente (por ejemplo, semanalmente) – esto asegurará que sólo las últimas copias de seguridad son usadas en el proceso de auditoría, haciéndolo más rápido y menos intensivo en el impacto en el desempeño en comparación con auditar cadenas interminables de registros de transacciones o archivos de registros en línea gigantes.

    Nota: Para que ApexSQL Log provea los detalles completos de la auditoría, es importante siempre incluir la cadena completa de copias de seguridad de los registros de transacciones (todas las copias de seguridad de registros de transacciones desde la última copia de seguridad completa de la base de datos en adelante) en el trabajo de auditoría, de manera que algunos usuarios puedan considerar ajustar sus políticas de creación/retención de copias de seguridad para asegurar que la cadena completa esté siempre disponible a ApexSQL Log.

  4. Una vez que provedemos a través del asistente, el paso ‘Select output’ nos proveerá con varias elecciones para la salida de la auditoría. Para propósitos de auditoría continua, optemos por la opción ‘Export results’.

  5. Esto nos trae a la configuración de filtros en el asistente de sesión. Primero, el usuario debería seleccionar el filtro ‘Continuous auditing’ y elegir la localización donde el archivo de rastreo será almacenado – este archivo almacenará la información acerca de dónde terminó el último trabajo de auditoría continua (valor LSN de la última transacción) para asegurar que el siguiente trabajo continúa desde el primer LSN que sigue cuando el siguiente trabajo de auditoría sea iniciado.

    Adicionalmente, los usuarios pueden usar varios filtros para afinar su trabajo de auditoría. Un buen lugar para empezar es primero elegir qué operaciones DML/DDL incluir en el trabajo de auditoría, luego proceder a elegir qué tablas de base datos/sistema serán incluidas en el proceso, y elegir algunos filtros incluyendo filtros de usuario, de transacciones, de SPID, así como algunas opciones de filtración adicionales en este paso del asistente.

  6. Una vez que los filtros hayan sido configurados, el paso final del asistente nos permite configurar la salida de exportación. Primero, optemos por la opción ‘Export to database’, dado que estamos apuntando a insertar la información de la auditoría en las tablas repositorio. Luego, haga clic en el botón ‘Select database’ y elija la base de datos en la cual serán creadas las tablas repositorio y la información se inyectará ahí (el usuario necesitará elegir SQL Server y proveer credenciales apropiadas), y haga clic en Connect.

  7. Finalmente, haga clic en el botón ‘Save’ y provea el nombre de la sesión para grabar la sesión y complete el proceso de configuración.

Ahora que la sesión ha sido creada, puede ser usada desde la Interfaz Gráfica de la aplicación cuando sea que el usuario lo requiera (haciendo clic en el botón ‘Open’ en la cinta principal y yendo a través del asistente pre definido), o la sesión puede ser usada para el proceso de automatización, el cual es lo que mostraremos a continuación.

Automatización de la auditoría

ApexSQL Log soporta CLI completamente y también, todas las características de la Interfaz Gráfica están disponibles a través de los interruptores CLI. Más información acerca de los comandos CLI disponibles puede ser vista en este artículo.

Para automatizar el trabajo de auditoría continua y correr de forma regular trabajos de auditoría en intervalos predefinidos (y en rangos de tiempo específicos), podemos usar varias herramientas. Por ejemplo, tal automatización puede ser lograda creando un archivo de script de lotes que puede ser programado vía el programador de Windows o una herramienta similar. Otra solución es usar Windows PowerShell para crear y programar la tarea que es superior al primer ejemplo, dado que todo es logrado en el proyecto PowerShell, y no hay necesidad de usar herramientas adicionales para programar.

Para automatizar el trabajo de auditoría vía PowerShell, llamaremos al archivo de la sesión de ApexSQL Log (.axlp) que hemos creado al final del asistente previamente descrito.

Aquí están los comandos que usaremos:

Schtasks.exe /Create # Crear una tarea
/TN # Nombre de la tarea
/SC # Definir la frecuencia de la tarea
/ST # Tiempo de inicio de la tarea
/ET # Tiempo de finalización de la tarea
/TR # Ruta para la tarea que será ejecutada (con comandos CLI adicionales)

Con estos comandos, podemos programar una tarea de auditoría regular. Aquí está un ejemplo de un script PowerShell que creará una tarea “ApexSQL Log continuous auditing”que correrá la sesión predefinida (grabada como c:\ApexSQL Log\Saved sessions\Continuous auditing.axlp) cada hora, cada día entre las 05:00 AM y las 11:00 PM.

Schtask.exe /create /tn ApexSQL Log continuous auditing /sc hourly /st 05:00 /et 23:00 /tr c:\Program Files\ApexSQL\ApexSQL Log\ApexSQLLog.com c:\ApexSQL Log\Saved sessions\Continuous auditing.axlp

Reportes

Ahora que hemos visto cómo crear y automatizar la auditoría continua, enfoquémonos en los reportes. Dado que toda la información auditada con el ejemplo de arriba está siendo almacenada en las dos tablas de la base de datos SQL Server, la manera más fácil de extraer la información es consultando las tablas directamente vía SQL Server Management Studio o cualquier otra herramienta similar. Para información detallada acerca de la topología del repositorio, consulte la guía detallada en el artículo en la Base de Conocimientos “ApexSQL Log continuous auditing repository topography” (Topografía del repositorio de auditoría de ApexSQL Log). Mientras que correr reportes básicos como la auditoría diaria o los cambios por reportes de historial de tablas específicas o usuarios pueden ser fácilmente realizados, obtener más datos específicos en los reportes puede ser difícil para algunos usuarios con menos experiencia en SQL Server. Para aquellos que prefieren consultar la base de datos directamente, una guía detallada acerca de cómo trabajar con tablas de repositorio directamente se ofrece en el artículo “How to work with the ApexSQL Log continuous auditing repository directly, including querying and reporting” (Cómo trabajar con el repositorio de auditoría continua de ApexSQL directamente, incluyendo consultas y reportes). Para aquellos que desean llevar los reportes un paso más allá, aquí están los ejemplos de los reportes más comúnmente usados:

Transacciones mensuales – este reporte mostrará todas las acciones en el rango de tiempo especificado en la variable @time_frame (la variable @time_frame puede ser cambiada para ajustar la precisión por fecha/tiempo. Por ejemplo, ‘YYYY-MM-DD-hh’ mostrará todas las transacciones a nivel de horas).

DECLARE @time_frame AS VARCHAR(50)

SET @time_frame = 'yyyy-MM'

SELECT FORMAT(TRANSACTION_BEGIN, @time_frame) AS "Date/Time"
	,count(DISTINCT TRANSACTION_ID) AS "Transaction Count"
FROM [dbo].[APEXSQL_LOG_OPERATION]
GROUP BY FORMAT(TRANSACTION_BEGIN, @time_frame)

Transacciones diarias – este reporte mostrará todas las transacciones por día.

SELECT CONVERT (DATE
	,TRANSACTION_BEGIN) AS "Date"
	,count (DISTINCT TRANSACTION_ID) AS "Transaction Count"
FROM [dbo].[APEXSQL_LOG_OPERATION]
GROUP BY CONVERT (DATE
	,TRANSACTION_BEGIN

Conteo de operaciones por tipo – este reporte mostrará el número de operaciones por tipo de operación.

SELECT OPERATION_TYPE
	,COUNT(OPERATION_TYPE) AS "Operation count"
FROM [dbo].[APEXSQL_LOG_OPERATION]
GROUP BY OPERATION_TYPE

Conteo de operaciones por fecha (y tipo) – este reporte mostrará el número de operaciones específicas separadas por fecha.

SELECT CONVERT 8DATE
	,TRANSACTION_BEGIN) AS "Date"
	,OPERATION_TYPE
	,COUNT (OPERATION_TYPE) AS "Operation count"
FROM [dbo].[APEXSQL_LOG_OPERATION]
GROUP BY OPERATION_TYPE
	,CONVERT (DATE
	,TRANSACTION_BEGIN)

Conteo de operaciones por tipo y fecha por operación – este reporte mostrará el número de operaciones por fecha para tipos de operaciones específicos. Para configurar el reporte para tipos de operaciones específicos, simplemente establezca la variable @operation_type a operaciones específicas (por ejemplo, @operatio_type = ‘DELETE’ para obtener los resultados de operaciones de eliminación).

DECLARE @operation_type AS VARCHAR(50)

SET @operation_type = 'INSERT'

SELECT CONVERT (DATE
	,TRANSACTION_BEGIN) AS "Date"
	,(OPERATION_TYPE)
	,COUNT OPERATION_TYPE AS "Operation count"
FROM [dbo].[APEXSQL_LOG_OPERATION]
WHERE OPERATION_TYPE = @operation_type
GROUP BY OPERATION_TYPE
	,CONVERT (DATE
	,TRANSACTION_BEGIN)

Conteo del top 10 de transacciones por tabla este reporte mostrará el conteo del top 10 de transacciones para las tablas de la base de datos. Para configurar el rango de tiempo, establezca las variables @start_date y @end_date a fechas específicas desde/a.

DECLARE @start_date AS VARCHAR(50)
DECLARE @end_date AS VARCHAR(50)

SET @start_date = '2016-06-01'
SET @end_date = '2016-12-01’
SELECT TOP 10 OBJECT_NAME, count(distinct TRANSACTION_ID) as "Transaction Count" FROM [dbo].[APEXSQL_LOG_OPERATION] WHERE TRANSACTION_BEGIN > @start_date AND TRANSACTION_END < @end_date group by OBJECT_NAME ORDER BY "Transaction Count" DESC

Conteo del top 10 de transacciones por usuario – este reporte mostrará el top 10 de transacciones por usuario. Como con el reporte previo, para configurar el rango de tiempo, establezca las variables @start_date y @end_date a fechas específicas desde/a.

DECLARE @start_date AS VARCHAR(50)
DECLARE @end_date AS VARCHAR(50)

SET @start_date = '2016-6-01'
SET @end_date = '2016-12-12'

SELECT TOP 10 USER_NAME
	,count(DISTINCT TRANSACTION_ID) AS "Transaction Count"
FROM [dbo].[APEXSQL_LOG_OPERATION]
WHERE TRANSACTION_BEGIN > @start_date
	AND TRANSACTION_END < @end_date
GROUP BY USER_NAME
ORDER BY "Transaction Count" DESC

Top 10 de las transacciones con más tiempo de ejecución – este reporte muestra las transacciones con más tiempo de ejecución con detalles apropiados (cuándo ocurrió la transacción, el usuario que la corrió…) que pueden ser configurados para añadir más columnas a la tabla.

SELECT DISTINCT TOP 10 TRANSACTION_ID
	,CAST TRANSACTION_END - TRANSACTION_BEGIN AS TIME AS "Transatcion_duration"
	,USER_NAME
	,TRANSACTION_BEGIN
	,TRANSACTION_DESCRIPTION
FROM [dbo].[APEXSQL_LOG_OPERATION]
ORDER BY CAST(TRANSACTION_END - TRANSACTION_BEGIN AS TIME) DESC

Conteo del top 10 de transacciones por operación – este reporte muestra las transacciones que han incluido la mayor cantidad de operaciones.

SELECT TOP 10 TRANSACTION_ID
	,MAX(USER_NAME) AS "Username"
	,MAX(TRANSACTION_BEGIN) AS "Start time"
	,COUNT(TRANSACTION_ID) AS "Operation count"
FROM [dbo].[APEXSQL_LOG_OPERATION]
GROUP BY TRANSACTION_ID
ORDER BY COUNT(TRANSACTION_ID) DESC

Todas las consultas mostradas arriba pueden volverse procedimiento almacenados para propósitos de reutilización, usando el código estándar ‘create stored procedure’:

CREATE PROCEDURE < PROCEDURE_NAME
	,SYSNAME
	,ProcedureName >
	-- Add the parameters for the stored procedure here
	< @Param1
	,SYSNAME
	,@p1 > < Datatype_For_Param1
	,
	,INT > = < Default_Value_For_Param1
	,
	,0 >
	,< @Param2
	,SYSNAME
	,@p2 > < Datatype_For_Param2
	,
	,INT > = < Default_Value_For_Param2
	,
	,0 >
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	-- Insert statements for procedure here
	SELECT < @Param1
		,SYSNAME
		,@p1 >
		,< @Param2
		,SYSNAME
		,@p2 >
END
GO

Ahora que hemos creado varios reportes y los hemos grabado como procedimientos almacenados, podemos usar el Servicio SQL Server Reporting para completar el proceso de reporte y crear reportes basados en estos procedimientos almacenados. Los reportes pueden ser mejorados en muchas maneras, incluyendo añadir gráficos, listas y muchos otros elementos a los reportes. La guía acerca de cómo crear tales reportes puede ser encontrada aquí

Preguntas Frecuentes

¿Puedo correr la sesión de ApexSQL Log manualmente cuando es requerido (en adición a los trabajos automatizados)?

R: Sí – esto le permitirá realizar una auditoría inmediata cuando sea necesario y simplemente actualizará la información de rastreo de manera que el trabajo automatizado pueda empezar donde usted terminó.

Quiero realizar una auditoría continua manual, pero no quiero afectar a la auditoría ya automatizada – ¿qué pasos debería realizar?

Si el usuario desea continuar la auditoría cuando el proceso previo ha iniciado sin afectar el archivo actual (activo) de rastreo, simplemente haga una copia de él y especifique la localización del archivo copiado en el campo de localización correspondiente en el paso de filtro de fecha/tiempo en el asistente de sesión.

¿Puedo tener múltiples trabajos de auditoría continua separados en la misma base de datos al mismo tiempo?

Sí, sólo asegúrese de que cada trabajo tiene su archivo de rastreo separado y que los trabajos no están programados en el mismo tiempo (sólo un trabajo de auditoría puede correr al mismo tiempo).

Descargas

Por favor descargue los scripts asociados con este artículo desde nuestro repositorio GitHub.

Por favor contáctenos para cualquier problema o pregunta con los scripts.

The post Auditoría y reportes de bases de datos SQL Server continuos usando el registro de transacciones appeared first on Solution center.

Viewing all 17 articles
Browse latest View live