Compartir a través de


auditoría de SQL Server (Motor de base de datos)

Applies to:SQL ServerAzure SQL Managed Instance

Auditing una instancia del motor de base de datos de SQL Server o una base de datos individual implica rastrear y registrar eventos que ocurren en el motor de base de datos. SQL Server auditoría 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 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 del servidor por instancia, y grupos de acciones de auditoría o acciones de auditoría de la base de datos por base de datos. El evento de auditoría se producirá cada vez que se encuentre la acción auditable.

Este artículo se aplica a SQL Server y Azure SQL Managed Instance.

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 de base de datos. Los componentes de la auditoría de SQL Server se combinan para producir una salida que se denomina auditoría, de la misma manera que una definición de informe combinada con elementos gráficos y de datos produce un informe.

La función de auditoría de SQL Server usa Extended Events para ayudar a crear una auditoría. Para obtener más información sobre los eventos extendidos, vea Información general sobre eventos extendidos.

auditoría de SQL Server

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

Cuando se define una auditoría, se especifica la ubicación para los resultados generados. Éste 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 misma.

Especificación de auditoría de servidor

El objeto 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 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 Extended Events. 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 target.

Los grupos de acciones de auditoría a nivel de servidor se describen en el artículo SQL Server Audit action groups and actions.

Nota:

Debido a las restricciones de rendimiento, tempdb y las tablas temporales no se auditan. Aunque el grupo de acciones completado por lotes captura instrucciones en tablas temporales, es posible que no rellene correctamente los nombres de objeto. Sin embargo, la tabla de origen siempre se audita, lo que garantiza que todas las inserciones de la tabla de origen a las tablas temporales se registren.

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 cada base de datos de SQL Server por auditoría.

La especificación de auditoría de base de datos recopila acciones de auditoría de nivel de base de datos generadas por la característica Extended Events. Puede agregar grupos de acciones de auditoría o eventos de auditoría a una especificación de auditoría de base de datos. Eventos de auditoría Audit son acciones atómicas que pueden ser auditadas por el motor de SQL Server. Losgrupos 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 target. No incluyas 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 artículo Grupos de acciones de auditoría y acciones 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 Windows Application. Los registros se deben revisar y archivar periódicamente para garantizar que el destino tiene espacio suficiente para escribir más registros.

Importante

Cualquier usuario autenticado puede leer y escribir en el registro de eventos de aplicación de Windows. El registro de eventos de la aplicación requiere permisos inferiores a los del 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 la cuenta de servicio de SQL Server se agregue a la política Generate security audits. 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 utilizando el complemento de directiva de seguridad (secpol.msc). Además, la directiva de seguridad Auditar el acceso a objetos debe estar habilitada tanto para Éxito como para Fallo>. Esta configuración se puede configurar utilizando el complemento de directiva de seguridad (secpol.msc). En Windows Vista o Windows Server 2008 (y versiones posteriores), puede establecer la directiva generada por la aplicación más granular desde la línea de comandos mediante el programa de políticas 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 Write SQL Server Audit events to the Security log. Para obtener más información sobre el programa Auditpol.exe, vea el artículo 921469 de Knowledge Base que describe cómo usar la directiva de grupo para configurar las opciones detalladas de auditoría de seguridad. Los registros de eventos Windows son globales para el sistema operativo Windows. Para obtener más información sobre los registros de eventos de Windows, consulte Visor de eventos Overview. Si necesita permisos más concretos en la auditoría, utilice el destino de archivo binario.

Al guardar información de auditoría en un archivo, para tratar de impedir su alteración, puedes 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 los 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, como: copiarlos en diferentes recursos compartidos, realizar copias de seguridad, 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 adquiere 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 CONTROL SERVER permiso pueden usar el Motor de Base de Datos para acceder a los archivos de auditoría. En SQL Server 2022 (16.x) y versiones posteriores, el permiso VIEW SERVER SECURITY AUDIT es suficiente para leer archivos de auditoría mediante fn_get_audit_file. Para registrar a todos los usuarios que estén 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 CONTROL SERVER permiso que han accedido al archivo de auditoría a través de SQL Server. Para obtener más información sobre fn_get_audit_file los permisos, consulte sys.fn_get_audit_file.

Si un administrador de auditoría copia el archivo en otra ubicación (para archivarlo, etc.), los permisos de las listas de control de acceso (ACL) de la nueva ubicación se deben reducir solo a los siguientes:

  • 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 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 Windows cifrado de unidad BitLocker o Windows sistema de cifrado de archivos.

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 SQL Server Audit

Puede usar SQL Server Management Studio o Transact-SQL para definir una auditoría. Una vez que la auditoría está creada y habilitada, el destino recibe registros.

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 la función Log File Viewer en SQL Server Management Studio o la función fn_get_audit_file para leer el archivo de destino.

El proceso general de creación y uso de 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 Windows Visor de eventos, Log File Viewer o la función fn_get_audit_file.

Para obtener más información, vea Crear una auditoría de servidor y especificación de auditoría de servidor y Crear una auditoría de servidor y 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 inicia. En este caso, el servidor se puede iniciar mediante la -f opción en la línea de comandos.

Cuando un error de auditoría hace que el servidor se apague o no se inicie porque ON_FAILURE = SHUTDOWN se especifica para la auditoría, el MSG_AUDIT_FORCED_SHUTDOWN evento se escribe en el registro. Dado que el apagado se produce en la primera aparición de esta configuración, el evento se registra una vez. Este evento se registra después del mensaje de fallo de la auditoría que ha provocado 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 se inicia en modo de usuario único, reducirá cualquier auditoría especificada para ejecutarse en esa sesión como ON_FAILURE = SHUTDOWN en ON_FAILURE = CONTINUE. Cuando se inicia SQL Server con la marca -m, el mensaje MSG_AUDIT_SHUTDOWN_BYPASSED se escribe en el registro de errores.

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

