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

Se aplica a: SQL Server

En este artículo se describe cómo crear una auditoría de servidor y una especificación de auditoría de base de datos en SQL Server mediante SQL Server Management Studio o Transact-SQL.

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. El objeto SQL Server Audit recopila una única instancia de acciones y grupos de acciones de nivel de servidor o de nivel 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. El objeto Especificación de auditoría de base de datos pertenece a una auditoría. 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. Para más información, consulte SQL Server Audit (motor de base de datos).

Limitaciones

Las especificaciones de auditoría de base de datos son objetos no protegibles que residen en una base de datos determinada. Al crear una especificación de auditoría de base de datos, está en un estado deshabilitado.

Cuando cree o modifique una especificación de auditoría de base de datos en una base de datos de usuario, no incluya acciones de auditoría en objetos del ámbito de servidor, como las vistas del sistema. Si se incluyen objetos del ámbito de servidor, se crea la auditoría. Sin embargo, los objetos del ámbito de servidor no se incluyen y no se devuelve ningún error. Para auditar objetos del ámbito de servidor, utilice una especificación de auditoría de base de datos en la base de datos master.

Las especificaciones de auditoría de base de datos residen en la base de datos en la que se crearon, excepto en el caso de la base de datos del sistema tempdb.

Permisos

  • Los usuarios con el permiso ALTER ANY DATABASE AUDIT pueden crear especificaciones de auditoría de base de datos y enlazarlas a cualquier auditoría.

  • Una vez creada una especificación de auditoría de base de datos, las entidades de seguridad que cuenten con los permisos CONTROL SERVER o ALTER ANY DATABASE AUDIT podrán verla. La cuenta de sysadmin también podrá verla.

Uso de SQL Server Management Studio

Creación de una auditoría de servidor

  1. En el Explorador de objetos, expanda la carpeta Seguridad .

  2. Haga clic con el botón derecho en la carpeta Auditorías y seleccione Nueva auditoría. Para obtener más información, consulte Crear una auditoría de servidor y una especificación de auditoría de servidor.

  3. Cuando termine de elegir las opciones, seleccione Aceptar.

Cree una especificación de auditoría de nivel de base de datos

  1. En el Explorador de objetos, expanda la base de datos donde quiera crear la especificación de auditoría.

  2. Expanda la carpeta Seguridad .

  3. Haga clic con el botón derecho en la carpeta Especificaciones de auditoría de base de datos y seleccione Nueva especificación de auditoría de base de datos.

    Estas opciones están disponibles en el cuadro de diálogo Crear especificación de auditoría de base de datos:

    Nombre

    El nombre de la especificación de auditoría de base de datos. Al crear una especificación de auditoría de servidor, se genera automáticamente un nombre. El nombre se puede editar.

    Auditoría

    Nombre de un objeto de auditoría de servidor existente. Escriba el nombre de la auditoría o selecciónelo en la lista.

    Tipo de acción de auditoría

    Especifica los grupos de acciones de auditoría y las acciones de auditoría en el nivel de base de datos que se desean capturar. Para obtener una lista de grupos de acciones de auditoría y de acciones de auditoría de nivel de base de datos, así como una descripción de los eventos que contienen, vea Grupos de acciones y acciones de SQL Server Audit.

    Esquema de objeto

    Muestra el esquema para el Nombre de objetoespecificado.

    Nombre de objeto

    Nombre del objeto que se va a auditar. Esta opción solo está disponible para las acciones de auditoría. No se aplica a los grupos de auditoría.

    Puntos suspensivos (...)

    Abre el cuadro de diálogo Seleccionar objetos para buscar y seleccionar un objeto disponible, en función del Tipo de acción de auditoría especificado.

    Nombre de la entidad

    La cuenta por la que se va filtrar la auditoría para el objeto que se va a auditar.

    Puntos suspensivos (...)

    Abre el cuadro de diálogo Seleccionar objetos para buscar y seleccionar un objeto disponible, en función del Nombre de objeto especificado.

  4. Cuando termine de elegir las opciones, seleccione Aceptar.

Uso de Transact-SQL

Creación de una auditoría de servidor

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Pegue el ejemplo siguiente en la ventana de consulta y haga clic en Ejecutar.

    USE master;
    GO
    
    -- Create the server audit.
    CREATE SERVER AUDIT Payroll_Security_Audit TO FILE (FILEPATH = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA');
    GO
    
    -- Enable the server audit.
    ALTER SERVER AUDIT Payroll_Security_Audit
    WITH (STATE = ON);
    

Cree una especificación de auditoría de nivel de base de datos

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Pegue el ejemplo siguiente en la ventana de consulta y haga clic en Ejecutar. En el ejemplo siguiente se crea una especificación de auditoría de servidor denominada Audit_Pay_Tables. Audita las instrucciones SELECT e INSERT del usuario dbo de la tabla HumanResources.EmployeePayHistory, en función de la auditoría de servidor definida en la sección anterior.

    USE AdventureWorks2022;
    GO
    
    -- Create the database audit specification.
    CREATE DATABASE AUDIT SPECIFICATION Audit_Pay_Tables
    FOR SERVER AUDIT Payroll_Security_Audit ADD (
        SELECT, INSERT ON HumanResources.EmployeePayHistory BY dbo
    )
    WITH (STATE = ON);
    GO