SQL Server Audit (motor de base de datos)

La auditoría de una instancia de Motor de base de datos de SQL Server o de una base de datos individual implica el seguimiento y registro de los eventos que se producen en Motor de base de datos. La auditoría de SQL 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 disponibles para SQL Server, dependiendo de los requisitos gubernamentales o normativos de cada instalación. SQL Server Audit proporciona las herramientas y los procesos necesarios para habilitar, almacenar y ver auditorías en varios objetos de servidor y de base de datos.

Puede registrar grupos de acciones de auditoría en el servidor por instancia, así como grupos de acciones o acciones de auditoría en la 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 en el nivel de servidor. Las auditorías de nivel de base de datos se limitan a las ediciones Enterprise, Developer y Evaluation. Para obtener más información, vea Características compatibles con las ediciones de SQL Server 2012.

Componentes de SQL Server Audit

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 SQL Server Audit se combinan para producir una salida denominada auditoría, de la misma manera que una definición de informe combinada con gráficos y elementos de datos da como resultado un informe.

SQL Server Audit usa eventos extendidos para facilitar la creación de auditorías. Para obtener más información acerca de los eventos extendidos, vea Eventos extendidos.

SQL Server Audit

El objeto SQL Server Audit recopila una única instancia de acciones y grupos de acciones de nivel de servidor o de base de datos para su supervisión. La auditoría se realiza en el nivel de instancia de SQL Server. Es posible tener varias auditorías por cada 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 cada auditoría, ya que ambos 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 constituyen eventos atómicos que tienen lugar 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 SQL Server Audit.

Especificación de auditoría de base de datos

El objeto Especificación de auditoría de base de datos también pertenece a una auditoría de SQL Server. Puede crear una única especificación de auditoría de base de datos para cada base de datos de SQL Server y cada 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. 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 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 se incluyen los objetos de á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 base de datos y las acciones de auditoría se describen en el tema Grupos de acciones y acciones de SQL Server Audit.

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 aplicación Windows. Los registros se deben revisar y archivar periódicamente para garantizar que el destino tiene espacio suficiente para escribir registros adicionales.

Nota importanteImportante

Cualquier usuario autenticado puede leer y escribir en el registro de eventos de aplicación Windows. El registro de eventos de aplicación requiere permisos más bajos que el registro de eventos de seguridad de Windows, por lo que es menos seguro que éste.

La escritura en el registro de seguridad de Windows requiere que se agregue la cuenta del servicio SQL Server a la directiva Generar auditorías de seguridad. De forma predeterminada, Sistema local, Servicio local y Servicio de red forman parte de esta directiva. Este valor se puede configurar mediante el complemento de directiva de seguridad (secpol.msc). Además, la directiva de seguridad Auditar el acceso a objetos debe estar habilitada tanto para Correcto como para Error. Este valor se puede configurar utilizando el complemento de directiva de seguridad (secpol.msc). En Windows Vista o Windows Server 2008, puede establecer la directiva Aplicación generada más específica desde la línea de comandos utilizando el programa de directiva de auditoría (AuditPol.exe). Para obtener más información sobre los pasos necesarios 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 acerca del 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 de Windows son globales al sistema operativo Windows. Para obtener más información acerca de los registros de eventos de Windows, vea Información general sobre el visor de eventos. Si necesita permisos más exactos de auditoría, use el destino de archivo binario.

Al guardar información de auditoría en un archivo, para tratar de impedir su alteración, puede restringir el acceso a la ubicación del archivo de las maneras siguientes:

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

  • Normalmente, los administradores de auditoría requieren los permisos de lectura y escritura. Entonces, se supone que los administradores de auditoría son cuentas de Windows para la administración de archivos de auditoría, por ejemplo para la copia en diversos recursos compartidos, la copia 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 crea ningún bloqueo exclusivo que evite las operaciones de lectura.

Dado que el Motor de base de datos puede tener acceso al archivo, los inicios de sesión de SQL Server que tengan el permiso CONTROL SERVER pueden utilizar el Motor de base de datos para tener acceso a los archivos de auditoría. Para registrar a los usuarios que estén leyendo el archivo de auditoría, defina una auditoría en master.sys.fn_get_audit_file. De esta forma se registran los inicios de sesión con permiso CONTROL SERVER que hayan tenido acceso al archivo de auditoría a través de SQL Server.

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

  • Administrador de auditoría: lectura/escritura

  • Lector de auditoría: lectura

Es recomendable generar los informes de la auditoría desde otra instancia de SQL Server, por ejemplo una instancia de SQL Server Express a la que solo tengan acceso administradores de auditoría o lectores de auditoría. El uso de otra instancia de Motor de base de datos para la creación de informes puede contribuir a evitar que usuarios no autorizados obtengan acceso al registro de la auditoría.

Puede proporcionar más protección contra el acceso no autorizado mediante el cifrado de la carpeta en que el archivo de la auditoría está almacenado. Para ello, puede utilizar 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, vea Registros de auditoría de SQL Server.

Información general sobre el uso de SQL Server Audit

Puede utilizar 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. Para los destinos de archivo, puede utilizar tanto el Visor del archivo de registros en SQL Server Management Studio como 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 destino.

  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 o el Visor de archivos de registro de Windows, o la función fn_get_audit_file.

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

Consideraciones

Si se produce un error al comenzar la auditoría, el servidor no se iniciará. En este caso, se podrá iniciar el servidor usando la opción –f en la línea de comandos.

