SQL Server Audit (Database Engine)

  • 01/01/2020
  • 13 minutes to read
    • D
    • v
    • M
    • M
    • D
    • +8

Applies to: yes SQL Server (todas las versiones compatibles) SíInstancia administrada de Azure SQL

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

Importante

En la instancia administrada de Azure SQL, esta característica de T-SQL tiene ciertos cambios de comportamiento. Consulte Diferencias de T-SQL de instancia administrada de Azure SQL de SQL Server para obtener más información sobre todos los cambios de comportamiento de T-SQL.

Hay varios niveles de auditoría para SQL Server, dependiendo de los requisitos gubernamentales o de estándares para su instalación. Auditoría de SQL Server 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 a nivel de servidor. Todas las ediciones admiten auditorías a nivel de base de datos a partir de SQL Server 2016 (13.x) SP1. Antes de eso, la auditoría a nivel de base de datos se limitaba a las ediciones Enterprise, Developer y Evaluation. Para obtener más información, consulte Características compatibles con las ediciones de SQL Server 2016.

Nota

Este tema se aplica a SQL Server. Para Bases de datos SQL, consulte Introducción a la auditoría de bases de datos SQL.

Componentes de auditoría de SQL Server

Una auditoría es la combinación de varios elementos en un solo paquete para un grupo específico de acciones de servidor o de base de datos. Los componentes de la auditoría de SQL Server se combinan para producir un resultado que se denomina auditoría, del mismo modo que una definición de informe combinada con gráficos y elementos de datos produce un informe.

La auditoría de SQL Server utiliza eventos extendidos para ayudar a crear una auditoría. Para obtener más información sobre los eventos extendidos, consulte Eventos extendidos.

Auditoría de SQL Server

El objeto de auditoría de SQL Server recopila una sola instancia de acciones a nivel de servidor o base de datos y grupos de acciones para supervisar. La auditoría se realiza a nivel de instancia de SQL Server. Puede tener varias auditorías por instancia de SQL Server.

Cuando define una auditoría, especifica la ubicación para 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 la auditoría recibe los datos de la auditoría.

Especificación de auditoría de servidor

El objeto de Especificación de auditoría de servidor 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 instancia de SQL Server.

La especificación de auditoría del servidor recopila muchos grupos de acciones a nivel de servidor creados por la función de 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 de acciones predefinidos, que son eventos atómicos que ocurren 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 a 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 de especificación de auditoría de base de datos 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 a nivel de base de datos generadas por la función de 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 puede auditar el motor de SQL Server. Los grupos de acciones de auditoría son grupos de acciones predefinidos. 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 a nivel de base de datos y las acciones de auditoría se describen en el tema Grupos y acciones de auditoría de SQL Server.

Destino

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 aplicaciones de Windows. Los registros deben revisarse y archivarse periódicamente para asegurarse de que el destino tenga suficiente espacio 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 más bajos que el registro de eventos de seguridad de Windows y es menos seguro que el registro de eventos de seguridad de Windows.

La escritura en el registro de seguridad de Windows requiere que la cuenta de servicio de SQL Server se agregue 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 directiva de seguridad (secpol).MSC). Además, la directiva de seguridad de acceso a objetos de auditoría debe estar habilitada tanto para el éxito como para el fracaso. Esta configuración se puede configurar mediante el complemento directiva de seguridad (secpol).MSC). En Windows Vista o Windows Server 2008, puede establecer la directiva generada por una aplicación más detallada 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, consulte Escribir eventos de auditoría de SQL Server en el Registro de seguridad. Para más información sobre Auditpol.programa exe, consulte el artículo 921469 de la Base de conocimientos, Cómo usar la directiva de grupo para configurar una auditoría de seguridad detallada. Los registros de eventos de Windows son globales para el sistema operativo Windows. Para obtener más información acerca de los registros de eventos de Windows, consulte Descripción general del Visor de eventos. Si necesita permisos más precisos en la auditoría, utilice el destino de archivo binario.

