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)
Создание аудита сервера и спецификации аудита сервера