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 ]
}
Аргументы
audit_specification_name
Имя спецификации аудита.
audit_name
Имя аудита, к которому применяется эта спецификация.
audit_action_specification
Спецификация действий для защищаемых объектов субъектами, которые должны быть записаны в аудите.
action
Имя одного или нескольких действий аудита на уровне базы данных. Список действий аудита см. в разделе Действия и группы действий подсистемы аудита SQL Server.
audit_action_group_name
Имя одной или нескольких групп проверяемых действий на уровне базы данных. Список групп действий аудита см. в разделе Действия и группы действий подсистемы аудита SQL Server.
class
Имя класса (если применимо) для защищаемого объекта.
securable
Таблица, представление или другой защищаемый объект в базе данных, к которой применяется действие аудита или группа действий аудита. Дополнительные сведения см. в статье Securables.
principal
Имя субъекта базы данных, к которому применяется действие аудита или группа действий аудита. Для аудита всех субъектов базы данных используйте субъект общедоступной базы данных. Дополнительные сведения см. в разделе Субъекты (ядро СУБД).
WITH (STATE = {ON | OFF})
Включает или отключает сбор записей для этой спецификации аудита.
Замечания
Спецификации аудита базы данных являются незащищаемыми объектами, которые находятся в определенной базе данных. После создания спецификация аудита базы данных находится в отключенном состоянии.
Разрешения
Пользователи, имеющие разрешение ALTER ANY DATABASE AUDIT
, могут создавать спецификации аудита базы данных и привязывать их к любому аудиту.
После создания спецификации аудита базы данных пользователи с разрешением CONTROL SERVER
или учетной записью sysadmin
могут просмотреть ее.
Примеры
Примеры кода Transact-SQL в этой статье используют AdventureWorks2022
базу данных или AdventureWorksDW2022
пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества Microsoft SQL Server.
А. Аудит SELECT и INSERT в таблице для любого субъекта базы данных
В следующем примере создается вызываемый Payroll_Security_Audit
аудит сервера, а затем спецификация аудита базы данных, которая называется Payroll_Security_Audit
SELECT
аудитом и INSERT
инструкциями любого члена роли общедоступной базы данных для HumanResources.EmployeePayHistory
таблицы. Каждый пользователь проверяется, так как каждый пользователь всегда входит в общедоступную роль.
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. Аудит любых изменений данных для всех объектов в схеме для определенной роли базы данных
В следующем примере создается вызываемый DataModification_Security_Audit
аудит сервера, а затем спецификация аудита базы данных, которая называется Audit_Data_Modification_On_All_Sales_Tables
аудитом INSERT
UPDATE
и DELETE
операторами пользователей в новой роли SalesUK
базы данных для всех объектов в схемеSales
.
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 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)
Представления каталога и динамические административные представления:
- 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)
Связанный контент
- Создание аудита сервера и спецификации аудита сервера
- 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)