ALTER SERVER AUDIT (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

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

Синтаксис

ALTER SERVER AUDIT audit_name
{
    [ TO { { FILE ( <file_options> [ , ...n ] ) } | APPLICATION_LOG | SECURITY_LOG } | URL ]
    [ WITH ( <audit_options> [ , ...n ] ) ]
    [ WHERE <predicate_expression> ]
}
| REMOVE WHERE
| MODIFY NAME = new_audit_name
[ ; ]

<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 }
    | STATE = = { ON | OFF }
}

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

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

Аргументы

В { ФАЙЛ | APPLICATION_LOG | БЕЗОПАСНОСТЬ | URL }

Определяет расположение целевого объекта аудита. Возможные режимы — двоичный файл, журнал событий приложений Windows или журнал безопасности Windows.

Внимание

В Управляемый экземпляр SQL Azure аудит SQL работает на уровне сервера и сохраняет .xel файлы в Хранилище BLOB-объектов Azure.

FILEPATH = "os_file_path"

Путь следа аудита. Имя файла формируется на основе имени аудита и его идентификатора GUID.

MAXSIZE = max_size

Задает максимальный размер, до которого может увеличиваться файл аудита. Значение max_size должно быть целым числом, за которым следуют MB, GB, TBили UNLIMITED. Минимальный размер, который вы можете указать для max_size — 2 MB , а максимальный — 2 147 483 647 TB. Когда UNLIMITED задано задание, файл увеличивается до тех пор, пока диск не заполнится. Указание значения меньше 2 МБ увеличивает ошибку MSG_MAXSIZE_TOO_SMALL . Значение по умолчанию — UNLIMITED.

MAX_ROLLOVER_FILES = целое число | НЕОГРАНИЧЕННО

Задает максимальное число файлов, которые хранятся в файловой системе. При установке MAX_ROLLOVER_FILES = 0, не накладывается ограничение на количество созданных файлов ролловера. Значение по умолчанию — 0. Максимальное число файлов, которое можно указать, составляет 2 147 483 647.

MAX_FILES = целое число

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

RESERVE_DISK_SPACE = { ВКЛ | ВЫКЛ }

Этот параметр предварительно выделяет файл на диске MAXSIZE в значение. Применяется только если MAXSIZE не равен UNLIMITED. Значение по умолчанию — OFF.

QUEUE_DELAY = целое число

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

ON_FAILURE = { ПРОДОЛЖИТЬ | ОТКЛЮЧЕНИЕ | FAIL_OPERATION }

Указывает, должен ли экземпляр, записывающий в цель, провалиться, продолжать или остановиться, если SQL Server не может записать в журнал аудита.

Продолжить

Операции SQL Server продолжаются. Записи аудита не сохраняются. Аудит продолжает попытки регистрации событий и возобновляется после устранения причины сбоя. Выбор варианта "Продолжить" разрешает непроверенные действия, которые могут нарушать политики безопасности. Используйте этот параметр, если продолжить работу ядро СУБД важнее, чем обслуживание полного аудита.

SHUTDOWN

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

FAIL_OPERATION

Действия с базой данных завершаются ошибкой, если они вызывают события аудита. Действия, не вызывающие аудируемых событий, могут продолжаться, но не могут происходить аудируемых событий. Аудит продолжает попытки регистрации событий и возобновляется после устранения причины сбоя. Используйте этот параметр при сохранении полного аудита, чем полный доступ к ядро СУБД.

СОСТОЯНИЕ = { НА | OFF }

Включает или отключает аудит из сбора записей. Изменение состояния текущего аудита (с ON к OFF) создаёт запись о том, что аудит был остановлен, принципал, который остановил аудит, и время остановки аудита.

ИЗМЕНИТЬ ИМЯ = new_audit_name

Изменяет имя аудита. Нельзя использовать с другими вариантами.

predicate_expression

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

event_field_name

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

number

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

'string'

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

Замечания

Вы должны указать хотя бы одно из TO, WITHMODIFY NAME , или при вызове ALTER AUDIT.

Чтобы внести изменения в аудит, для состояния аудита необходимо установить параметр OFF. Если ALTER AUDIT он запускается при включении аудита с любыми опциями, кроме STATE = OFF, вы получаете MSG_NEED_AUDIT_DISABLED сообщение об ошибке.

Можно добавлять, изменять или удалять спецификации аудита без остановки аудита.

Вы не можете изменить GUID аудита после того, как аудит создан.

ALTER SERVER AUDIT Оператор не может использоваться внутри пользовательской транзакции.

Разрешения

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

Примеры

А. Изменение имени аудита сервера

В данном примере показано изменение имени аудита базы данных с HIPAA_Audit на HIPAA_Audit_Old.

USE master;
GO

ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT HIPAA_Audit
MODIFY NAME = HIPAA_Audit_Old;
GO

ALTER SERVER AUDIT HIPAA_Audit_Old
WITH (STATE = ON);
GO

B. Изменить цель аудита сервера

В следующем примере аудит сервера с именем HIPAA_Audit изменяется на целевой файл.

USE master;
GO

ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT HIPAA_Audit TO FILE (
    FILEPATH = '\\SQLPROD_1\Audit\',
    MAXSIZE = 1000 MB,
    RESERVE_DISK_SPACE = OFF
)
WITH (
    QUEUE_DELAY = 1000,
    ON_FAILURE = CONTINUE
);
GO

ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = ON);
GO

В. Изменение положения WHERE аудита сервера

Следующий пример изменяет оговорку where , созданную в примере C из CREATE SERVER AUDIT. Новое предложение WHERE отбирает определяемые пользователем события с идентификатором 27.

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
    WHERE user_defined_event_id = 27;
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = ON);
GO

D. Удалить пункт WHERE

Следующий пример удаляет WHERE выражение предиката предложения.

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
REMOVE WHERE;
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = ON);
GO

Е. Переименование серверного аудита

В данном примере показано изменение имени аудита сервера с FilterForSensitiveData на AuditDataAccess.

ALTER SERVER AUDIT [FilterForSensitiveData]
WITH (STATE = OFF);
GO

ALTER SERVER AUDIT [FilterForSensitiveData]
MODIFY NAME = AuditDataAccess;
GO

ALTER SERVER AUDIT [AuditDataAccess]
WITH (STATE = ON);
GO

Transact-SQL ссылка