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

  1. Вступление С появлением информационной эры данные собираются в огромных масштабах. Системы информационных...
  2. Аудит в SQL Server 2008 и выше
  3. Расширенные события
  4. Аудит Компонентов
  5. Аудит сервера
  6. Спецификации аудита
  7. Спецификация аудита базы данных
  8. Пользовательские события аудита
  9. Чтение данных файла аудита
  10. Защита журналов аудита
  11. Перезапуск SQL Server после принудительного выключения
  12. Лучшие практики
  13. Рекомендации:
  14. Минетт Стейнберг

Вступление

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

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

Это лишь одна из многих причин, по которым правительства внедряют стандартизированные требования аудита, такие как HIPAA, SOX, PCI, GLBA, FERPA и Basel.

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

С этой целью Microsoft добавила функцию аудита в SQL Server 2008 и далее.

Аудит в SQL Server до 2008 года

До SQL Server 2008 аудит должен был выполняться с использованием сочетания следующих функций:

  • Аудит входа в систему и аудит C2
  • Триггеры и уведомления о событиях
  • SQL Trace может использоваться вместе с SQL Profiler

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

Аудит в SQL Server 2008 и выше

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

В SQL Server 2008 аудит был корпоративной функцией. В SQL Server 2012 аудит сервера теперь доступен для всех выпусков, однако аудит базы данных остается только для корпоративных клиентов.

Расширенные события

Расширенные события - это настраиваемая архитектура, используемая для обработки событий, происходящих в SQL Server. Расширенные события встроены в код SQL Server и поэтому оказывают минимальное влияние на производительность.

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

Аудит Компонентов

Функция аудита SQL Server включает три основных компонента:

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

Аудит сервера

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

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

В конфигурации аудита настроено следующее:

  • Имя аудита сервера
  • Задержка в очереди, представляющая собой максимальную сумму в миллисекундах, которую система может подождать перед обработкой любого аудита. В основном аудит может быть обработан синхронно или асинхронно. Для синхронной обработки установите задержку очереди равной 0. Для асинхронной обработки самое низкое возможное значение составляет 1000 миллисекунд.
  • Действие, которое необходимо предпринять, если ведение журнала аудита не может быть продолжено по какой-либо причине.
    Варианты:
    • Продолжайте и игнорируйте проблему журнала
    • Выключить сервер

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

      Чтобы иметь возможность настроить этот параметр, пользователь, который создает или изменяет Аудит, должен иметь разрешения SERVER SHUTDOWN.

    • Сбой операции

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

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

  • Место назначения аудита

    Регистрация может быть сделана для:

    • файл

      Рекомендуемый подход - хранить журналы аудита в сетевом расположении вне сервера.

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

      • Аудит имя
      • Аудит GUID
      • Номер раздела
      • Отметка времени
      • Расширение файла
    • Журнал безопасности

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

    • Журнал приложения

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

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

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

  • Стоит ли резервировать дисковое пространство специально для журналов аудита

Аудиту сервера автоматически присваивается уникальный идентификатор GUID. Этот GUID может быть назначен явно. Этот GUID является статическим и не может быть изменен после создания аудита.

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

Аудит может быть создан с помощью SQL Server Management Studio, с использованием транзакционного SQL или объектов управления SQL Server (SMO).

В SQL Server Management Studio аудит может быть создан в узле Audit, который находится в узле Security в Object Explorer.

В SQL Server Management Studio аудит может быть создан в узле Audit, который находится в узле Security в Object Explorer

Аудит также можно создать с помощью команды Transact SQL CREATE SERVER AUDIT.

N B : Все проверки и спецификации аудита создаются в отключенном состоянии. Включение аудита не включает автоматически все спецификации аудита, связанные с ним. Каждая спецификация аудита должна быть включена индивидуально. Аудит или спецификация аудита не могут быть изменены, когда они включены, сначала их необходимо отключить, затем изменить и снова включить.

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

