Поделиться через


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 аудитом INSERTUPDATEи 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

Спецификации аудита сервера:

Спецификации аудита базы данных:

Представления каталога и динамические административные представления: