Descripción de SQL Server Audit

La auditoría de una instancia de SQL Server o de una base de datos de SQL Server implica el seguimiento y registro de los eventos que se producen en el sistema. En SQL Server puede utilizar varios métodos de auditoría, como se describe en Auditoría (motor de base de datos). A partir de SQL Server 2008 Enterprise, también puede configurar la auditoría automática mediante SQL Server Audit.

Hay varios niveles de auditoría disponibles para SQL Server, dependiendo de los requisitos gubernamentales o los estándares 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.

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 unen 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 Extended Events para facilitar la creación de auditorías. Para obtener más información acerca de Extended Events, vea Introducción a SQL Server Extended Events.

SQL Server Audit

El objeto SQL Server Audit recopila una única instancia de acciones y grupos de acciones en el 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 Database Engine (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 en el 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 en el 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 incluya objetos con ámbito en el servidor, como las vistas del sistema, en una especificación de auditoría de base de datos.

Los grupos de acciones de auditoría en el nivel 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 de Windows. (La operación de escribir en el registro de seguridad no está disponible en Windows XP). Los registros se deben revisar y archivar periódicamente para asegurar 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 de 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, el sistema local, el servicio local y el servicio de red forman parte de esta directiva. Este valor 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 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 Cómo escribir eventos de auditoría de servidor en el registro de seguridad. 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 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 sobre el Visor de eventos. 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, 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 Database Engine (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 Database Engine (Motor de base de datos) no crea ningún bloqueo exclusivo que evite las operaciones de lectura.

Dado que el Database Engine (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 Database Engine (Motor de base de datos) para tener acceso a los archivos de auditoría. 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. 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 Database Engine (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 de Windows, el Visor del archivo de registros o la función fn_get_audit_file.

El tema Temas de procedimientos de SQL Server Audit proporciona ejemplos de uso de la característica de auditoría para SQL Server Management Studio y Transact-SQL.

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 cierre 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 cierre se producirá la primera vez que se encuentre 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. De esta forma, indicará al sistema que cualquier auditoría en la que se haya especificado ON_FAILURE=SHUTDOWN debe ejecutarse en esa sesión como ON_FAILURE=CONTINUE. Cuando se inicia SQL Server usando la marca –m, se escribe el mensaje MSG_AUDIT_SHUTDOWN_BYPASSED en el registro de errores.

Para obtener más información acerca de las opciones de inicio del servicio, vea Usar las opciones de inicio del servicio SQL Server.

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.