Журналы аудита в Базе данных Azure для MySQL
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер
Внимание
База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"
В Базе данных Azure для MySQL пользователям доступен журнал аудита. Журнал аудита можно использовать для отслеживания действий на уровне базы данных и для обеспечения соответствия требованиям.
Настройка ведения журналов аудита
Внимание
Рекомендуется регистрировать только типы событий и сведения о пользователях, необходимые для аудита, чтобы влияние на производительность сервера было незначительным, а объем собранных данных минимальным.
Журнал аудита по умолчанию отключен. Чтобы включить его, установите для параметра audit_log_enabled
значение "ВКЛ.".
Вы можете настроить еще несколько параметров.
audit_log_events
: определяет регистрируемые события. Конкретные события аудита см. в таблице ниже.audit_log_include_users
: пользователи MySQL, которые будут включаться в журнал. По умолчанию значение этого параметра пусто, при этом в журнал будут включаться все пользователи. Этот параметр имеет более высокий приоритет, чемaudit_log_exclude_users
. Максимальная длина параметра — 512 символов.audit_log_exclude_users
: пользователи MySQL, которых следует исключить из ведения журнала. Максимальная длина параметра — 512 символов.
Примечание.
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 |
TABLE_ACCESS |
— доступно для MySQL 5.7 и MySQL 8.0 — Инструкции чтения таблиц, такие как SELECT или INSERT INTO ... ВЫБИРАТЬ — Инструкции удаления таблицы, такие как DELETE или TRUNCATE TABLE — инструкции вставки таблицы, такие как INSERT или REPLACE — Инструкции обновления таблиц, такие как UPDATE |
Доступ к журналам аудита
Журналы аудита можно интегрировать с журналами диагностики Azure Monitor. Включив ведение журналов аудита на сервере MySQL, можете реализовать их отправку этих данных в журналы Azure Monitor, Центры событий или службу хранилища Azure. Дополнительные сведения о включение журналов диагностики на портале Azure см. в статье о портале журналов аудита.
Примечание.
Учетные записи хранилище класса Premium не поддерживаются при отправке журналов в хранилище Azure с помощью диагностики и параметров.
Схемы журналов диагностики
В следующих разделах описаны выходные данные журналов аудита MySQL по типам событий. Порядок появления выбранных полей зависит от выбранного метода вывода.
Connection
Свойство | Description |
---|---|
TenantId |
Идентификатор клиента |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Метка времени, когда журнал был записан в формате UTC |
Type |
Тип журнала Всегда AzureDiagnostics |
SubscriptionId |
Идентификатор GUID для подписки, принадлежащей серверу |
ResourceGroup |
Имя группы ресурсов, принадлежащей серверу |
ResourceProvider |
Имя поставщика ресурсов. Всегда MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Универсальный код ресурса (URI) |
Resource |
Имя сервера |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Имя сервера |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , DISCONNECT , CHANGE USER (доступно только для MySQL 5.7) |
connection_id_d |
Уникальный идентификатор подключения, созданный MySQL |
host_s |
Пробел |
ip_s |
IP-адрес клиента, подключающегося к MySQL |
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.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Универсальный код ресурса (URI) |
Resource |
Имя сервера |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Имя сервера |
event_class_s |
general_log |
event_subclass_s |
LOG , ERROR , RESULT (доступно только для MySQL 5.6) |
event_time |
Время начала запроса в формате UTC (метка времени) |
error_code_d |
Код ошибки при сбое запроса. 0 означает отсутствие ошибок. |
thread_id_d |
Идентификатор потока, выполнившего запрос |
host_s |
Пробел |
ip_s |
IP-адрес клиента, подключающегося к MySQL |
user_s |
Имя пользователя, выполняющего запрос |
sql_text_s |
Полный текст запроса |
\_ResourceId |
Универсальный код ресурса (URI) |
Доступ к таблицам
Примечание.
Журналы доступа к таблицам выводятся только для MySQL 5.7.
Для sql_text
журнал будет обрезан, если его длина превышает 2048 символов.
Свойство | Description |
---|---|
TenantId |
Идентификатор клиента |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Метка времени, когда журнал был записан в формате UTC |
Type |
Тип журнала Всегда AzureDiagnostics |
SubscriptionId |
Идентификатор GUID для подписки, принадлежащей серверу |
ResourceGroup |
Имя группы ресурсов, принадлежащей серверу |
ResourceProvider |
Имя поставщика ресурсов. Всегда MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Универсальный код ресурса (URI) |
Resource |
Имя сервера |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Имя сервера |
event_class_s |
table_access_log |
event_subclass_s |
READ , INSERT , UPDATE или DELETE |
connection_id_d |
Уникальный идентификатор подключения, созданный MySQL |
db_s |
Имя базы данных, к которой осуществляется доступ |
table_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
Вывод списка событий, для которых проводится аудит, на всех серверах MySQL с журналами диагностики, поддерживающих журналы аудита
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