CREATE SERVER AUDIT (Transact-SQL)

Создает объект аудита сервера с помощью компонента аудита SQL Server. Дополнительные сведения см. в разделе Подсистема аудита SQL Server (Database Engine).

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

CREATE SERVER AUDIT audit_name
{
    TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG }
    [ WITH ( <audit_options> [ , ...n ] ) ] 
    [ WHERE <predicate_expression> ]
}
[ ; ]

<file_options>::=
{
        FILEPATH = 'os_file_path'
    [ , MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED } ]
    [ , { MAX_ROLLOVER_FILES = { integer | UNLIMITED } } | { MAX_FILES = integer } ]
    [ , RESERVE_DISK_SPACE = { ON | OFF } ] 
}

<audit_options>::=
{
    [   QUEUE_DELAY = integer ]
    [ , ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION } ]
    [ , AUDIT_GUID = uniqueidentifier ]
}

<predicate_expression>::=
{
    [NOT ] <predicate_factor> 
    [ { AND | OR } [NOT ] { <predicate_factor> } ] 
    [,...n ]
}

<predicate_factor>::= 
    event_field_name { = | < > | ! = | > | > = | < | < = } { number | ' string ' }

Аргументы

  • TO { FILE | APPLICATION_LOG | SECURITY_LOG }
    Определяет расположение целевого объекта аудита. Возможными параметрами являются двоичный файл, журнал приложений Windows или журнал безопасности Windows. SQL Server не может выполнить запись в журнал безопасности Windows без настройки дополнительных параметров Windows. Дополнительные сведения см. в разделе Запись событий подсистемы аудита SQL Server в журнал безопасности.

  • FILEPATH ='os_file_path'
    Путь к журналу аудита. Имя файла формируется на основе имени аудита и его идентификатора GUID.

  • MAXSIZE = { max_size }
    Задает максимальный размер, до которого может увеличиваться файл аудита. Значение max_size должно быть целым числом, за которым следует MB, GB, TB или UNLIMITED. Минимальный размер для max_size составляет 2 МБ, а максимальный — 2 147 483 647 ТБ. Если указано значение UNLIMITED, то увеличение размера файла будет происходить до заполнения диска. (0 также указывает на значение UNLIMITED.) Если указано значение менее 2 МБ, возникнет ошибка MSG_MAXSIZE_TOO_SMALL. Значение по умолчанию — UNLIMITED.

  • MAX_ROLLOVER_FILES ={ integer | UNLIMITED }
    Указывает максимальное количество файлов, хранимых в файловой системе помимо текущего. Значением MAX_ROLLOVER_FILES должно быть целое число или UNLIMITED. Значение по умолчанию — UNLIMITED. Этот параметр проверяется при каждом перезапуске аудита (это может происходить во время перезапуска экземпляра компонента Компонент Database Engine или после выключения и повторного включения аудита) или когда становится необходим новый файл, поскольку достигается предел MAXSIZE. Если при вычислении параметра MAX_ROLLOVER_FILES количество файлов превышает значение MAX_ROLLOVER_FILES, удаляется самый старый файл. Поэтому если параметр MAX_ROLLOVER_FILES имеет значение 0, то каждый раз, когда проверяется значение MAX_ROLLOVER_FILES, создается новый файл. При проверке значения MAX_ROLLOVER_FILES автоматически удаляется только один файл, поэтому если значение параметра MAX_ROLLOVER_FILES уменьшается, то количество файлов не будет сокращаться, если старые файлы не удалить вручную. Максимальное число файлов, которое можно указать, составляет 2 147 483 647.

  • MAX_FILES =integer

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

    Задает максимальное число файлов аудита, которые могут быть созданы. При достижении предела переключение на первый файл не производится. При достижении предела MAX_FILES любое действие, которое вызывает создание дополнительных событий аудита, завершится ошибкой.

  • RESERVE_DISK_SPACE = { ON | OFF }
    Этот параметр заранее размещает на диске файл в соответствии со значением MAXSIZE. Применяется, только если MAXSIZE не имеет значения UNLIMITED. Значение по умолчанию — OFF.

  • QUEUE_DELAY =integer
    Определяет задержку в миллисекундах, после которой продолжается выполнение действий аудита. Значение 0 соответствует синхронной доставке. Минимальное значение задаваемой задержки запроса составляет 1000 (1 секунда), и это значение используется по умолчанию. Максимальное значение составляет 2 147 483 647 (2 147 483,647 секунд или 24 дня, 20 часов, 31 минута и 23,647 секунд). Если указано недопустимое значение, произойдет ошибка MSG_INVALID_QUEUE_DELAY.

  • ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }
    Указывает, будет ли экземпляр, выполняющий запись в целевой объект, вызывать ошибку, продолжать работу или останавливать SQL Server, если целевой объект не может выполнить запись в журнал аудита. Значение по умолчанию — CONTINUE.

    • CONTINUE
      Работа SQL Server продолжается. Записи аудита не сохраняются. Аудит продолжает попытки регистрации событий и будет возобновлен, если причина сбоя будет устранена. Выбрав вариант продолжения, можно разрешить непроверенные действия, которые могут нарушать политики безопасности. Используйте этот параметр, когда продолжение операции компонента Компонент Database Engine является более важным, чем сохранение полного аудита.

    • SHUTDOWN
      Приводит к остановке сервера, когда экземпляр сервера, который выполняет запись по назначению, не может записать данные в цель аудита. Имя входа, выполняющее эту команду, должно иметь разрешение SHUTDOWN. Если учетная запись не имеет этого разрешения, то функция завершится неуспешно и будет выдано сообщение об ошибке. Отсутствуют события аудита. Используйте этот параметр, когда сбой аудита может нанести ущерб безопасности или целостности системы.

    • FAIL_OPERATION
      Действия с базой данных завершаются ошибкой, если они вызывают события аудита. Действия, которые не вызывают события аудита, можно продолжить, но события аудита возникать не будут. Аудит продолжает попытки регистрации событий и будет возобновлен, если причина сбоя будет устранена. Используйте этот параметр, если обеспечение полного аудита более важно, чем полный доступ к компоненту Компонент Database Engine.

  • AUDIT_GUID =uniqueidentifier
    Чтобы поддерживать такие сценарии, как зеркальное отображение базы данных, аудиту необходим конкретный идентификатор GUID, который совпадает с идентификатором GUID, найденным в зеркальной базе данных. Этот идентификатор GUID не может быть изменен после создания аудита.

  • predicate_expression

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

    Задает выражение предиката, используемое для определения необходимости обработки события. Выражения предиката ограничены 3000 символами, что является пределом для строковых аргументов.

  • event_field_name

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

    Имя поля события, которое идентифицирует источник предиката. Поля аудита описаны в разделе sys.fn_get_audit_file (Transact-SQL). Аудиту могут быть подвержены все поля, за исключением file_name и audit_file_offset.

  • номер

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

    Любой числовой тип, включая decimal. Ограничения: недостаток доступной физической памяти или слишком большое число, которое невозможно представить 64-разрядным целым.

  • ' string '

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

    Для предикатного сравнения требуется строка в Юникоде или ANSI. Для функций предикатного сравнения не выполняется неявное преобразование строкового типа. Передача неверного типа приводит к ошибке.

