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 INSERT
las instrucciones , UPDATE
y DELETE
por los usuarios en un nuevo rol SalesUK
de 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
Tareas relacionadas
Especificaciones de auditoría de servidor:
- CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
- ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
- DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
Especificaciones de auditoría de base de datos:
- CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
- ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
- DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
Vistas de catálogo y DMV:
- sys.server_audits (Transact-SQL)
- sys.server_file_audits (Transact-SQL)
- sys.server_audit_specifications (Transact-SQL)
- sys.server_audit_specification_details (Transact-SQL)
- sys.database_audit_specifications (Transact-SQL)
- sys.database_audit_specification_details (Transact-SQL)
Contenido relacionado
- Crear una auditoría de servidor y una especificación de auditoría de servidor
- CREATE SERVER AUDIT (Transact-SQL)
- ALTER SERVER AUDIT (Transact-SQL)
- DROP SERVER AUDIT (Transact-SQL)
- ALTER AUTHORIZATION (Transact-SQL)
- sys.fn_get_audit_file (Transact-SQL)
- sys.dm_server_audit_status (Transact-SQL)
- sys.dm_audit_actions (Transact-SQL)