Подсистема аудита SQL Server (Database Engine)

Аудит экземпляра среды Компонент SQL Server Database Engine или отдельной базы данных включает в себя отслеживание и протоколирование событий, происходящих в компоненте Компонент Database Engine. Аудит среды SQL Server позволяет проводить аудит сервера, который может включать в себя спецификации аудита сервера для событий на уровне сервера, а также спецификации аудита базы данных для событий на уровне базы данных. События аудита могут записываться в журналы событий или файлы аудита.

В SQL Server доступно несколько уровней аудита, применение которых зависит от существующих требований или стандартов установки. Подсистема аудита SQL Server предоставляет средства и процессы, необходимые для включения, хранения и просмотра аудитов на различных объектах серверов и баз данных.

Группы действий аудита сервера можно записывать для всего экземпляра, а также группы действий аудита базы данных либо действия аудита базы данных для каждой базы данных. Событие аудита будет происходить каждый раз при обнаружении действия, подлежащего аудиту.

Аудит на уровне сервера поддерживается во всех выпусках SQL Server. Аудит на уровне базы банных доступен только в выпусках Enterprise Edition, Developer Edition и Evaluation Edition. Дополнительные сведения см. в разделе Возможности, поддерживаемые различными выпусками SQL Server 2012.

Компоненты подсистемы аудита SQL Server

Аудит — это сочетание в едином пакете нескольких элементов для определенной группы действий сервера или базы данных. Компоненты подсистемы аудита SQL Server совместно формируют выходные данные, называемые аудитом, аналогично тому, как определение отчета в сочетании с элементами графики и данных формирует отчет.

Подсистема аудита SQL Server использует расширенные события для создания аудита. Дополнительные сведения о расширенных событиях см. в разделе Расширенные события.

Подсистема аудита SQL Server

Объект Подсистема аудита SQL Server объединяет отдельные экземпляры действий или групп действий уровня сервера или базы данных, за которыми нужно проводить наблюдение. Аудит работает на уровне экземпляра SQL Server. В одном экземпляре SQL Server может существовать несколько аудитов.

При определении аудита задается место для вывода результатов. Оно называется назначением аудита. Аудит создается в отключенном состоянии и не выполняет автоматический аудит никаких действий. После включения аудита назначение аудита начинает получать от него данные.

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

Объект Спецификация аудита сервера принадлежит аудиту. На каждый аудит можно создать один объект спецификации аудита сервера, поскольку они оба создаются в области экземпляра SQL Server.

Спецификация аудита сервера собирает множество групп действий уровня сервера, вызываемых компонентом расширенных событий. В спецификацию аудита сервера можно включить группы действий аудита. Группы действий аудита — это стандартные группы действий, являющиеся атомарными событиями, происходящими в компоненте Компонент Database Engine. Эти действия передаются аудиту, который регистрирует их в целевом объекте.

Группы действий аудита уровня сервера описываются в разделе Действия и группы действий подсистемы аудита SQL Server.

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

Объект Спецификация аудита базы данных также принадлежит подсистеме аудита SQL Server. Для каждого аудита каждой базы данных SQL Server можно создать одну спецификацию аудита базы данных.

Спецификация аудита базы данных включает действия аудита уровня базы данных, вызываемые компонентом расширенных событий. В спецификацию аудита базы данных можно добавлять либо группы действий аудита, либо события аудита. События аудита — это атомарные действия, аудит которых может производиться ядром SQL Server. Группы действий аудита — это стандартные группы действий. Они расположены в области базы данных SQL Server. Эти действия передаются аудиту, который регистрирует их в целевом объекте. Не включайте объекты области сервера, например системные представления, в пользовательскую спецификацию аудита базы данных.

Группы действий аудита уровня базы данных описываются в разделе Действия и группы действий подсистемы аудита SQL Server.

Назначение

Результаты аудита отправляются цели, которая может быть файлом, журналом событий безопасности Windows или журналом событий приложений Windows. Журналы необходимо периодически просматривать и архивировать, чтобы у цели оставалось достаточно места для создания дополнительных записей.

Важное примечаниеВажно!

Любой прошедший проверку пользователь может осуществлять чтение и запись в журнале событий приложений. Для работы с журналом событий приложений необходимо меньше разрешений, чем для работы с журналом событий безопасности Windows; журнал событий приложений менее защищен, чем журнал событий безопасности Windows.

Для записи в журнал событий безопасности Windows необходимо добавить в политику Создание аудитов безопасности учетную запись службы SQL Server. По умолчанию в эту политику входят учетные записи «Локальная система», «Локальная служба» и «Сетевая служба». Этот параметр можно настроить с помощью оснастки политики безопасности (secpol.msc). Кроме того, политика безопасности Аудит доступа к объектам должна быть включена для регистрации как успешных, так и неуспешных действий. Этот параметр можно настроить с помощью оснастки политики безопасности (secpol.msc). В ОС Windows Vista и Windows Server 2008 можно проводить более детальную настройку создаваемых приложением политик из командной строки с помощью программы политики аудита (AuditPol.exe). Дополнительные сведения по включению функции записи в журнал безопасности Windows см. в разделе Запись событий подсистемы аудита SQL Server в журнал безопасности. Дополнительные сведения о программе Auditpol.exe можно найти в статье базы знаний номер 921469, Использование групповой политики для детальной настройки аудита безопасности. Журналы событий Windows являются глобальными для операционной системы Windows. Дополнительные сведения о журналах событий Windows см. в разделе Общие сведения о средстве просмотра событий. Если для аудита необходимы более точные разрешения, используйте назначение «двоичный файл».

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

  • Учетная запись службы SQL Server должна обладать разрешением на чтение и запись.

  • Администраторам аудита обычно требуется разрешение на чтение и запись. Здесь подразумевается, что администраторы аудита — это учетные записи Windows, предназначенные для администрирования файлов аудита, в том числе копирования их в другие общие папки, резервного копирования и других операций.

  • Агенты чтения аудита должны иметь разрешение только для чтения файлов аудита.

Даже если запись в файл выполняется компонентом Компонент Database Engine, другие пользователи Windows могут прочитать файл аудита, если имеют нужное разрешение. Компонент Компонент Database Engine не получает монопольную блокировку, запрещающую операции чтения.

Поскольку компонент Компонент Database Engine может получать доступ к файлу, то имена входа SQL Server, имеющие разрешение CONTROL SERVER, могут использовать компонент Компонент Database Engine для доступа к файлам аудита. Чтобы зарегистрировать пользователей, читающих файлы аудита, определите аудит в представлении master.sys.fn_get_audit_file. В результате будут записаны имена входа с разрешением CONTROL SERVER, которые получали доступ к файлу аудита через SQL Server.

Если администратор аудита скопирует файл в другое место (в целях архивирования или по другой причине), то список управления доступом к новому месту следует сократить до следующего набора разрешений:

  • администратор аудита — чтение и запись;

  • агент чтения аудита — только чтение.

Рекомендуется создавать отчеты аудита в отдельном экземпляре SQL Server, например в экземпляре SQL Server Express, к которому будут иметь доступ только администраторы аудита и агенты чтения аудита. Использование отдельного экземпляра компонента Компонент Database Engine для составления отчетов помогает предотвратить несанкционированный доступ пользователей к записям аудита.

Можно обеспечить дополнительную защиту от несанкционированного доступа путем шифрования папки, в которой хранится файл аудита, с применением шифрования диска Windows BitLocker или шифрованной файловой системы Windows (EFS).

Дополнительные сведения о записях аудита, записываемых в целевое назначение, см. в разделе Записи подсистемы аудита SQL Server.

Общие сведения об использовании подсистемы аудита SQL Server

Для определения аудита можно использовать среду Среда SQL Server Management Studio или Transact-SQL. После создания и включения аудита он начнет вести записи в целевое назначение.

Просматривать журналы событий Windows можно с помощью программы Средство просмотра событий в Windows. Для чтения целевых файлов можно использовать Средство просмотра журнала, среду Среда SQL Server Management Studio или функцию fn_read_audit_file.

Обычно процесс создания и использования аудита происходит следующим образом.

  1. Создайте аудит и определите цель.

  2. Создается либо спецификация аудита сервера, либо спецификация аудита базы данных, которая сопоставляет аудит. Включается спецификация аудита.

  3. Включите аудит.

  4. Считывание событий аудита можно осуществить с помощью оснастки Просмотр событий Windows, Средства просмотра журнала или функции fn_get_audit_file.

Дополнительные сведения см. в разделах Создание аудита сервера и спецификации аудита сервера и Создание спецификация аудита для сервера и базы данных.

Замечания

В случае ошибки при инициализации аудита сервер не будет запущен. В этом случае сервер может быть запущен, если в командную строку включить параметр –f.

Если ошибка аудита вызывает отключение сервера или не дает ему запуститься, поскольку для аудита был задан режим ON_FAILURE=SHUTDOWN, то в журнал будет записано событие MSG_AUDIT_FORCED_SHUTDOWN. Поскольку выключение происходит при первом возникновении этого события, это событие будет записано один раз. Это событие записывается после получения сообщения об ошибке, означающего, что аудит вызвал отключение. Администратор может обойти выключения, вызываемые аудитом, запустив SQL Server в однопользовательском режиме, используя флаг –m. При запуске в однопользовательском режиме будет произведено изменение настроек любого аудита, запускающегося в этом сеансе, для которого было задано условие ON_FAILURE=SHUTDOWN. Такие аудиты будут запускаться с условием ON_FAILURE=CONTINUE. Если службы SQL Server запущены с использованием флага –m, сообщение MSG_AUDIT_SHUTDOWN_BYPASSED будет занесено в журнал ошибок.

Дополнительные сведения о параметрах запуска службы см. в разделе Параметры запуска службы Database Engine.

Присоединение базы данных с определенным аудитом