Необходимые разрешения:
Для СОЗДАНИЯ, ИЗМЕНЕНИЯ или УДАЛЕНИЯ аудита пользователю требуется разрешение ALTER ANY SERVER AUDIT. Это также включено в разрешение CONTROL SERVER.

Чтобы выполнить запись в местоположение файла, учетная запись службы SQL Server должна иметь разрешения на запись в сетевой папке. Чтобы прочитать файл, все пользователи, которые принадлежат к роли «Читатель аудита» и «Администраторы аудита», должны также иметь разрешения на чтение для этого общего ресурса.

При записи в журнал безопасности Windows требуется дополнительная безопасность, о чем будет сказано далее в этой статье.

Спецификации аудита

Спецификации аудита могут иметь 3 категории действий:

  • Действия на уровне сервера
  • Действия на уровне базы данных или
  • Действия уровня аудита, который проверяет действия самого процесса аудита. Некоторые действия аудита автоматически проверяются, такие как изменение или отключение состояния аудита

Некоторые действия могут проверяться индивидуально, например, аудит события на столе. Это называется аудитом действий.

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

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

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

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

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

  • Название спецификации аудита. Это необязательно, имя по умолчанию будет назначено, если вы не введете его
  • Аудит сервера, который определяет цель, к которой должны быть зарегистрированы выбранные события
  • Тип действия аудита. Это события, которые должны быть проверены

    В спецификации сервера все события сгруппированы в группы действий аудита. Ниже приведены примеры групп действий аудита уровня сервера:

    SUCCESSFUL_LOGIN_GROUP

    FAILED_LOGIN_GROUP

    DBCC_GROUP

    Полный список групп действий аудита на уровне сервера можно найти здесь: Аудит Действия и Аудит Группы действий

    Когда спецификация аудита сервера создается через SSMS, она по умолчанию отключена. При создании его с помощью T-SQL существует необязательный параметр, позволяющий создать его в активированном состоянии.

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

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

Спецификация аудита базы данных проверяет события на уровне базы данных. Использование более детального аудита может минимизировать влияние на производительность вашего сервера. Это делается с помощью спецификации аудита базы данных, которая, к сожалению, доступна только в редакции Enterprise. Используя спецификацию аудита базы данных, аудит может выполняться на уровне объекта или пользователя.

К сожалению, это пока невозможно сделать на уровне столбцов.

Спецификация аудита базы данных создается под узлом безопасности соответствующей базы данных.

Его также можно создать с помощью Transact SQL и SMO.

Для создания спецификации аудита базы данных необходимо настроить следующее:

  • Имя спецификации аудита базы данных. Имя по умолчанию будет назначено, если оно не указано
  • Аудит сервера, с которым должна быть связана спецификация
  • Тип действия аудита. В этом поле можно выбрать как Действия аудита, так и Группы действий аудита.

    INSERT и UPDATE - это некоторые из действий аудита, которые могут быть выбраны в этом поле.

    Полный список действий аудита и групп действий аудита, применимых к спецификации аудита базы данных, можно найти здесь: Аудит действий и аудит групп действий

    • Имя объекта объекта, подлежащего аудиту при выборе действия аудита
    • Схема выбранного объекта
    • Основное имя. Чтобы провести аудит всех пользователей, используйте ключевое слово p u bl в этом поле.

    Несмотря на то, что SQL Server позволит вам указать действие аудита для объектов области сервера, таких как системные представления, объекты не будут проверяться, но также не будет возникать никаких ошибок.

    Если вы хотите проверять объекты области сервера, вам нужно создать спецификацию аудита базы данных в базе данных master.

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

    Пользовательские события аудита

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

    Пользовательское событие аудита создается с использованием процедуры sp_audit_write. Эта процедура принимает 3 параметра:

    • Пользовательский идентификатор события
      Это идентификатор, указанный пользователем, который записывается в столбец user_defined_event_id журнала аудита. Тип данных smallint
    • Преемник
      Указывает, удалось ли процедуре записи в журнал аудита. Тип данных немного
    • Пользовательская информация
      Это необязательный параметр, который позволяет пользователю указать дополнительную информацию о событии. Эта информация записывается в столбец user_defined_information журнала аудита. Тип данных nvarchar (4000)
    • Для аудита определенного пользователем события необходимо выбрать USER_DEFINED_AUDIT_GROUP для аудита в спецификации аудита базы данных или сервера.

      Если это событие не было выбрано в качестве события аудита, все события, созданные процедурой sp_audit_write, будут игнорироваться.

      Чтение данных файла аудита

      Когда информация об аудите записывается в целевой файл, это делается в двоичном формате. Табличную функцию fn_get_audit_file () необходимо использовать для ее чтения.

      Эта функция принимает 3 параметра:

      • Шаблон файла

        Это nvarchar (260). Необходимо указать путь или путь и имя файла для чтения. Чтобы прочитать все файлы в папке, укажите путь к папке, используя звездочку (*) в качестве подстановочного знака. Если указан неверный файл, появится сообщение об ошибке MSG_INVALID_AUDIT_FILE

      • Начальное имя файла
        Это путь и имя файла в наборе аудита, с которого должно начаться чтение. Тип данных nvarchar (260)

      • Смещение записи аудита
        Это может быть использовано для указания начального местоположения в исходном файле. Тип данных bigint

      Пример:

      SELECT * FROM fn_get_audit_file ('D: \ Audits \ *', по умолчанию, по умолчанию)

      Файл может содержать любой из 26 доступных элементов. Полный список доступных элементов можно найти здесь: Записи аудита SQL Server

      Информация об аудите, записанная в Журнал безопасности Windows или Журнал приложений, может быть прочитана с помощью средства просмотра событий. Эту информацию также можно прочитать в студии управления SQL Server, развернув узел безопасности, затем развернув узел аудита, щелкнув правой кнопкой мыши элемент Аудит и выбрав опцию V i e w A u dit Logs

      Защита журналов аудита

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

      Существует два способа повысить безопасность журналов аудита:

  1. Записать журналы аудита в общий файловый сервер на другом сервере, на который системный администратор даже не имеет разрешения. Разрешить только разрешение аудитору
  2. Запись в журнал безопасности Windows также является хорошей альтернативой. Если вы хотите записать в журнал безопасности Windows, вам нужно будет сделать следующее:
    • Добавьте учетную запись службы SQL Server в политику создания аудитов безопасности в редакторе редактирования групповой политики.

    • Измените политику доступа к объекту аудита, включив в нее как успех, так и отказ

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

    В Windows 8 плагин называется gpedit.msc. Чтобы получить к нему доступ, вам нужно ввести gpedit.msc в поле поиска. Не забудьте включить расширение .msc, иначе вы можете его не найти

    msc, иначе вы можете его не найти

    К сожалению, если у вас есть только базовая версия Windows 8, вы не сможете получить доступ к этому приложению

Перезапуск SQL Server после принудительного выключения

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

Это позволит администратору базы данных вносить изменения в аудит, если это необходимо.

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

Лучшие практики

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

Заключение

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

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

Рекомендации:

Узнать больше

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


Минетт Стейнберг

Минетт Стейнберг имеет более чем 15-летний опыт работы с данными в различных ИТ-ролях, включая разработчика SQL и администратора баз данных SQL Server. Минетт любит быть активным членом сообщества SQL Server, когда пишет статьи и время от времени общается в группах пользователей SQL.
В настоящее время Minette работает архитектором Data Platform Solution в Microsoft в Южной Африке.
Посмотреть все сообщения от Минетт Стейнберг

Последние сообщения от Минетт Стейнберг ( увидеть все )

Какие действия должны быть проверены?
Кому нужен доступ к этой информации?
Как это будет доступно?