Журналы аудита в Базе данных Azure для MariaDB
Внимание
База данных Azure для MariaDB находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить миграцию в База данных Azure для MySQL. Дополнительные сведения о переходе на База данных Azure для MySQL см. в статье "Что происходит с База данных Azure для MariaDB?".
В Базе данных Azure для MariaDB пользователям доступен журнал аудита. Журнал аудита можно использовать для отслеживания действий на уровне базы данных и для обеспечения соответствия требованиям.
Настройка ведения журналов аудита
Внимание
Рекомендуется регистрировать только типы событий и сведения о пользователях, необходимые для аудита, чтобы влияние на производительность сервера было незначительным.
Журнал аудита по умолчанию отключен. Чтобы включить его, установите для параметра audit_log_enabled
значение "ВКЛ.".
Вы можете настроить еще несколько параметров.
audit_log_events
: определяет регистрируемые события. Конкретные события аудита см. в таблице ниже.audit_log_include_users
: пользователи MariaDB, которые будут включаться в журнал. По умолчанию значение этого параметра пусто, при этом в журнал будут включаться все пользователи. Этот параметр имеет более высокий приоритет, чемaudit_log_exclude_users
. Максимальная длина параметра — 512 символов.audit_log_exclude_users
: пользователи MariaDB, которых следует исключить из журнала. Можно указать не более четырех пользователей. Максимальная длина параметра — 256 символов.
Примечание.
audit_log_include_users
имеет более высокий приоритет, чем audit_log_exclude_users
. Например, если заданы параметры audit_log_include_users
= demouser
и audit_log_exclude_users
= demouser
, пользователь будет включаться в журналы аудита, так как параметр audit_log_include_users
имеет более высокий приоритет.
Событие | Description |
---|---|
CONNECTION |
— инициирование подключения (успешное или неудачное) — повторная проверка подлинности пользователей с другим пользователем или паролем во время сеанса — Завершение подключения |
DML_SELECT |
Запросы SELECT |
DML_NONSELECT |
Запросы INSERT/DELETE/UPDATE |
DML |
DML = DML_SELECT + DML_NONSELECT |
DDL |
Запросы типа DROP DATABASE |
DCL |
Запросы типа GRANT PERMISSION |
ADMIN |
Запросы типа SHOW STATUS |
GENERAL |
Все в DML_SELECT, DML_NONSELECT, DML, DDL, DCL и ADMIN |
Доступ к журналам аудита
Журналы аудита можно интегрировать с журналами диагностики Azure Monitor. Включив ведение журналов аудита на сервере MariaDB, вы можете реализовать отправку этих данных в журналы Azure Monitor, Центры событий или службу хранилища Azure. Дополнительные сведения о включение журналов диагностики на портале Azure см. в статье о портале журналов аудита.
Схемы журналов диагностики
В следующих разделах описаны выходные данные журналов аудита MariaDB по типам событий. Порядок появления выбранных полей зависит от выбранного метода вывода.
Connection
Свойство | Description |
---|---|
TenantId |
Идентификатор клиента |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Метка времени, когда журнал был записан в формате UTC |
Type |
Тип журнала Всегда AzureDiagnostics |
SubscriptionId |
Идентификатор GUID для подписки, принадлежащей серверу |
ResourceGroup |
Имя группы ресурсов, принадлежащей серверу |
ResourceProvider |
Имя поставщика ресурсов. Всегда MICROSOFT.DBFORMARIADB |
ResourceType |
Servers |
ResourceId |
Универсальный код ресурса (URI) |
Resource |
Имя сервера |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , DISCONNECT |
connection_id_d |
Уникальный идентификатор подключения, созданный MariaDB |
host_s |
Пробел |
ip_s |
IP-адрес клиента, подключающегося к MariaDB |
user_s |
Имя пользователя, выполняющего запрос |
db_s |
Имя базы данных, к которой выполняется подключение |
\_ResourceId |
Универсальный код ресурса (URI) |
Общие
Схема ниже относится к событиям типов GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL и ADMIN.
Примечание.
Для sql_text
журнал будет обрезан, если его длина превышает 2048 символов.
Свойство | Description |
---|---|
TenantId |
Идентификатор клиента |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Метка времени, когда журнал был записан в формате UTC |
Type |
Тип журнала Всегда AzureDiagnostics |
SubscriptionId |
Идентификатор GUID для подписки, принадлежащей серверу |
ResourceGroup |
Имя группы ресурсов, принадлежащей серверу |
ResourceProvider |
Имя поставщика ресурсов. Всегда MICROSOFT.DBFORMARIADB |
ResourceType |
Servers |
ResourceId |
Универсальный код ресурса (URI) |
Resource |
Имя сервера |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Имя сервера |
event_class_s |
general_log |
event_subclass_s |
LOG , , ERROR RESULT |
event_time |
Начало запроса в секундах в метке времени UNIX |
error_code_d |
Код ошибки при сбое запроса. 0 означает отсутствие ошибок. |
thread_id_d |
Идентификатор потока, выполнившего запрос |
host_s |
Пробел |
ip_s |
IP-адрес клиента, подключающегося к MariaDB |
user_s |
Имя пользователя, выполняющего запрос |
sql_text_s |
Полный текст запроса |
\_ResourceId |
Универсальный код ресурса (URI) |
Анализ журналов в журналах Azure Monitor
После передачи журналов аудита в журналы Azure Monitor с помощью журналов диагностики вы можете провести дальнейший анализ событий, для которых выполняется аудит. Ниже приведены примеры запросов, которые помогут приступить к работе. Обязательно замените указанные ниже имена серверов именем своего сервера.
Вывод списка событий GENERAL на конкретном сервере
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlAuditLogs' and event_class_s == "general_log" | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last
Вывод списка событий CONNECTION на конкретном сервере
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log" | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last
Вывод сводки событий, для которых проводится аудит, на конкретном сервере
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlAuditLogs' | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | summarize count() by event_class_s, event_subclass_s, user_s, ip_s
Построение диаграммы распределения типов событий, для которых проводится аудит, на конкретном сервере
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlAuditLogs' | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m) | render timechart
Перечисление событий, для которых проводится аудит, на всех серверах MariaDB с журналами диагностики, поддерживающих журналы аудита
AzureDiagnostics | where Category == 'MySqlAuditLogs' | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last