При присоединении базы данных, имеющей спецификацию аудита с идентификатором GUID, который не существует на сервере, такая спецификация аудита получит состояние потерянная. Поскольку в экземпляре сервера не существует аудита с совпадающим идентификатором GUID, события аудита записываться не будут. Исправить эту ситуацию можно, используя команду ALTER DATABASE AUDIT SPECIFICATION для присоединения потерянной спецификации аудита к существующему аудиту сервера. Также можно использовать команду CREATE SERVER AUDIT для создания на сервере нового аудита с указанным идентификатором GUID.

Базу данных, для которой была задана спецификация аудита, можно присоединить к другому выпуску SQL Server, не поддерживающему подсистему аудита SQL Server, например SQL Server Express, но запись событий аудита производиться не будет.

Зеркальное отображение баз данных и подсистема аудита SQL Server

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

  • Чтобы спецификация аудита базы данных могла создавать записи аудита, на зеркальном сервере должен присутствовать аудит с тем же идентификатором GUID. Это можно настроить с помощью команды CREATE AUDIT WITH GUID=<GUID from source Server Audit>.

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

  • При использовании в качестве целей журналов событий Windows политика безопасности на компьютере, на котором расположен зеркальный сервер, должна разрешать учетной записи службы доступ к журналу событий безопасности или приложений.

Администраторы аудита

Члены предопределенной роли сервера sysadmin определены как пользователь dbo в каждой базе данных. Действия аудита администраторов выполняются как действия аудита пользователя dbo.

Создание аудита и работа с ним на Transact-SQL

Для реализации всех аспектов аудита среды SQL Server можно использовать инструкции DDL, представления каталогов и динамические административные представления и функции.

Инструкции языка определения данных DDL

Чтобы создать, изменить или удалить спецификацию аудита, можно использовать следующие инструкции DDL.

ALTER AUTHORIZATION

CREATE SERVER AUDIT

ALTER DATABASE AUDIT SPECIFICATION

CREATE SERVER AUDIT SPECIFICATION

ALTER SERVER AUDIT

DROP DATABASE AUDIT SPECIFICATION

ALTER SERVER AUDIT SPECIFICATION

DROP SERVER AUDIT

CREATE DATABASE AUDIT SPECIFICATION

DROP SERVER AUDIT SPECIFICATION

Динамические представления и функции

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

Динамические представления и функции

Описание

sys.dm_audit_actions

Возвращает строку для каждого действия аудита, которое может быть зарегистрировано в журнале аудита, и каждой группы действий аудита, которая может быть настроена в составе аудита SQL Server.

sys.dm_server_audit_status

Предоставляет сведения о текущем состоянии аудита.

sys.dm_audit_class_type_map

Возвращает таблицу, которая сопоставляет поле class_type в журнале аудита с полем class_desc в sys.dm_audit_actions.

fn_get_audit_file

Возвращает сведения из файла аудита, созданного аудитом сервера.

Представления каталога

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

Представления каталога

Описание

sys.database_ audit_specifications

Содержит сведения о спецификациях аудита базы данных в аудите SQL Server на экземпляре сервера.

sys.database_audit_specification_details

Содержит сведения о спецификациях аудита базы данных в аудите SQL Server на экземпляре сервера для всех баз данных.

sys.server_audits

Содержит по одной строке для каждого аудита SQL Server в экземпляре сервера.

sys.server_audit_specifications

Содержит сведения о спецификациях аудита сервера в подсистеме аудита SQL Server на экземпляре сервера.

sys.server_audit_specifications_details

Содержит данные о подробных сведениях (действиях) спецификации аудита сервера в аудите SQL Server экземпляра сервера.

sys.server_file_audits

Содержит расширенные сведения о типах аудита файлов в подсистеме аудита SQL Server на экземпляре сервера.

Разрешения

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

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

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

  • Членство в предопределенной роли сервера sysadmin.

  • разрешение CONTROL SERVER;

  • разрешение VIEW SERVER STATE;

  • разрешение ALTER ANY AUDIT;

  • разрешение VIEW AUDIT STATE (предоставляет участнику только доступ к представлению каталога sys.server_audits).

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

Дополнительные сведения о предоставлении прав и разрешений см. в разделе Инструкция GRANT (Transact-SQL).

ПредупреждениеВнимание!

Члены роли sysadmin могут изменять любой компонент аудита; члены роли db_owner могут изменять спецификации аудита в базе данных. Подсистема аудита SQL Server выполнит проверку наличия у имени входа, пытающегося выполнить создание или изменение спецификации аудита (хотя бы разрешения ALTER ANY DATABASE AUDIT). Однако при присоединении базы данных проверка не производится. Считается, что спецификации аудита базы данных надежны настолько, насколько надежны участники, имеющие роль sysadmin или db_owner .

Связанные задачи

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

Создание спецификация аудита для сервера и базы данных

Просмотр журнала подсистемы аудита SQL Server

Запись событий подсистемы аудита SQL Server в журнал безопасности

Темы, тесно связанные с аудитом

См. также

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

Действия и группы действий подсистемы аудита SQL Server

Записи подсистемы аудита SQL Server