【问题标题】:MySQL query audit log w/ metrics带有指标的 MySQL 查询审计日志
【发布时间】:2021-12-23 08:02:09
【问题描述】:

我的公司非常需要审计针对数据库运行的查询,更具体地说是 DML 语句较少的选择。理想情况下,我们希望检索特定指标

  • 谁运行了查询
  • 查询何时运行
  • 查询是什么
  • 受查询影响的表(可能会从查询本身解析出来)
  • 查询影响了多少行(顾问不会对此做出让步)

我试过通用日志,慢日志和mariadb审计插件都没有用。除了我可以探索的表触发器之外,还有其他解决方案吗?

如果可能,我们希望导出日志以供外部解析,但这不是硬性要求。

【问题讨论】:

  • 这一切似乎比数据库层更适合应用层。例如,对于不同的最终用户,您真的有不同的数据库用户吗?
  • @ysth 我同意你的观点,理论上应该在应用层处理。但是,我想顾问们想防止一个流氓实体进入数据库并删除一个表。

标签: mysql mariadb audit audit-logging


【解决方案1】:

Percona Server 是 MySQL 的一个分支,它支持慢查询日志中的更多详细信息,包括受影响的行。请参阅此文档页面中的示例:https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html

这将为您提供谁、何时、什么以及rows_affected

可以使用pt-query-digest 的某些选项从每个日志事件中提取受影响的表,该工具包含在免费的 Percona 工具包中。您还可以使用此工具的过滤器选项将结果限制为 DML 语句。

如果您想记录在存储过程中运行的语句,还需要 Percona Server(请参阅我上面链接到的页面上的选项 log_slow_sp_statements)。

但是,没有任何解决方案记录语句在触发器内运行。因此,如果您想让您的审计完成,您必须禁止在您的组织中使用数据库触发器。

您标记了您的问题。我不知道 MariaDB 是否支持对慢查询日志的相同扩展,您必须在 MariaDB 文档中进行研究。

【讨论】:

  • 嗨,比尔,很遗憾,我无法切换 MySQL 的风格。我们正在运行 MySQL 的 RDS 实例。
  • 好的,明白了。好吧,当你使用 RDS 时,你放弃了很多控制权。如果您有此类特定的审核要求,您可能无法继续这样做。
猜你喜欢
  • 2019-10-12
  • 2023-02-08
  • 2018-04-26
  • 2018-01-25
  • 1970-01-01
  • 2023-03-20
  • 2012-08-31
  • 2011-10-24
  • 2020-05-04
相关资源
最近更新 更多