Comparteix a través de


CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Crea un objeto de especificación de auditoría de base de datos mediante la característica SQL Server Audit. Para más información, consulte SQL Server Audit (motor de base de datos).

Convenciones de sintaxis de Transact-SQL

Sintaxis

CREATE DATABASE AUDIT SPECIFICATION audit_specification_name
{
    FOR SERVER AUDIT audit_name
        [ ADD (
            { <audit_action_specification> | audit_action_group_name }
            [ , ...n ] )
        ]
        [ WITH ( STATE = { ON | OFF } ) ]
}
[ ; ]
<audit_action_specification>::=
{
    action [ , ...n ] ON [class::]securable BY principal [ , ...n ]
}

Argumentos

audit_specification_name

Nombre de la especificación de auditoría.

audit_name

Nombre de la auditoría a la que se aplica esta especificación.

audit_action_specification

Especificación de acciones sobre elementos protegibles por entidades de seguridad que se deben registrar en la auditoría.

action

Nombre de una o varias acciones auditables de nivel de base de datos. Para ver una lista de acciones de auditoría, vea Grupos de acciones y acciones de SQL Server Audit.

audit_action_group_name

Nombre de uno o varios grupos de acciones auditables de nivel de base de datos. Para ver una lista de grupos de acciones de auditoría, vea Grupos de acciones y acciones de SQL Server Audit.

class

Nombre de clase (si procede) en el elemento protegible.

securable

Tabla, vista u otro objeto protegible en la base de datos en la que se va a aplicar la acción de auditoría o el grupo de acciones de auditoría. Para más información, consulte Securables.

principal

Nombre de la entidad de seguridad de base de datos en la que se va a aplicar la acción de auditoría o el grupo de acciones de auditoría. Para auditar todas las entidades de seguridad de base de datos, use la entidad de seguridad de base de datos pública . Para más información, vea Entidades de seguridad (Motor de base de datos).

WITH ( STATE = { ON | OFF } )

Habilita o deshabilita la recopilación de registros por parte de la auditoría para esta especificación de auditoría.

Observaciones

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.

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, los usuarios con el CONTROL SERVER permiso o la sysadmin cuenta pueden verlo.

Ejemplos

Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022 o AdventureWorksDW2022, que se pueden descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.

A Operaciones SELECT e INSERT de auditoría en una tabla para cualquier entidad de seguridad de base de datos

En el ejemplo siguiente se crea una auditoría de servidor denominada Payroll_Security_Audit y, a continuación, una especificación de auditoría de base de datos denominada Payroll_Security_Audit que audita SELECT e INSERT instrucciones de cualquier miembro del rol de base de datos pública , para la HumanResources.EmployeePayHistory tabla. Cada usuario se audita, ya que cada usuario siempre es miembro del rol público .

USE master;
GO

-- Create the server audit.
CREATE SERVER AUDIT Payroll_Security_Audit
TO FILE (FILEPATH = 'D:\SQLAudit\'); -- make sure this path exists
GO

-- Enable the server audit.
ALTER SERVER AUDIT Payroll_Security_Audit
WITH (STATE = ON);
GO

-- Move to the target database.
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 PUBLIC
)
WITH (STATE = ON);
GO

B. Auditar cualquier modificación de datos en todos los objetos de un esquema para un rol de base de datos específico

En el ejemplo siguiente se crea una auditoría de servidor denominada DataModification_Security_Audit y, a continuación, una especificación de auditoría de base de datos denominada Audit_Data_Modification_On_All_Sales_Tables que audita INSERTlas instrucciones , UPDATEy DELETE por los usuarios en un nuevo rol SalesUKde base de datos , para todos los objetos del Sales esquema.

USE master;
GO

-- Create the server audit.
-- Change the path to a path that the SQLServer Service has access to.
CREATE SERVER AUDIT DataModification_Security_Audit
TO FILE (FILEPATH = 'D:\SQLAudit\'); -- make sure this path exists
GO

-- Enable the server audit.
ALTER SERVER AUDIT DataModification_Security_Audit
WITH (STATE = ON);
GO

-- Move to the target database.
USE AdventureWorks2022;
GO

CREATE ROLE SalesUK
GO

-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION Audit_Data_Modification_On_All_Sales_Tables
FOR SERVER AUDIT DataModification_Security_Audit ADD (
    INSERT, UPDATE, DELETE ON SCHEMA::Sales BY SalesUK
)
WITH (STATE = ON);
GO

Especificaciones de auditoría de servidor:

Especificaciones de auditoría de base de datos:

Vistas de catálogo y DMV: