CREATE SERVER AUDIT (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Создает объект аудита сервера с помощью компонента аудита SQL Server. Дополнительные сведения см. в статье Аудит SQL Server (ядро СУБД).
Соглашения о синтаксисе Transact-SQL
Синтаксис
CREATE SERVER AUDIT audit_name
{
TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR }
[ 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 ]
[ , OPERATOR_AUDIT = { ON | OFF } ]
}
<predicate_expression> ::=
{
[ NOT ] <predicate_factor>
[ { AND | OR } [ NOT ] { <predicate_factor> } ]
[ , ...n ]
}
<predicate_factor>::=
event_field_name { = | < > | != | > | >= | < | <= | LIKE } { number | ' string ' }
Аргументы
TO { FILE | APPLICATION_LOG | SECURITY_LOG | URL-адрес | EXTERNAL_MONITOR }
Определяет расположение целевого объекта аудита. Возможными параметрами являются двоичный файл, журнал приложений Windows или журнал безопасности Windows. SQL Server не может записывать данные в журнал Безопасность Windows без настройки дополнительных параметров в Windows. Дополнительные сведения см. в разделе "Запись событий аудита SQL Server" в журнал безопасности.
Целевой URL
объект не поддерживается для SQL Server.
Внимание
В Управляемом экземпляре SQL Azure компонент аудита SQL выполняется на уровне сервера. Возможны только расположения URL
или EXTERNAL_MONITOR
.
FILEPATH = "os_file_path"
Путь к журналу аудита. Имя файла формируется на основе имени аудита и его идентификатора GUID. Если этот путь недопустим, аудит не создается.
FILEPATH
Целевой объект не поддерживается для Управляемый экземпляр SQL Azure. Вместо этого необходимо использовать PATH
.
MAXSIZE = max_size
Задает максимальный размер, до которого может увеличиваться файл аудита. Значение max_size должно быть целым числом, за которым следует МБ, ГБ, ТБ или UNLIMITED
. Минимальный размер для max_size составляет 2 МБ, а максимальный — 2 147 483 647 ТБ. При UNLIMITED
указании файл растет до тех пор, пока диск не будет заполнен. (0
также указывает UNLIMITED
.) При указании значения меньше 2 МБ возникает ошибка MSG_MAXSIZE_TOO_SMALL
. Значение по умолчанию — UNLIMITED
.
MAXSIZE
Целевой объект не поддерживается для Управляемый экземпляр SQL Azure.
MAX_ROLLOVER_FILES = { целое число | НЕОГРАНИЧЕННЫЙ }
Указывает максимальное количество файлов, хранимых в файловой системе помимо текущего. Значение MAX_ROLLOVER_FILES
должно быть целым числом или UNLIMITED
. Значение по умолчанию — UNLIMITED
. Этот параметр вычисляется всякий раз, когда аудит перезапускается (что может произойти, когда экземпляр ядро СУБД перезапускается или когда аудит отключен, а затем снова) или когда новый файл необходим, так как 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_ROLLOVER_FILES
не поддерживается для Управляемый экземпляр SQL Azure.
MAX_FILES = целое число
Область применения: SQL Server 2012 (11.x) и более поздних версий.
Задает максимальное число файлов аудита, которые могут быть созданы. Не выполняет откат к первому файлу при достижении предела. MAX_FILES
Когда ограничение достигнуто, любое действие, вызывающее создание дополнительных событий аудита, завершается ошибкой.
RESERVE_DISK_SPACE = { ON | OFF }
Этот параметр предварительно выделяет файл на диске MAXSIZE
в значение. Оно применяется только в том случае, если MAXSIZE
оно не равно UNLIMITED
. Значение по умолчанию — OFF
.
RESERVE_DISK_SPACE
Целевой объект не поддерживается для Управляемый экземпляр SQL Azure.
QUEUE_DELAY = целое число
Определяет задержку в миллисекундах, после которой продолжается выполнение действий аудита. Значение 0 соответствует синхронной доставке. Минимальное значение задержки запроса с набором — 1000
(1 секунда), которое является значением по умолчанию. Максимальное значение — 2147483647
2 147 483,647 секунд или 24 дня, 20 часов, 31 минуты, 23,647 секунды. Указание недопустимого числа вызывает ошибку MSG_INVALID_QUEUE_DELAY
.
ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }
Указывает, должен ли экземпляр записывать в целевой объект ошибку, продолжить или остановить SQL Server, если целевой объект не может записать в журнал аудита. Значение по умолчанию — CONTINUE
.
Продолжить
Операции SQL Server продолжаются. Записи аудита не сохраняются. Аудит продолжает попытки регистрации событий и возобновляется после устранения причины сбоя. Выбор варианта "Продолжить" разрешает непроверенные действия, которые могут нарушать политики безопасности. Используйте этот параметр, если продолжить работу ядро СУБД важнее, чем обслуживание полного аудита.
SHUTDOWN
Принудительно завершает работу экземпляра SQL Server, если SQL Server не может записывать данные в целевой объект аудита по какой-либо причине. Имя входа, выполняющее инструкцию CREATE SERVER AUDIT
, должно иметь SHUTDOWN
разрешение в SQL Server. Поведение завершения работы сохраняется даже в том случае, если имя входа, выполняющее инструкцию, позднее отменяет разрешение SHUTDOWN
. Если у пользователя нет этого разрешения, инструкция завершается ошибкой и аудит не создается. Используйте этот параметр, когда сбой аудита может нанести ущерб безопасности или целостности системы. Дополнительные сведения см. в разделе SHUTDOWN.
FAIL_OPERATION
Область применения: SQL Server 2012 (11.x) и более поздних версий.
Действия с базой данных завершаются ошибкой, если они вызывают события аудита. Действия, которые не приводят к продолжению аудита событий, но аудит событий не может произойти. Аудит продолжает попытки регистрации событий и возобновляется после устранения причины сбоя. Используйте этот параметр при сохранении полного аудита, чем полный доступ к ядро СУБД.
AUDIT_GUID = uniqueidentifier
Чтобы поддерживать такие сценарии, как зеркальное отображение базы данных, аудиту необходим конкретный идентификатор GUID, который совпадает с идентификатором GUID, найденным в зеркальной базе данных. Guid нельзя изменить после создания аудита.
OPERATOR_AUDIT
Применяется только к: Управляемый экземпляр SQL Azure.
Указывает, фиксирует ли аудит операции инженеров поддержки Майкрософт, когда им нужно получить доступ к серверу во время запроса на поддержку.
predicate_expression
Применимо: SQL Server 2012 (11.x) и более поздних версий.
Задает выражение предиката, используемое для определения необходимости обработки события. Выражения предиката ограничены 3000 символами, ограничивающими строковые аргументы.
event_field_name
Применимо: SQL Server 2012 (11.x) и более поздних версий.
Имя поля события, определяющего источник предиката. Поля аудита описаны в разделе sys.fn_get_audit_file (Transact-SQL). Фильтровать можно все поля, за исключением file_name
, audit_file_offset
и event_time
.
Примечание.
action_id
Хотя поля имеют class_type
тип varchar, sys.fn_get_audit_file
их можно использовать только с числами, если они являются источником предиката для фильтрации. Чтобы получить список значений для использования с class_type
, выполните следующий запрос:
SELECT spt.[name], spt.[number] FROM [master].[dbo].[spt_values] spt WHERE spt.[type] = N'EOD' ORDER BY spt.[name];
number
Применимо: SQL Server 2012 (11.x) и более поздних версий.
Любой числовой тип, включая десятичный. Ограничения: недостаток доступной физической памяти или слишком большое число, которое невозможно представить 64-разрядным целым.
'string'
Применимо: SQL Server 2012 (11.x) и более поздних версий.
Для предикатного сравнения требуется строка в Юникоде или ANSI. Для функций предикатного сравнения не выполняется неявное преобразование строкового типа. Передача неверного типа приводит к ошибке.
Замечания
При создании аудита сервера он находится в отключенном состоянии.
Оператор CREATE SERVER AUDIT
находится в области транзакции. Если выполняется откат транзакции, происходит также откат этой инструкции.
Разрешения
Чтобы создать, изменить или удалить аудит сервера, субъекты требуют ALTER ANY SERVER AUDIT
разрешения или CONTROL SERVER
разрешения.
При сохранении сведений аудита в файл, чтобы предотвратить изменение, ограничьте доступ к расположению файла.
Примеры
А. Создание аудита сервера с целевым объектом файла
В следующем примере создается аудит сервера с именем HIPAA_Audit
, не имеющий параметров, для которого целевым является двоичный файл.
CREATE SERVER AUDIT HIPAA_Audit
TO FILE ( FILEPATH ='\\SQLPROD_1\Audit\' );
B. Создание аудита сервера с целевым объектом журнала приложений Windows с параметрами
В следующем примере создается аудит сервера с именем HIPAA_Audit
и журналом приложений Windows в качестве цели. Очередь записывается каждую секунду и завершает работу подсистемы SQL Server при сбое.
CREATE SERVER AUDIT HIPAA_Audit
TO APPLICATION_LOG
WITH ( QUEUE_DELAY = 1000, ON_FAILURE = SHUTDOWN);
C. Создание аудита сервера, содержащего предложение 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 (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)
- sys.dm_audit_class_type_map (Transact-SQL)
- Создание аудита сервера и спецификации аудита сервера