Cuando guarda información de auditoría en un archivo, para evitar manipulaciones, puede restringir el acceso a la ubicación del archivo de las siguientes maneras:

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

  • Los administradores de auditoría suelen requerir permisos 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, por ejemplo: copiarlos en diferentes recursos compartidos, hacer 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 tiene un bloqueo exclusivo que impida 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 permiso de SERVIDOR de CONTROL pueden usar el Motor de base de datos para acceder a los archivos de auditoría. Para registrar a cualquier usuario que esté leyendo el archivo de auditoría, defina una auditoría en master.sys.fn_get_audit_file. Esto registra los inicios de sesión con permiso de SERVIDOR de CONTROL que han accedido al archivo de auditoría a través de SQL Server.

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

  • Administrador de Auditoría-Lectura / 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 tengan acceso los Administradores de auditoría o los Lectores de auditoría. Al usar una instancia separada del Motor de base de datos para la generación de informes, puede ayudar a evitar que usuarios no autorizados obtengan acceso al registro de auditoría.

Puede ofrecer protección adicional contra el acceso no autorizado cifrando 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.

Descripción general del uso de la auditoría de SQL Server

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

Puede leer los registros de eventos de Windows mediante la utilidad Visor de eventos de Windows. Para destinos de archivos, 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 utilizar 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 se asigne 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, el Visor de archivos de registro o la función fn_get_audit_file.

Para obtener más información, consulte Crear una Auditoría de servidor y una Especificación de Auditoría de Servidor y Crear una Auditoría de Servidor y una Especificación de Auditoría de Base de datos.

Consideraciones

En caso de fallo durante el inicio de la auditoría, el servidor no se iniciará. En este caso, el servidor se puede iniciar utilizando 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. Debido a que el apagado se producirá en el primer encuentro de esta configuración, el evento se escribirá una vez. Este evento se escribe después del mensaje de error de la auditoría que causa el apagado. Un administrador puede omitir las paradas inducidas por auditoría iniciando SQL Server en modo de usuario único utilizando el indicador-m. Si inicia 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 como ON_FAILURE=CONTINUE. Cuando SQL Server se inicia mediante el indicador-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 de servicio, consulte Opciones de inicio de servicio de Motor de base de datos.

Adjuntar una base de datos con una auditoría definida

Adjuntar una base de datos que tiene una especificación de auditoría y especifica un GUID que no existe en el servidor causará una especificación de auditoría huérfana. Debido a que no existe una auditoría con un GUID coincidente en la instancia del servidor, no se registrarán eventos de auditoría. Para corregir esta situación, utilice 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, utilice el comando CREAR AUDITORÍA DE SERVIDOR 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 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.

Duplicación de 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 utilice duplicación de base de datos incluirá la especificación de auditoría de base de datos. Para que funcione correctamente en la instancia SQL reflejada, se deben configurar los siguientes elementos:

  • El servidor mirror debe tener una auditoría con el mismo GUID para permitir que la especificación de auditoría de la base de datos escriba registros de auditoría. Esto se puede configurar mediante el comando CREAR AUDITORÍA CON GUID =<GUID desde Auditoría del servidor de origen>.

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

  • Para los destinos de registro de eventos de Windows, la directiva de seguridad del equipo en el que se encuentra el servidor mirror debe permitir el acceso de la cuenta de servicio al registro de eventos de seguridad o de aplicaciones.

Administradores de auditoría

Los miembros del rol servidor fijo sysadmin se identifican como el usuario dbo en 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 de lenguaje de definición de datos

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

Declaraciones DDL Descripción
ALTER AUTHORIZATION Cambia la propiedad de un asegurable.
ALTER DATABASE AUDIT SPECIFICATION Altera un objeto de especificación de auditoría de base de datos mediante la función de auditoría de SQL Server.
ALTER SERVER AUDIT Altera un objeto de auditoría de servidor mediante la función de auditoría de SQL Server.
ALTER SERVER AUDIT SPECIFICATION Altera un objeto de especificación de auditoría de servidor mediante la función de auditoría de SQL Server.
CREAR ESPECIFICACIÓN DE AUDITORÍA DE BASE DE DATOS Crea un objeto de especificación de auditoría de base de datos mediante la función de auditoría de SQL Server.
CREAR AUDITORÍA DE SERVIDOR Crea un objeto de auditoría de servidor mediante la auditoría de SQL Server.
CREAR ESPECIFICACIÓN DE AUDITORÍA DE SERVIDOR Crea un objeto de especificación de auditoría de servidor mediante la función de auditoría de SQL Server.
ELIMINAR ESPECIFICACIÓN DE AUDITORÍA DE BASE DE DATOS Eliminar un objeto de especificación de auditoría de base de datos mediante la función de auditoría de SQL Server.
DROP SERVER AUDIT Suelta un objeto de auditoría de servidor mediante la función de auditoría de SQL Server.
ELIMINAR ESPECIFICACIÓN DE AUDITORÍA DE SERVIDOR Eliminar un objeto de especificación de auditoría de servidor mediante la función de auditoría de SQL Server.