Замечания

После создания аудит сервера находится в отключенном состоянии.

Инструкция CREATE SERVER AUDIT относится к области транзакции. Если выполняется откат транзакции, происходит также откат этой инструкции.

Разрешения

Чтобы создать, изменить или удалить аудит сервера, участникам требуется разрешение ALTER ANY SERVER AUDIT или CONTROL SERVER.

Если данные аудита сохраняются в файл, то для предотвращения подмены можно ограничить доступ к файлу.

Примеры

А.Создание аудита сервера с целевым файлом

В следующем примере создается аудит сервера с именем HIPPA_Audit, не имеющий параметров, для которого целевым является двоичный файл.

CREATE SERVER AUDIT HIPAA_Audit
    TO FILE ( FILEPATH ='\\SQLPROD_1\Audit\' );

Б.Создание аудита сервера для журнала приложений Windows с параметрами

В следующем примере создается аудит сервера с именем HIPPA_Audit и журналом приложений Windows в качестве цели. Очередь записывается каждую секунду и останавливает ядро SQL Server при ошибке.

CREATE SERVER AUDIT HIPAA_Audit
    TO APPLICATION_LOG
    WITH ( QUEUE_DELAY = 1000,  ON_FAILURE = SHUTDOWN);

В.Создание аудита сервера, содержащего предложение WHERE

В следующем примере создается база данных, схема и две таблицы. Таблица с именем DataSchema.SensitiveData будет содержать конфиденциальные данные, и доступ к ней должен регистрироваться в аудите. Таблица с именем DataSchema.GeneralData не содержит конфиденциальных данных. Спецификация аудита базы данных осуществляет аудит доступа ко всем объектам в схеме DataSchema. Аудит сервера создается с предложением WHERE, которое ограничивает аудит сервера таблицей SensitiveData. Аудит сервера предполагает наличие папки аудита C:\SQLAudit.

CREATE DATABASE TestDB;
GO
USE TestDB;
GO
CREATE SCHEMA DataSchema;
GO
CREATE TABLE DataSchema.GeneralData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);
GO
CREATE TABLE DataSchema.SensitiveData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);
GO
-- Create the server audit in the master database
USE master;
GO
CREATE SERVER AUDIT AuditDataAccess
    TO FILE ( FILEPATH ='C:\SQLAudit\' )
    WHERE object_name = 'SensitiveData' ;
GO
ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON);
GO
-- Create the database audit specification in the TestDB database
USE TestDB;
GO
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]
FOR SERVER AUDIT [AuditDataAccess] 
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])
WITH (STATE = ON);
GO
-- Trigger the audit event by selecting from tables
SELECT ID, DataField FROM DataSchema.GeneralData;
SELECT ID, DataField FROM DataSchema.SensitiveData;
GO
-- Check the audit for the filtered content
SELECT * FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit',default,default);
GO

См. также

Справочник

ALTER SERVER AUDIT (Transact-SQL)

DROP SERVER AUDIT (Transact-SQL)

CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)

ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)

DROP SERVER AUDIT SPECIFICATION (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_specification (Transact-SQL)

sys.database_audit_specification_details (Transact-SQL)

sys.dm_server_audit_status (Transact-SQL)

sys.dm_audit_actions (Transact-SQL)

sys.dm_audit_class_type_map (Transact-SQL)

Основные понятия

Создание аудита сервера и спецификации аудита сервера