Si un error de auditoría hace que el servidor se apague o no se inicie porque se ha especificado ON_FAILURE=SHUTDOWN para la auditoría, se escribirá en el registro el evento MSG_AUDIT_FORCED_SHUTDOWN. Dado que el apagado se producirá en la primera aparición de este valor, el evento se escribirá una vez. Este evento se escribirá después de la aparición del mensaje del error para la auditoría que ha provocado el cierre. El administrador puede hacer caso omiso de los cierres provocados por auditorías iniciando SQL Server en modo de usuario único mediante la marca –m. Si inicia en modo de usuario único, degradará cualquier auditoría donde se especifique ON_FAILURE=SHUTDOWN para ejecutarse en esa sesión como ON_FAILURE=CONTINUE. Cuando SQL Server se inicia mediante la marca –m, el mensaje MSG_AUDIT_SHUTDOWN_BYPASSED se escribirá en el registro de errores.

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

Adjuntar una base de datos con una auditoría definida

Si se adjunta una base de datos que tiene una especificación de auditoría y que especifica un GUID que no existe en el servidor, se producirá 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 grabará ningún evento 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 use el comando CREATE SERVER AUDIT para crear una nueva auditoría de servidor con el GUID especificado.

Si lo desea, puede adjuntar una base de datos en la que se haya definido una especificación de auditoría a otra edición de SQL Server que no admita SQL Server Audit, como SQL Server Express, pero no se registrará ningún evento de auditoría.

Creación de reflejo de la base de datos y SQL Server Audit

Una base de datos en la que se haya definido 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 base de datos. Para poder trabajar correctamente en la instancia de SQL reflejada, se deben configurar los elementos siguientes:

  • El servidor reflejado debe tener una auditoría con el mismo GUID para permitir que la especificación de auditoría de base de datos escriba registros de auditoría. Esto se puede configurar utilizando 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 reflejado debe tener los permisos adecuados para la ubicación en la que se escribe la pista de auditoría.

  • Si el destino es el registro de eventos de Windows, la directiva de seguridad del equipo en el que está ubicado el servidor reflejado debe permitir el acceso de la cuenta de servicio al registro de eventos de seguridad o de la aplicación.

Auditar a los administradores

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.

Crear y administrar 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 (DDL)

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

ALTER AUTHORIZATION

CREATE SERVER AUDIT

ALTER DATABASE AUDIT SPECIFICATION

CREATE SERVER AUDIT SPECIFICATION

ALTER SERVER AUDIT

DROP DATABASE AUDIT SPECIFICATION

ALTER SERVER AUDIT SPECIFICATION

DROP SERVER AUDIT

CREATE DATABASE AUDIT SPECIFICATION

DROP SERVER AUDIT SPECIFICATION

Funciones y vistas dinámicas

En la tabla siguiente se enumeran las funciones y vistas dinámicas que puede usar con las auditorías de SQL Server.

Funciones y vistas dinámicas

Descripción

sys.dm_audit_actions

Devuelve una fila por cada acción de auditoría sobre la que se puede guardar información en el registro de auditoría y por cada grupo de acciones de auditoría que se puede 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 de sys.dm_audit_actions.

fn_get_audit_file

Devuelve información de un archivo de auditoría creado por una auditoría de servidor.

En la tabla siguiente se enumeran las vistas de catálogo que puede usar con las auditorías 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 de una instancia del 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 de 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 de una instancia del servidor.

sys.server_audit_specifications_details

Contiene información sobre los detalles de las especificaciones de auditoría de servidor (acciones) en una auditoría de SQL Server de una instancia de servidor.

sys.server_file_audits

Contiene información adicional sobre el tipo de auditoría de archivos en una auditoría de SQL Server de una instancia de servidor.

Permisos

Cada una de las características y los comandos para SQL Server Audit tiene sus propios requisitos de permisos.

Para crear, modificar o quitar una auditoría de servidor o una especificación de auditoría de servidor, las entidades de seguridad de servidor requieren el permiso ALTER ANY SERVER AUDIT o CONTROL SERVER. Para crear, modificar o quitar 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 CONTROL en la base de datos. Además, las entidades de seguridad deben tener el permiso para conectarse a la base de datos o los permisos ALTER ANY SERVER AUDIT o CONTROL SERVER.

A menos que se especifique lo contrario, para que una entidad de seguridad pueda ver las vistas de catálogo debe cumplir una de las condiciones siguientes:

  • Pertenencia al rol fijo de servidor sysadmin.

  • El permiso CONTROL SERVER.

  • El permiso VIEW SERVER STATE.

  • El permiso ALTER ANY AUDIT.

  • El permiso VIEW AUDIT STATE (solo da el acceso principal a la vista de catálogo sys.server_audits).

Una entidad de seguridad debe tener el permiso VIEW SERVER STATE o ALTER ANY AUDIT para utilizar las vistas de administración dinámica.

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

Nota de advertenciaAdvertencia

De la misma forma que las entidades de seguridad del rol sysadmin pueden manipular cualquier componente de auditoría, las del rol db_owner pueden manipular las especificaciones de auditoría en una base de datos. SQL Server Audit comprobará si 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. Como norma, debe otorgar la misma confianza a las especificaciones de auditoría de base de datos que a las entidades de seguridad que tienen el rol sysadmin o db_owner .

Tareas relacionadas

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

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

Ver un registro de SQL Server Audit

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

Temas estrechamente relacionados con la auditoría

Vea también

Conceptos

Grupos de acciones y acciones de SQL Server Audit

Registros de auditoría de SQL Server