Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
Azure SQL Managed Instance
Аудит экземпляра SQL Server Database Engine или отдельной базы данных включает отслеживание и ведение журнала событий, происходящих в движке базы данных. SQL Server аудит позволяет создавать аудит сервера, который может содержать спецификации аудита сервера для событий уровня сервера, а также спецификации аудита базы данных для событий уровня базы данных. События аудита могут записываться в журналы событий или файлы аудита.
Существует несколько уровней аудита для SQL Server в зависимости от требований правительства или стандартов для установки. SQL Server Audit предоставляет инструменты и процессы, необходимые для включения, хранения и просмотра аудитов на различных объектах сервера и базы данных.
Группы действий аудита сервера можно записывать по отдельному экземпляру, а группы действий аудита базы данных или действия аудита базы данных — для каждой базы данных. Событие аудита возникает при каждом обнаружении действия, допускающего аудит.
Эта статья относится к SQL Server и Azure SQL Managed Instance.
- Все выпуски SQL Server поддерживают аудиты на уровне сервера. В SQL Server 2016 (13.x) с пакетом обновления 1 и более поздними версиями все выпуски поддерживают аудиты на уровне базы данных. До SQL Server 2016 (13.x) аудит на уровне базы данных был ограничен выпусками Enterprise, Developer и Evaluation. Дополнительные сведения см. в разделе Editions и поддерживаемые функции SQL Server 2016.
- В Azure SQL Managed Instance поддерживается аудит SQL Server и существуют диференсы между базами данных в Azure SQL Managed Instance и базах данных в SQL Server.
- Информацию по базе данных SQL см. в разделе Аудит для Azure SQL Database.
компоненты аудита SQL Server
Аудит — это сочетание в едином пакете нескольких элементов для определенной группы действий сервера или базы данных. Компоненты аудита SQL Server объединяются для создания выходных данных, которые называются аудитом, так же, как определение отчета в сочетании с графическими элементами и элементами данных создает отчет.
Аудит в SQL Server использует Extended Events для помощи в создании аудита. Дополнительные сведения о расширенных событиях см. в обзоре расширенных событий.
SQL Server аудит
Объект SQL Server Audit собирает один экземпляр действий сервера или уровня базы данных и групп действий для мониторинга. Аудит выполняется на уровне экземпляра SQL Server. Для каждого экземпляра SQL Server можно выполнить несколько аудитов.
При определении аудита задается место для вывода результатов. Это пункт назначения аудита. Аудит создается в отключенном состоянии и не выполняет автоматический аудит каких-либо действий. После включения аудита пункт назначения аудита начинает получать от него данные.
Спецификация аудита сервера
Объект Спецификация аудита сервера принадлежит аудиту. Вы можете создать одну спецификацию аудита сервера для каждого аудита, так как они оба создаются в области экземпляра SQL Server.
Спецификация аудита сервера собирает множество групп действий уровня сервера, вызываемых компонентом расширенных событий. В спецификацию аудита сервера можно включить группы действий аудита . Группы действий аудита — это предопределенные группы действий, которые являются атомарными событиями, происходящими в Database Engine. Эти действия передаются аудиту, который регистрирует их в целевом объекте.
Группы действий на уровне сервера для аудита описаны в статье SQL Server Audit action groups and actions.
Примечание.
Из-за ограничений производительности, tempdb и временные таблицы не подвергаются аудиту. Хотя пакетная завершенная группа действий фиксирует инструкции во временных таблицах, они могут неправильно заполнять имена объектов. Однако исходная таблица всегда проверяется, обеспечивая запись всех вставок из исходной таблицы во временные таблицы.
Спецификация аудита базы данных
Объект Database Audit Specification также принадлежит к аудиту SQL Server. Вы можете создать одну спецификацию аудита базы данных SQL Server для каждой базы данных и каждого аудита.
Спецификация аудита базы данных включает действия аудита уровня базы данных, вызываемые компонентом расширенных событий. В спецификацию аудита базы данных можно добавлять либо группы действий аудита, либо события аудита. события Audit являются атомарными действиями, которые могут быть проверены подсистемой SQL Server. Группы действий аудита — это стандартные группы действий. Оба относятся к области охвата базы данных SQL Server. Эти действия передаются аудиту, который регистрирует их в целевом объекте. Не включать объекты с областью действия сервера, например системные представления, в спецификацию аудита пользовательской базы данных.
Группы действий аудита на уровне базы данных и действия аудита описаны в статье Группы действий аудита и действия аудита в SQL Server.
Цель
Результаты аудита отправляются в целевой объект, который может быть файлом, журналом событий Windows Security или журналом событий приложения Windows. Журналы должны периодически проверяться и архивироваться, чтобы убедиться, что целевой объект имеет достаточно места для записи дополнительных записей.
Внимание
Любой прошедший проверку подлинности пользователь может читать и записывать данные в журнал событий приложения Windows. Журнал событий приложения требует более низких разрешений, чем журнал событий Windows Security и менее безопасный, чем журнал событий Windows Security.
Для записи в журнал Windows Security требуется добавить учетную запись службы SQL Server в политику Generate security audits. По умолчанию в эту политику входят учетные записи «Локальная система», «Локальная служба» и «Сетевая служба». Этот параметр можно настроить с помощью оснастки политики безопасности (secpol.msc). Кроме того, политика безопасности Аудит доступа к объектам должна быть включена для регистрации как успешных , так и неуспешныхдействий. Этот параметр можно настроить с помощью оснастки политики безопасности (secpol.msc). В Windows Vista или Windows Server 2008 (и более поздних версиях) можно задать более детальную политику приложений из командной строки, используя программу настройки политик аудита (AuditPol.exe). Дополнительные сведения о шагах для включения записи в журнал безопасности Windows см. в разделе Запись событий аудита SQL Server в журнал безопасности. Дополнительные сведения о программе Auditpol.exe см. в статье базы знаний 921469 Использование групповой политики для детальной настройки аудита безопасности. Журналы событий Windows являются глобальными для операционной системы Windows. Для получения дополнительной информации о журналах событий Windows см. в разделе под названием Обзор программы Event Viewer. Если вам нужны более точные разрешения для аудита, используйте двоичный файл в качестве цели.
При сохранении сведений аудита в файл, чтобы предотвратить изменение, вы можете ограничить доступ к расположению файла следующими способами:
Учетная запись службы SQL Server должна иметь разрешение на чтение и запись.
Администраторам аудита обычно требуется разрешение на чтение и запись. Предполагается, что администраторы аудита являются учетными записями Windows для администрирования файлов аудита, например, копирования их в разные общие ресурсы, резервного копирования и т. д.
Читатели аудита, которым разрешено читать аудиторские файлы, должны иметь разрешение на чтение.
Даже если Database Engine записывает данные в файл, другие пользователи Windows могут читать файл аудита, если у них есть соответствующее разрешение. Database Engine не принимает монопольную блокировку, которая предотвращает операции чтения.
Поскольку механизм базы данных может получить доступ к файлу, учетные записи SQL Server, имеющие разрешения CONTROL SERVER, могут использовать механизм базы данных для доступа к файлам аудита. В SQL Server 2022 (16.x) и более поздних версиях разрешение VIEW SERVER SECURITY AUDIT достаточно для чтения файлов аудита с помощью fn_get_audit_file. Чтобы зарегистрировать каждого пользователя, который считывает файл аудита, настройте аудит на master.sys.fn_get_audit_file. Записываются входы с разрешением CONTROL SERVER, имеющие доступ к файлу аудита через SQL Server. Дополнительные сведения о разрешениях см. в fn_get_audit_filesys.fn_get_audit_file.
Если администратор аудита копирует файл в другое расположение (для архивных целей и т. д.), списки управления доступом (ACL) в новом расположении должны быть сокращены до следующих разрешений:
- Администратор аудита — чтение и запись
- Просмотрщик аудита — только для чтения.
Рекомендуется создавать отчеты аудита из отдельного экземпляра SQL Server, например экземпляра SQL Server Express, к которому имеют доступ только администраторы аудита или читатели аудита. Используя отдельный экземпляр Database Engine для создания отчетов, вы можете предотвратить доступ несанкционированных пользователей к записи аудита.
Вы можете обеспечить дополнительную защиту от несанкционированного доступа, зашифровав папку, в которой хранится файл аудита, с помощью Windows шифрования диска BitLocker или Windows шифрования файловой системы.
Дополнительные сведения о записях аудита, записанных в целевой объект, см. в разделе SQL Server Записи аудита.
Общие сведения об использовании аудита SQL Server
Для определения аудита можно использовать SQL Server Management Studio или Transact-SQL. После создания и включения аудита целевой объект получает записи.
Журналы событий Windows можно считывать с помощью программы Event Viewer в Windows. Для целевых объектов файлов можно использовать либо средство просмотра журналов
Обычно процесс создания и использования аудита происходит следующим образом.
- Создайте аудит и определите цель.
- Создайте либо спецификацию аудита сервера, либо спецификацию аудита базы данных, которая связана с аудитом. Включить спецификацию аудита.
- Включите аудит.
- Прочитайте события аудита, используя средство просмотра событий Windows Event Viewer, Log File Viewer или функцию
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.
Внутренние операции в Azure SQL Managed Instance
- В Azure SQL Database и Azure SQL Managed Instance события, инициируемые
SQLDBControlPlaneFirstPartyApp, являются внутренней функцией Azure плоскости управления Azure SQL Database. События, инициированныеSQLDBControlPlaneFirstPartyApp, являются частью внутренней операции синхронизации между подсистемой SQL и Azure Resource Manager. Эти события являются обычной частью управления ресурсами и необходимы для правильного представления ресурсов и операций в Azure.
Присоедините базу данных с заданным аудитом
Присоединение базы данных с спецификацией аудита и указание 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.
Разрешения
Каждая функция и команда для аудита SQL Server имеют отдельные требования к разрешениям.
Чтобы создать, изменить или удалить аудит сервера или спецификацию аудита сервера, принципы сервера должны иметь разрешение ALTER ANY SERVER AUDIT или CONTROL SERVER. Чтобы создать, изменить или удалить спецификацию аудита базы данных, субъекты базы данных должны иметь ALTER ANY DATABASE AUDIT разрешение или ALTER или CONTROL разрешение на базу данных. Кроме того, руководители должны иметь разрешение на подключение к базе данных или разрешения ALTER ANY SERVER AUDIT или CONTROL SERVER.
Разрешение VIEW ANY DEFINITION предоставляет доступ к просмотру представлений аудита на уровне сервера и VIEW DEFINITION предоставляет доступ к просмотру представлений аудита на уровне базы данных. Отказ этих разрешений переопределяет возможность просмотра представлений каталога, даже если у субъекта имеются ALTER ANY SERVER AUDIT или ALTER ANY DATABASE AUDIT разрешения.
Для чтения данных аудита с помощью fn_get_audit_file SQL Server 2019 (15.x) и более ранних версий требуется разрешение CONTROL SERVER на сервере, а для SQL Server 2022 (16.x) и более поздних версий требуется разрешение VIEW SERVER SECURITY AUDIT. Дополнительные сведения см. в sys.fn_get_audit_file.
Дополнительные сведения о предоставлении прав и разрешений см. в разделе GRANT.
Внимание
Субъекты в роли sysadmin могут изменить любой компонент аудита, а субъекты в роли db_owner могут изменить спецификации аудита в базе данных. SQL Server Audit проверяет, что вход в систему, который создает или изменяет спецификацию аудита, имеет разрешение ALTER ANY DATABASE AUDIT как минимум. Однако при присоединении базы данных проверка не производится. Предполагается, что все спецификации аудита базы данных являются надежными только в той степени, насколько надежны субъекты с полномочиями роли sysadmin или db_owner.
Создание аудита и управление ими с помощью Transact-SQL
Для реализации всех аспектов SQL Server аудита можно использовать инструкции DDL, динамические административные представления и функции и представления каталога.
Операторы языка определения данных
Чтобы создать, изменить или удалить спецификацию аудита, можно использовать следующие инструкции DDL.
| Инструкции DDL | Описание |
|---|---|
| ИЗМЕНИТЬ АВТОРИЗАЦИЮ | Изменяет владельца защищаемого объекта. |
| ИЗМЕНИТЬ СПЕЦИФИКАЦИЮ АУДИТА БАЗЫ ДАННЫХ | Изменяет объект спецификации аудита базы данных с помощью функции аудита SQL Server. |
| Изменение аудита сервера | Изменяет объект аудита сервера с помощью функции аудита SQL Server. |
| ИЗМЕНИТЬ СПЕЦИФИКАЦИЮ АУДИТА СЕРВЕРА | Изменяет объект спецификации аудита сервера с помощью функции аудита SQL Server. |
| СОЗДАТЬ СПЕЦИФИКАЦИЮ АУДИТА БАЗЫ ДАННЫХ | Создает объект спецификации аудита базы данных с помощью функции аудита SQL Server. |
| СОЗДАЙТЕ АУДИТ СЕРВЕРА | Создает объект аудита сервера с помощью SQL Server Audit. |
| СОЗДАТЬ СПЕЦИФИКАЦИЮ АУДИТА СЕРВЕРА | Создает объект спецификации аудита сервера с помощью функции аудита SQL Server. |
| УДАЛЕНИЕ СПЕЦИФИКАЦИИ АУДИТА БАЗЫ ДАННЫХ | Удаляет объект спецификации аудита базы данных с помощью функции аудита SQL Server. |
| УДАЛИТЬ АУДИТ СЕРВЕРА | Удаляет объект аудита сервера с помощью функции аудита SQL Server. |
| УДАЛИТЬ СПЕЦИФИКАЦИЮ АУДИТА СЕРВЕРА | Удаляет объект спецификации аудита сервера с помощью функции аудита SQL Server. |
Динамические представления и функции
В следующей таблице перечислены динамические представления и функции, которые можно использовать для аудита 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 на экземпляре сервера. |