Operaciones internas en Azure SQL Managed Instance

  • En Azure SQL Database y Azure SQL Managed Instance, los eventos iniciados por SQLDBControlPlaneFirstPartyApp son una función Azure interna del plano de control Azure SQL Database. Los eventos iniciados por SQLDBControlPlaneFirstPartyApp forman parte de una operación de sincronización interna entre el motor de SQL y Azure Resource Manager. Estos eventos son una parte normal de la administración de recursos y son necesarios para la representación y funcionamiento correctos de los recursos en Azure.

Adjuntar una base de datos con una auditoría definida

Al intentar adjuntar una base de datos que tiene una especificación de auditoría y cuando se especifica un GUID que no existe en el servidor, se produce una especificación de auditoría huérfana. Dado que en la instancia del servidor no existe ninguna auditoría con ese GUID, no se graba ningún evento de auditoría. Para corregir esta situación, use el ALTER DATABASE AUDIT SPECIFICATION comando para conectar la especificación de auditoría huérfana a una auditoría de servidor existente. O bien, use el CREATE SERVER AUDIT comando 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.

Reflejo de bases de datos y auditoría de SQL Server

Una base de datos que tiene definida una especificación de auditoría de base de datos y que usa la creación de reflejo de la base de datos, incluye la especificación de auditoría de base de datos. Para poder trabajar correctamente en la instancia de SQL reflejada, se deben configurar los elementos siguientes:

  • El servidor espejo debe tener una auditoría con el mismo GUID para que la especificación de auditoría de la base de datos pueda escribir registros. Esto se puede configurar mediante el comando CREATE AUDIT WITH GUID = <guid-from-source-server-audit>.

  • En el caso de los destinos de archivo binario, la cuenta de servicio del servidor de espejo debe tener los permisos adecuados para la ubicación donde se escribe el registro de auditoría.

  • Para los destinos de registro de eventos de Windows, la política de seguridad en el equipo donde se encuentra el servidor de espejo debe permitir el acceso de la cuenta de servicio al registro de eventos de seguridad o del Aplicativo.

Actividad de administrador de auditoría

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

Permisos

Cada característica y comando para SQL Server Audit tiene requisitos de permisos individuales.

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

El VIEW ANY DEFINITION permiso proporciona acceso para ver las vistas de auditoría de nivel de servidor y VIEW DEFINITION proporciona acceso para ver las vistas de auditoría de nivel de base de datos. La denegación de estos permisos anula la capacidad de ver las vistas de catálogo, incluso si el agente principal tiene los permisos ALTER ANY SERVER AUDIT o ALTER ANY DATABASE AUDIT.

Para leer datos de auditoría mediante fn_get_audit_file, SQL Server 2019 (15.x) y versiones anteriores requieren CONTROL SERVER permiso en el servidor, mientras que SQL Server 2022 (16.x) y versiones posteriores requieren VIEW SERVER SECURITY AUDIT permiso. Para obtener más información, consulte sys.fn_get_audit_file.

Para obtener más información sobre cómo conceder derechos y permisos, consulte GRANT.

Precaución

Los principales en el rol sysadmin pueden alterar cualquier componente de auditoría y los principales en el rol db_owner pueden alterar especificaciones de auditoría de bases de datos. SQL Server Audit valida 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 la base de datos solo son tan confiables como los principales en el rol sysadmin o db_owner.

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 SQL Server Audit.

Instrucciones del lenguaje de definición de datos

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

Instrucciones DDL Descripción
ALTERAR AUTORIZACIÓN Cambia la propiedad de un objeto seguro.
MODIFICAR LA ESPECIFICACIÓN DE AUDITORÍA DE LA BASE DE DATOS Modifica un objeto de especificación de auditoría de base de datos utilizando la función de Auditoría de SQL Server.
ALTER SERVER AUDIT Modifica un objeto de auditoría de servidor mediante la característica Auditoría de SQL Server.
ALTERAR LA ESPECIFICACIÓN DE AUDITORÍA DEL SERVIDOR Modificar 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 característica de auditoría de SQL Server.
CREAR AUDITORÍA DE SERVIDOR Crea un objeto de auditoría de servidor mediante SQL Server Audit.
CREATE SERVER AUDIT SPECIFICATION Crea un objeto de especificación de auditoría de servidor mediante la característica de auditoría de SQL Server.
ELIMINAR ESPECIFICACIÓN DE AUDITORÍA DE BASE DE DATOS Elimina un objeto de especificación de auditoría de base de datos utilizando la funcionalidad de auditoría de SQL Server.
DROP SERVER AUDIT (eliminar auditoría del servidor) Quita un objeto de auditoría del servidor mediante la función de auditoría de SQL Server.
DROP SERVER AUDIT SPECIFICATION Quita un objeto de especificación de auditoría de servidor mediante la función de auditoría de SQL Server.

Funciones y vistas dinámicas

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

Funciones y vistas 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 SQL Server Audit.
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 en 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 siguiente tabla se enumeran las vistas de catálogo que puede usar para la auditoría de SQL Server.

Vistas de catálogo Descripción
especificaciones_de_auditoría_de_base_de_datos_sys 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 en una instancia de SQL Server.
sys.server_audit_specifications (especificaciones de auditoría del servidor) 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 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.

Paso siguiente