CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

Применимо к:SQL Server Управляемый экземпляр SQL Azure

Создает объект спецификации аудита базы данных с помощью компонента аудита SQL Server. Дополнительные сведения см. в статье Аудит SQL Server (ядро СУБД).

Соглашения о синтаксисе Transact-SQL

Синтаксис

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 ]  
}  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

audit_specification_name
Имя спецификации аудита.

audit_name
Имя аудита, к которому применяется эта спецификация.

audit_action_specification
Спецификация действий, выполняемых участниками над защищаемыми объектами, которые должны быть зарегистрированы в ходе аудита.

action
Имя одного или нескольких действий уровня базы данных, подлежащих аудиту. Список действий аудита см. в разделе Действия и группы действий подсистемы аудита SQL Server.

audit_action_group_name
Имя одной или нескольких групп действий уровня базы данных, подлежащих аудиту. Список групп действий аудита см. в разделе Действия и группы действий подсистемы аудита SQL Server.

class
Имя класса защищаемого объекта (если применимо).

securable
Таблица, представление или другой защищаемый объект в базе данных, к которой применяется действие аудита или группа действий аудита. Дополнительные сведения см. в статье Securables.

principal
Имя участника базы данных, к которому применяется действие аудита или группа действий аудита. Для аудита всех субъектов базы данных используйте субъект public. Дополнительные сведения см. в разделе Субъекты (ядро СУБД).

WITH (STATE = {ON | OFF})
Включает или отключает сбор записей для этой спецификации аудита.

Замечания

Спецификации аудита базы данных являются незащищаемыми объектами, которые находятся в определенной базе данных. После создания спецификация аудита базы данных находится в отключенном состоянии.

Разрешения

Пользователи, имеющие разрешение ALTER ANY DATABASE AUDIT, могут создавать спецификации аудита базы данных и привязывать их к любому аудиту.

После создания спецификации аудита базы данных ее могут просматривать пользователи с разрешением CONTROL SERVER или с учетной записью sysadmin.

Примеры

А. Аудит SELECT и INSERT в таблице для любого субъекта базы данных

В следующем примере создается аудит сервера с именем Payrole_Security_Audit, а затем — спецификация аудита базы данных с именем Payrole_Security_Audit, которая анализирует инструкции SELECT и INSERT, выполняемые любым участником с атрибутом public для роли базы данных в таблице HumanResources.EmployeePayHistory базы AdventureWorks2022. Это приводит к тому, что аудит выполняется для каждого пользователя, так как каждый пользователь всегда является участником с атрибутом public для роли.

USE master ;  
GO  
-- Create the server audit.  
CREATE SERVER AUDIT Payrole_Security_Audit  
    TO FILE ( FILEPATH =   
'D:\SQLAudit\' ) ;  -- make sure this path exists
GO  
-- Enable the server audit.  
ALTER SERVER AUDIT Payrole_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 Payrole_Security_Audit  
ADD (SELECT , INSERT  
     ON HumanResources.EmployeePayHistory BY public )  
WITH (STATE = ON) ;  
GO  

B. Аудит любой инструкции DML (INSERT, UPDATE или DELETE) для всех объектов в схеме sales для конкретной роли базы данных

В следующем примере создается аудит сервера с именем DataModification_Security_Audit, а затем — спецификация аудита базы данных с именем Audit_Data_Modification_On_All_Sales_Tables, которая анализирует инструкции INSERT, UPDATE и DELETE, выполняемые пользователями с новой ролью базы данных SalesUK для всех объектов схемы Sales в базе AdventureWorks2022.

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  

См. также

CREATE SERVER AUDIT (Transact-SQL)
ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER AUDIT (Transact-SQL)
CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
СПЕЦИФИКАЦИЯ ALTER SERVER AUDIT (Transact-SQL)
СПЕЦИФИКАЦИЯ АУДИТА DROP SERVER (Transact-SQL)
CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
sys.fn_get_audit_file (Transact-SQL)
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)
sys.dm_server_audit_status (Transact-SQL)
sys.dm_audit_actions (Transact-SQL)
Создание аудита сервера и спецификации аудита сервера