Compartir a través de


Auditoría de SQL Server (motor de base de datos)

La auditoría de una instancia del motor de base de datos de SQL Server o una base de datos individual implica el seguimiento y el registro de eventos que se producen en el motor de base de datos. La auditoría deSQL Server permite crear auditorías de servidor, que pueden contener especificaciones de auditoría de servidor para los eventos de servidor, y especificaciones de auditoría de base de datos para los eventos de base de datos. Los eventos auditados se pueden escribir en los registros de eventos o en los archivos de auditoría.

Hay varios niveles de auditoría para SQL Server, en función de los requisitos gubernamentales o de estándares para la instalación. SQL Server Audit proporciona las herramientas y los procesos que debe tener para habilitar, almacenar y ver auditorías en varios objetos de servidor y base de datos.

Puede registrar grupos de acciones de auditoría de servidor por instancia y grupos de acciones de auditoría de base de datos o acciones de auditoría de base de datos por base de datos. El evento de auditoría se producirá cada vez que se encuentre la acción auditable.

Todas las ediciones de SQL Server admiten auditorías de nivel de servidor. La auditoría de nivel de base de datos se limita a las ediciones Enterprise, Developer y Evaluation. Para obtener más información, vea Features Supported by the Editions of SQL Server 2014.

Componentes de auditoría de SQL Server

Una auditoría es la combinación de varios elementos en un único paquete para un grupo específico de acciones de servidor o acciones de base de datos. Los componentes de la auditoría de SQL Server combinan para generar una salida denominada auditoría, al igual que una definición de informe combinada con elementos gráficos y de datos genera un informe.

La auditoría de SQL Server usa eventos extendidos para ayudar a crear una auditoría. Para obtener más información acerca de los eventos extendidos, vea eventos extendidos.

Auditoría de SQL Server

El objeto Audit de SQL Server recopila una instancia de acciones de nivel servidor o de base de datos y grupos de acciones para supervisar. La auditoría está en el nivel de instancia de SQL Server. Puede tener varias auditorías por instancia de SQL Server.

Al definir una auditoría, especifique la ubicación de la salida de los resultados. Este es el destino de la auditoría. La auditoría se crea en un estado deshabilitado y no audita automáticamente ninguna acción. Una vez habilitada la auditoría, el destino de auditoría recibe datos de la auditoría.

Especificación de auditoría del servidor

El objeto Server Audit Specification pertenece a una auditoría. Puede crear una especificación de auditoría de servidor por auditoría, ya que ambas se crean en el ámbito de la instancia de SQL Server.

La especificación de auditoría de servidor recopila muchos grupos de acciones de nivel de servidor generados por la característica Eventos extendidos. Puede incluir grupos de acciones de auditoría en una especificación de auditoría de servidor. Los grupos de acciones de auditoría son grupos predefinidos de acciones, que son eventos atómicos que se producen en el motor de base de datos. Estas acciones se envían a la auditoría, que las registra en el destino.

Los grupos de acciones de auditoría de nivel de servidor se describen en el tema Grupos de acciones y acciones de auditoría de SQL Server.

Especificación de auditoría de base de datos

El objeto Database Audit Specification también pertenece a una auditoría de SQL Server. Puede crear una especificación de auditoría de base de datos por base de datos de SQL Server por auditoría.

La especificación de auditoría de base de datos recopila las acciones de auditoría de nivel de base de datos generadas por la característica Eventos extendidos. Puede agregar grupos de acciones de auditoría o eventos de auditoría a una especificación de auditoría de base de datos. Los eventos de auditoría son las acciones atómicas que el motor de SQL Server puede auditar. Los grupos de acciones de auditoría son grupos predefinidos de acciones. Ambos están en el ámbito de la base de datos de SQL Server. Estas acciones se envían a la auditoría, que las registra en el destino. No incluya objetos con ámbito de servidor, como las vistas del sistema, en una especificación de auditoría de base de datos de usuario.

Los grupos de acciones de auditoría de nivel de base de datos y las acciones de auditoría se describen en el tema Grupos de acciones y acciones de auditoría de SQL Server.

Objetivo

Los resultados de una auditoría se envían a un destino, que puede ser un archivo, el registro de eventos de seguridad de Windows o el registro de eventos de la aplicación de Windows. Los registros se deben revisar y archivar periódicamente para asegurarse de que el destino tiene espacio suficiente para escribir registros adicionales.

Importante

Cualquier usuario autenticado puede leer y escribir en el registro de eventos de la aplicación de Windows. El registro de eventos de la aplicación requiere permisos menores que el registro de eventos de seguridad de Windows y es menos seguro que el registro de eventos de seguridad de Windows.

Escribir en el registro de seguridad de Windows requiere que se agregue la cuenta de servicio de SQL Server a la directiva Generar auditorías de seguridad . De forma predeterminada, el sistema local, el servicio local y el servicio de red forman parte de esta directiva. Esta configuración se puede configurar mediante el complemento de directiva de seguridad (secpol.msc). Además, la directiva de seguridad Audit object access debe estar habilitada para Éxito y Fracaso. Este ajuste se puede configurar mediante el complemento de política de seguridad (secpol.msc). En Windows Vista o Windows Server 2008, puede establecer la directiva generada por la aplicación más granular desde la línea de comandos mediante el programa de directivas de auditoría (AuditPol.exe). Para obtener más información sobre los pasos para habilitar la escritura en el registro de seguridad de Windows, vea Escribir eventos de auditoría de SQL Server en el registro de seguridad. Para obtener más información sobre el programa de Auditpol.exe, consulte el artículo de Knowledge Base 921469, Cómo usar la directiva de grupo para configurar la auditoría de seguridad detallada. Los registros de eventos de Windows son globales para el sistema operativo Windows. Para obtener más información sobre los registros de eventos de Windows, vea Información general del Visor de eventos. Si necesita permisos más precisos en la auditoría, use un archivo binario como destino.

Al guardar información de auditoría en un archivo, para ayudar a evitar alteraciones, puede restringir el acceso a la ubicación del archivo de las maneras siguientes:

  • La cuenta de servicio de SQL Server debe tener permiso de lectura y escritura.

  • Normalmente, los administradores de auditoría requieren permiso de lectura y escritura. Esto supone que los administradores de auditoría son cuentas de Windows para la administración de archivos de auditoría, como: copiarlos en recursos compartidos diferentes, realizar copias de seguridad de ellos, etc.

  • Los lectores de auditoría autorizados para leer archivos de auditoría deben tener permiso de lectura.

Incluso cuando el motor de base de datos está escribiendo en un archivo, otros usuarios de Windows pueden leer el archivo de auditoría si tienen permiso. El motor de base de datos no toma un bloqueo exclusivo que impida exclusivamente las operaciones de lectura.

Dado que el Motor de Base de Datos puede acceder al archivo, los inicios de sesión de SQL Server que tienen el permiso CONTROL SERVER pueden usar el Motor de Base de Datos para acceder a los archivos de auditoría. Para registrar cualquier usuario que lea el archivo de auditoría, defina una auditoría en master.sys.fn_get_audit_file. Esto registra los inicios de sesión con el permiso CONTROL SERVER que han accedido al archivo de auditoría a través de SQL Server.

Si un administrador de auditoría copia el archivo en otra ubicación (con fines de archivo, etc.), las ACL de la nueva ubicación deben reducirse a los permisos siguientes:

  • Administrador de auditoría: lectura y escritura

  • Lector de auditoría: lectura

Se recomienda generar informes de auditoría a partir de una instancia independiente de SQL Server, como una instancia de SQL Server Express, a la que solo tienen acceso los administradores de auditoría o los lectores de auditoría. Mediante el uso de una instancia independiente del motor de base de datos para los informes, puede ayudar a evitar que los usuarios no autorizados obtengan acceso al registro de auditoría.

Puede ofrecer protección adicional contra el acceso no autorizado mediante el cifrado de la carpeta en la que se almacena el archivo de auditoría mediante el cifrado de unidad BitLocker de Windows o el sistema de archivos de cifrado de Windows.

Para obtener más información sobre los registros de auditoría que se escriben en el destino, consulte Registros de auditoría de SQL Server.

Información general sobre el uso de la auditoría de SQL Server

Puede usar SQL Server Management Studio o Transact-SQL para definir una auditoría. Una vez creada y habilitada la auditoría, el destino comenzará a recibir entradas.

Puede leer los registros de eventos de Windows mediante la utilidad Visor de eventos en Windows. En el caso de los destinos de archivo, puede usar el Visor de archivos de registro en SQL Server Management Studio o la función fn_get_audit_file para leer el archivo de destino.

El proceso general para crear y usar una auditoría es el siguiente.

  1. Cree una auditoría y defina el objetivo.

  2. ** Cree una especificación de auditoría de servidor o una especificación de auditoría de base de datos que corresponda a la auditoría. Habilite la especificación de auditoría.

  3. Habilite la auditoría.

  4. Lea los eventos de auditoría mediante el Visor de eventos de Windows, la vista de archivos de registror o la función fn_get_audit_file.

Para obtener más información, vea Crear una especificación de auditoría de servidor y auditoría de servidor y Crear una auditoría de servidor y una especificación de auditoría de base de datos.

Consideraciones

En el caso de un error durante el inicio de la auditoría, el servidor no se iniciará. En este caso, el servidor se puede iniciar mediante la opción -f en la línea de comandos.

Cuando un error de auditoría hace que el servidor se apague o no se inicie porque se especifica ON_FAILURE=SHUTDOWN para la auditoría, el evento MSG_AUDIT_FORCED_SHUTDOWN se escribirá en el registro. Dado que el apagado se producirá la primera vez que se encuentre con esta configuración, el evento se registrará una sola vez. Este evento se escribe después del mensaje de error de la auditoría que provoca el apagado. Un administrador puede omitir los apagados provocados por auditoría iniciando SQL Server en modo de usuario único mediante la marca -m . Si comienza en modo de usuario único, degradará cualquier auditoría en la que se especifique ON_FAILURE=SHUTDOWN para que se ejecute en esa sesión a ON_FAILURE=CONTINUE. Cuando se inicia SQL Server usando la marca -m, el mensaje MSG_AUDIT_SHUTDOWN_BYPASSED se escribirá en el registro de errores.

Para obtener más información sobre las opciones de inicio del servicio, consulte Opciones de inicio del servicio motor de base de datos.

Adjuntar una base de datos con una auditoría definida

Al adjuntar una base de datos que incluye una especificación de auditoría y un GUID que falta en el servidor, resultará en una especificación de auditoría huérfana. Dado que una auditoría con un GUID coincidente no existe en la instancia del servidor, no se registrará ningún evento de auditoría. Para corregir esta situación, use el comando ALTER DATABASE AUDIT SPECIFICATION para conectar la especificación de auditoría huérfana a una auditoría de servidor existente. O bien, use el comando CREATE SERVER AUDIT para crear una nueva auditoría de servidor con el GUID especificado.

Puede adjuntar una base de datos que tenga una especificación de auditoría definida en ella a otra edición de SQL Server que no admita la auditoría de SQL Server, como SQL Server Express, pero no registrará eventos de auditoría.

Creación de reflejo de la base de datos y auditoría de SQL Server

Una base de datos que tenga definida una especificación de auditoría de base de datos y que use la creación de reflejo de la base de datos incluirá la especificación de auditoría de la base de datos. Para funcionar correctamente en la instancia de SQL reflejada, se deben configurar los siguientes elementos:

  • El servidor de espejo debe contar con una auditoría que tenga el mismo GUID para que la especificación de auditoría de la base de datos pueda registrar los eventos de auditoría. Esto se puede configurar mediante el comando CREATE AUDIT WITH GUID GUID=<desde la auditoría> del servidor de origen.

  • En el caso de los destinos de archivos binarios, la cuenta de servicio del servidor espejo debe tener los permisos adecuados para la ubicación en la que se está escribiendo la pista de auditoría.

  • En el caso de los destinos del registro de eventos de Windows, la directiva de seguridad en el equipo donde se encuentra el servidor espejo debe permitir el acceso de la cuenta de servicio al registro de eventos de seguridad o de aplicación.

Administradores de auditoría

Los miembros del sysadmin rol fijo de servidor se identifican como el usuario dbo de cada base de datos. Para auditar las acciones de los administradores, audite las acciones del usuario dbo .

Creación y administración de auditorías con Transact-SQL

Puede usar instrucciones DDL, vistas y funciones de administración dinámica y vistas de catálogo para implementar todos los aspectos de la auditoría de SQL Server.

Instrucciones del lenguaje de definición de datos

Puede usar las siguientes instrucciones DDL para crear, modificar y quitar especificaciones de auditoría:

ALTER AUTHORIZATION CREATE SERVER AUDIT
MODIFICAR LA ESPECIFICACIÓN DE AUDITORÍA DE LA BASE DE DATOS CREATE SERVER AUDIT SPECIFICATION
ALTER SERVER AUDIT DROP DATABASE AUDIT SPECIFICATION
ALTER SERVER AUDIT SPECIFICATION DROP SERVER AUDIT
CREAR ESPECIFICACIÓN DE AUDITORÍA DE BASE DE DATOS DROP SERVER AUDIT SPECIFICATION

Funciones y vistas dinámicas

En la tabla siguiente se enumeran las vistas dinámicas y la función que puede usar para la auditoría de SQL Server.