Vistas y funciones dinámicas

En la siguiente tabla se enumeran las vistas y funciones dinámicas que se pueden usar para la auditoría de SQL Server.

vistas Dinámicas y funciones Descripción
sys.dm_audit_actions Devuelve una fila para cada acción de auditoría que se puede informar en el registro de auditoría y cada grupo de acciones de auditoría que se puede 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 class_type campo en el registro de auditoría para el class_desc campo en sys.dm_audit_actions.
fn_get_audit_file Devuelve la información de un archivo de auditoría creado por un servidor de auditoría.

Vistas de catálogo

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

las vistas de Catálogo Descripción
sys.database_audit_specifications Contiene información sobre las especificaciones de auditoría de la 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 bases 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 en una instancia de servidor.
sys.server_audit_specifications Contiene información sobre las especificaciones de auditoría del 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 del servidor (acciones) en una auditoría de SQL Server en una instancia de servidor.
sys.server_file_audits Contiene información ampliada 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 para la auditoría de SQL Server tiene requisitos de permisos individuales.

Para crear, modificar o eliminar una Auditoría de servidor o una Especificación de Auditoría de servidor, los directores de servidor requieren el permiso ALTERAR CUALQUIER AUDITORÍA DE SERVIDOR o el SERVIDOR de CONTROL. Para crear, modificar o eliminar una especificación de auditoría de base de datos, los directores de base de datos requieren el permiso ALTERAR CUALQUIER AUDITORÍA de BASE de DATOS o el permiso ALTERAR o CONTROLAR en la base de datos. Además, los principales deben tener permiso para conectarse a la base de datos o ALTERAR CUALQUIER AUDITORÍA DE SERVIDOR o CONTROL de permisos de SERVIDOR.

El permiso VER CUALQUIER DEFINICIÓN proporciona acceso para ver las vistas de auditoría a nivel de servidor y la DEFINICIÓN de VISTA proporciona acceso para ver las vistas de auditoría a nivel de base de datos. La denegación de estos permisos anula la capacidad de ver las vistas de catálogo, incluso si el director tiene los permisos ALTERAR CUALQUIER AUDITORÍA DE SERVIDOR o ALTERAR CUALQUIER AUDITORÍA DE BASE DE DATOS.

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

Precaución

Los principales del rol administrador del sistema pueden manipular cualquier componente de auditoría y los del rol propietario de la base de datos pueden manipular las especificaciones de auditoría de una base de datos. Auditoría de SQL Server validará que un inicio de sesión que crea o altera una especificación de auditoría tenga al menos el permiso MODIFICAR CUALQUIER AUDITORÍA DE BASE DE DATOS. Sin embargo, no hace ninguna validación cuando se adjunta una base de datos. Debe asumir que todas las Especificaciones de Auditoría de la base de datos son tan confiables como las principales en el rol administrador del sistema o propietario de la base de datos.

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 auditoría de SQL Server

Escribir eventos de auditoría de SQL Server en el Registro de seguridad

Propiedades del servidor (Página de 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.

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

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

SQL Trace
Explica cómo SQL Trace se puede usar desde sus propias aplicaciones para crear trazas manualmente, en lugar de usar SQL Server Profiler.

Disparadores DDL
Explica cómo se pueden usar los disparadores de Lenguaje de definición de datos (DDL) para realizar un seguimiento de los cambios en las bases de datos.

Microsoft TechNet: Centro técnico de SQL Server: Seguridad y protección de SQL Server 2005
Proporciona información actualizada sobre la seguridad de SQL Server.

Véase también

Grupos y Acciones de auditoría de SQL Server
Registros de auditoría de SQL Server