Azure Database for MySQL 单一服务器即将停用。 强烈建议升级到 Azure Database for MySQL 灵活服务器。 有关迁移到 Azure Database for MySQL 灵活服务器的详细信息,请参阅
Azure Database for MySQL 单一服务器的最新动态
在 Azure Database for MySQL 中,审核日志可供用户使用。 审核日志可以用来跟踪数据库级别的活动,通常用于确保符合性。
建议仅记录审核所需的事件类型和用户,以确保服务器的性能不会受到严重影响并收集最少的数据量。
默认情况下,审核日志被禁用。 若要启用它,请将
audit_log_enabled
设置为 ON。
可以调整的其他参数包括:
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
的优先级更高。
访问审核日志
审核日志与 Azure Monitor 诊断日志集成。 在 MySQL 服务器上启用审核日志后,可以将它们发送到 Azure Monitor 日志、事件中心或 Azure 存储。 若要详细了解如何在 Azure 门户中启用诊断日志,请参阅
审核日志门户文章
。
如果你通过诊断和设置将日志发送给 Azure 存储,将不支持高级存储帐户
诊断日志架构
以下部分介绍基于事件类型的 MySQL 审核日志的输出是什么。 根据输出方法,包含的字段以及这些字段出现的顺序可能会有所不同。
分析 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
如何在 Azure 门户中配置审核日志