Vistas y funciones dinámicas Descripción
sys.dm_audit_actions Devuelve una fila para cada acción de auditoría que se puede notificar en el registro de auditoría y todos los grupos de acciones de auditoría que se pueden configurar como parte de la auditoría de SQL Server.
sys.dm_server_audit_status Proporciona información sobre el estado actual de la auditoría.
sys.dm_audit_class_type_map Devuelve una tabla que asigna el campo class_type del registro de auditoría al campo class_desc de sys.dm_audit_actions.
función_obtener_archivo_auditoría Devuelve información de un archivo de auditoría creado por una auditoría de servidor.

Vistas de catálogo

En la tabla siguiente se enumeran las vistas de catálogo que puede usar para la auditoría de SQL Server.

Vistas de catálogo Descripción
sys.database_ audit_specifications Contiene información sobre las especificaciones de auditoría de base de datos en una auditoría de SQL Server en una instancia de servidor.
sys.database_audit_specification_details Contiene información sobre las especificaciones de auditoría de base de datos en una auditoría de SQL Server en una instancia de servidor para todas las bases de datos.
sys.server_audits Contiene una fila para cada auditoría de SQL Server de una instancia de servidor.
sys.server_audit_specifications Contiene información sobre las especificaciones de auditoría de servidor en una auditoría de SQL Server en una instancia de servidor.
sys.server_audit_specifications_details Contiene información sobre los detalles de la especificación de auditoría de servidor (acciones) en una auditoría de SQL Server en una instancia de servidor.
sys.server_file_audits Contiene información extendida sobre el tipo de auditoría de archivos en una auditoría de SQL Server en una instancia de servidor.

Permisos

Cada función y comando de SQL Server Audit tiene requisitos de permisos individuales.

Para crear, modificar o quitar una auditoría de servidor o una especificación de auditoría de servidor, los principales de servidor requieren el permiso ALTER ANY SERVER AUDIT o el permiso CONTROL SERVER. Para crear, alterar o quitar una especificación de auditoría de base de datos, los principales de base de datos requieren el permiso ALTER ANY DATABASE AUDIT o los permisos ALTER o CONTROL sobre la base de datos. Además, los principales deben tener permiso para conectarse a la base de datos o poseer permisos de ALTER ANY SERVER AUDIT o CONTROL SERVER.

A menos que se especifique lo contrario, la visualización de vistas de catálogo requiere que un principio tenga uno de los siguientes:

  • Pertenencia al rol fijo de servidor sysadmin.

  • Permiso de CONTROL SERVER.

  • El permiso VIEW SERVER STATE.

  • El permiso ALTER ANY AUDIT.

  • El permiso VIEW AUDIT STATE solo permite al principal acceso a la vista de catálogo sys.server_audits.

Un principal debe tener el permiso VIEW SERVER STATE o ALTER ANY AUDIT para usar las vistas dinámicas de gestión.

Para obtener más información sobre cómo conceder derechos y permisos, vea GRANT (Transact-SQL).

Precaución

Los usuarios en el rol de sysadmin pueden alterar cualquier componente de auditoría y los en el rol de db_owner pueden alterar las especificaciones de auditoría de una base de datos. SQL Server Audit validará que un inicio de sesión que crea o modifica una especificación de auditoría tiene al menos el permiso ALTER ANY DATABASE AUDIT. Sin embargo, no realiza ninguna validación al adjuntar una base de datos. Debe asumir que todas las especificaciones de auditoría de base de datos son tan confiables como aquellos principales en el rol sysadmin o db_owner.

Crear una auditoría de servidor y una especificación de auditoría de servidor

Crear una auditoría de servidor y una especificación de auditoría de base de datos

Ver un registro de SQL Server Audit

Escribir eventos de SQL Server Audit en el registro de seguridad

Propiedades del servidor (página Seguridad)
Explica cómo activar la auditoría de inicio de sesión para SQL Server. Los registros de auditoría se almacenan en el registro de aplicaciones de Windows.

Opción de configuración del servidor en modo auditoría c2
Explica el modo de auditoría de cumplimiento de seguridad de C2 en SQL Server.

Categoría de eventos auditoría de seguridad (SQL Server Profiler)
Explica los eventos de auditoría que puede usar en SQL Server Profiler. Para más información, consulte SQL Server Profiler.

Seguimiento de SQL
Explica cómo se puede usar el seguimiento de SQL desde sus propias aplicaciones para crear seguimientos manualmente, en lugar de usar SQL Server Profiler.

Desencadenadores DDL
Explica cómo puede usar desencadenadores del lenguaje de definición de datos (DDL) para realizar un seguimiento de los cambios en las bases de datos.

Microsoft TechNet: SQL Server TechCenter: Seguridad y protección de SQL Server 2005
Proporciona información sobre la fecha y la seguridad de SQL Server up-to.

Véase también

Grupos de acciones de auditoría y acciones de SQL Server
Registros de SQL Server Audit