Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL监视——审计日志

MySQL监视——审计日志

作者头像
MySQLSE
发布于 2023-08-31 06:47:40
发布于 2023-08-31 06:47:40
92200
代码可运行
举报
运行总次数:0
代码可运行

MySQL的企业版中提供了审计日志功能。通过审计日志可以记录用户的登录、连接、执行的查询等行为,输出XML格式或者JSON格式的日志文件

审计日志功能使用“audit_log”服务器插件和其他的组件实现,提供基于规则的过滤功能,并且能够将规则分别适用于不同的用户。日志的内容包括如下:

  • 系统发生的错误
  • 客户端的连接与断开
  • 连接时执行的查询与操作
  • 用户访问了哪些数据库和表

安装

安装审计日志时,需要使用MySQL共享路径"share"下的安装脚本“audit_log_filter_win_install.sql”或“audit_log_filter_linux_install.sql”。脚本将安装服务器插件“audit_log”,该插件用于审计事件,并决定是否将事件记入日志。用户自定义函数用于定义过滤规则、控制日志的行为、加密密码、日志文件的读取。mysql库中的系统表“audit_log_filter”用于保存过滤规则,“audit_log_user”用于保存用户的数据,如果这两个表不存在,审计插件将使用传统的基于策略的方式记录日志。用户可以通过系统变量对审计日志进行配置,还可以利用状态变量查看操作信息。用户需要注意,审计日志一旦安装,将一直驻留在服务器上,如果希望卸载,需要执行一系列的语句,详细请访问官网手册。

配置审计日志

用户可以在服务器启动时,通过“audit_log”选项启用或禁用审计日志插件,并可以设置“FORCE_PLUS_PERMANENT”防止插件在服务器运行时被删除。日志名称默认为“audit.log”,保存在服务器的数据路径下,用户可以通过“audit_log_file”系统变量在服务器启动时,对其名称和路径进行更改。“audit_log_rotate_on_size”选项用于配置日志轮换,如果该选项值大于0,日志文件达到所设定的值大小时,将进行轮换。开启审计日志会对服务器的性能产生一定的影响,用户可以通过配置“audit_log_strategy”选项值,调整其对性能的影响,以达到合规和性能的平衡。

开启过滤

开启过滤时,首先,需要定义一个过滤器“audit_log_filter_set_filter(名称,定义)”,定义需要使用JSON格式,过滤器将保存在mysql.audit_log_filter表中。其次,将过滤器赋予一个用户,使用“audit_log_filter_set_user(用户名,过滤器名)”。注意,用户名使用“user_name@host_name”格式或者使用“%”用于其他任何没有赋予过滤器的用户,该信息将保存在“mysql.audit_log_user”表中。

日志格式

日志包含新旧两种XML格式和JSON格式

XML格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<AUDIT>
 <AUDIT_RECORD>
  <TIMESTAMP>2019-10-03T14:06:33 UTC</TIMESTAMP>
  <RECORD_ID>1_2019-10-03T14:06:33</RECORD_ID>
  <NAME>Audit</NAME>
  <SERVER_ID>1</SERVER_ID>
  <VERSION>1</VERSION>
  <STARTUP_OPTIONS>/usr/local/mysql/bin/mysqld
    --socket=/usr/local/mysql/mysql.sock
    --port=3306</STARTUP_OPTIONS>
  <OS_VERSION>i686-Linux</OS_VERSION>
  <MYSQL_VERSION>5.7.21-log</MYSQL_VERSION>
 </AUDIT_RECORD>
 <AUDIT_RECORD>
  <TIMESTAMP>2019-10-03T14:09:38 UTC</TIMESTAMP>
  <RECORD_ID>2_2019-10-03T14:06:33</RECORD_ID>
  <NAME>Connect</NAME>
  <CONNECTION_ID>5</CONNECTION_ID>
  <STATUS>0</STATUS>
  <STATUS_CODE>0</STATUS_CODE>
  <USER>root</USER>
  <OS_LOGIN/>
  <HOST>localhost</HOST>
  <IP>127.0.0.1</IP>
  <COMMAND_CLASS>connect</COMMAND_CLASS>
  <CONNECTION_TYPE>SSL/TLS</CONNECTION_TYPE>
  <CONNECTION_ATTRIBUTES>
   <ATTRIBUTE>
    <NAME>_pid</NAME>
    <VALUE>42794</VALUE>
   </ATTRIBUTE>
   ...
   <ATTRIBUTE>
    <NAME>program_name</NAME>
    <VALUE>mysqladmin</VALUE>
   </ATTRIBUTE>
  </CONNECTION_ATTRIBUTES>
  <PRIV_USER>root</PRIV_USER>
  <PROXY_USER/>
  <DB>test</DB>
 </AUDIT_RECORD>

...

 <AUDIT_RECORD>
  <TIMESTAMP>2019-10-03T14:09:38 UTC</TIMESTAMP>
  <RECORD_ID>6_2019-10-03T14:06:33</RECORD_ID>
  <NAME>Query</NAME>
  <CONNECTION_ID>5</CONNECTION_ID>
  <STATUS>0</STATUS>
  <STATUS_CODE>0</STATUS_CODE>
  <USER>root[root] @ localhost [127.0.0.1]</USER>
  <OS_LOGIN/>
  <HOST>localhost</HOST>
  <IP>127.0.0.1</IP>
  <COMMAND_CLASS>drop_table</COMMAND_CLASS>
  <SQLTEXT>DROP TABLE IF EXISTS t</SQLTEXT>
 </AUDIT_RECORD>

 <AUDIT_RECORD>
  <TIMESTAMP>2019-10-03T14:09:45 UTC</TIMESTAMP>
  <RECORD_ID>12_2019-10-03T14:06:33</RECORD_ID>
  <NAME>NoAudit</NAME>
  <SERVER_ID>1</SERVER_ID>
 </AUDIT_RECORD>
</AUDIT>

JSON格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
  {
    "timestamp": "2019-10-03 13:50:01",
    "id": 0,
    "class": "audit",
    "event": "startup",
    ...
  },
  {
    "timestamp": "2019-10-03 15:02:32",
    "id": 0,
    "class": "connection",
    "event": "connect",
    ...
  },
  ...
  {
    "timestamp": "2019-10-03 17:37:26",
    "id": 0,
    "class": "table_access",
    "event": "insert",
      ...
  }
  ...
]

日志中记录的值

审计日志中的时间戳“TIMESTAMP”使用UTC。

“NAME”表示事件的类型,包括:

  • “Connect”:登录事件
  • “Quit”:客户端连接断开
  • “Query”:执行的SQL语句
  • “Audit”/“NoAudit”审计的起始点

“STATUS”提供执行命令的状态,代码值与“SHOW ERRORS”相同。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL解决方案工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
等保测评2.0:MySQL安全审计
虽然遇到这些插件的概率不高,我还是把这些插件的基本参数都列出来,到时候如果真遇到了,也不至于一头雾水。
FB客服
2020/03/24
5.8K0
等保测评2.0:MySQL安全审计
MySQL审计插件使用和对比
数据库审计是数据库安全中很重要的一个环节,说到审计,有些上市公司内部还会根据塞班斯法案,进行404审计等等。 而最基本的审计还是需要的,有些同学可能感觉审计会有些鸡肋,其实非也,开审计的功能势必会影响性能,如果不开又会有遗漏,这种防患于未然,把问题都扼杀在摇篮之中,通过这种规范和制度来做最后一道防线。 MySQL中也需要审计,不说大的方向,就说和我们工作更贴近的,比如某一个业务在某个时间点出现了异常,因为异常操作(比如DDL)导致系统出现了严重的问题,这个时候如果要查看这个问题的具体情
jeanron100
2018/03/22
4K0
MySQL审计插件使用和对比
MySQL企业版之Audit(审计)初体验
MySQL企业版的优势在于有原厂技术支持,以及几个相当不错的功能插件,例如Transparent Data Encryption (TDE)(透明数据加密)、Audit(审计)、thread pool(线程池)、firewall(防火墙)、Data Masking(数据打码)等功能,还有企业级高可用、备份、监控等工具套件。
老叶茶馆
2020/06/24
1.9K0
mysql审计开启–两种方法
这里使用的是macfee的mysql audit插件,虽然日志信息比较大,对性能影响大,但是如果想要开启审计,那也应该忍受了。介绍几个参考地址:
全栈程序员站长
2022/07/20
2.4K0
MySQL的审计功能
安全高效的使用数据库,在现在的IT环境里显得尤为重要,审计功能可以对数据库的操作进行评估,以满足安全生产和法律法规的要求。MySQL的企业版里,提供了一项审计功能——MySQL Enterprise Audit。MySQL的审计功能以插件来实现,支持在特定的MySQL服务器上执行标准审计、基于规则的监视、日志记录以及阻挡连接和查询活动。MySQL Enterprise Audit使用了公开的MySQL Audit API,如果你想使用这个API去自己开发一个审计插件,可以参考手册链接。
MySQLSE
2020/09/28
2.6K0
MySQL的审计功能
技术分享 | MySQL 审计功能实现方案
爱可生华东交付服务部 DBA 成员,专职 MySQL 故障处理及相关技术支持。座右铭:好好学习,天天向上。
爱可生开源社区
2022/09/26
2.6K0
如何审计MySQL 8.0中的分类数据查询?
通常,涉及到敏感信息时用户需要使用审计日志。不仅仅是在表上运行Select,还包括访问表中的特定单元格。通常,这类数据将包含一个分类级别作为行的一部分,定义如何处理、审计等策略。
MySQLSE
2020/09/29
1.8K0
如何审计MySQL 8.0中的分类数据查询?
四十八、审计功能
审计是数据库安全中很重要的一个环节,它能够实时记录数据库的操作,帮助数据库管理员对数据库异常行为进行分析审计。审计会详细记录谁在什么时间执行了什么操作。MySQL 社区版没有自带的审计功能或插件,只有 MySQL 商业版中有审计功能。审计记录的日志如下:
喵叔
2021/07/14
4310
Linux 命令 | 每日一学,Audit 安全审计相关工具
描述: Linux 审计系统提供了一种方式来跟踪系统上与安全相关的信息。根据预配置的规则,审计会生成日志条目,来尽可能多地记录系统上所发生的事件的相关信息。对于关键任务环境而言至关重要,可用来确定安全策略的违反者及其所执行的操作。审计不会为您的系统提供额外的安全,而是用于发现系统上使用的安全策略的违规。可以通过其他安全措施(如 SELinux)进一步防止这些违规。
全栈工程师修炼指南
2024/04/10
1.8K0
Linux 命令 | 每日一学,Audit 安全审计相关工具
ELK日志系统 - Logstash篇
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中。
行 者
2019/12/10
9800
应用示例荟萃|全方位认识 mysql 系统库
在上一期《日志记录等混杂表|全方位认识 mysql 系统库》中,我们详细介绍了mysql系统库中的日志记录表,本期我们将为大家带来系列第九篇《应用示例荟萃|全方位认识 mysql 系统库》,也是"全方位认识 mysql 系统库"的最后一篇,下面请跟随我们一起开始 mysql 系统库的系统学习之旅吧
老叶茶馆
2020/12/15
5340
【连载】如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(4)
openGauss在部署完成后,实际上会有多个用户参与数据管理。除了管理员用户外,更多的是创建的普通用户直接进行数据管理。用户的多样性会导致数据库存在一些不可预期的风险。如何快速发现和追溯到这些异常的行为,则需要依赖审计机制和审计追踪机制。
数据和云
2022/02/25
3280
MySQL 8.0 数据库审计日志平台部署
数据库审计平台(简称DB Audit),实时记录用户操作数据库的行为,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行实时告警。通过对用户访问数据库行为记录、分析和汇报,来帮助DBA事后生成合规报告、事故追根溯源,同时通过搜索技术提供高效查询审计报告,定位事件原因,以便日后查询、分析、过滤,实现加强内外部数据库网络行为的监控与审计,提高数据资产安全。
贺春旸的技术博客
2023/11/13
1.4K0
MySQL 8.0 数据库审计日志平台部署
MYSQL 的审计怎么搞?
MYSQL 的审计其实和他的版本是有关的,这里我们的MYSQL 审计,仅仅是针对Percona 版本的,至于其他的版本的可能你还需要去查一下,当然官版使用percona的审计插件也是可以试试的。
AustinDatabases
2020/02/13
1.6K0
MYSQL 的审计怎么搞?
MySQL Binlog 解析工具 Maxwell 详解
Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。官网(http://maxwells-daemon.io)、GitHub(https://github.com/zendesk/maxwell)
小旋锋
2019/03/15
11.6K0
MySQL Binlog 解析工具 Maxwell 详解
MySQL安全插件-数据库审计
数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断。它通过对用户访问数据库行为的记录、分析和汇报,用来帮助用户事后生成合规报告、事故追根溯源,同时加强内外部数据库网络行为记录,提高数据资产安全。
Power
2025/03/01
3380
利用开源审计插件对mysql进行审计
假设这么一个情况,你是某公司mysql DBA,某日突然公司数据库中的所有被人为删了。尽管有数据备份,但是因服务停止而造成的损失上千万,现在公司需要查出那个做删除操作的人。
SEian.G
2021/03/03
3.2K0
MySQL审计插件介绍
数据库审计功能主要将用户对数据库的各类操作行为记录审计日志,以便日后进行跟踪、查询、分析,以实现对用户操作的监控和审计。审计是一项非常重要的工作,也是企业数据安全体系的重要组成部分,等保评测中也要求有审计日志。对于 DBA 而言,数据库审计也极其重要,特别是发生人为事故后,审计日志便于我们进行责任追溯,问题查找。
MySQL技术
2022/11/22
8110
MySQL审计插件介绍
监视MySQL——日志篇
使用日志对MySQL进行监视是一种重要的方法,通过日志可以评估服务器的操作状态,服务器崩溃后可以帮助进行数据恢复,使用复制功能时,能够帮助用户判断慢查询,此外还可以帮助用户确认安全合规等问题。本篇将介绍MySQL的各种日志。
MySQLSE
2023/08/31
5030
监视MySQL——日志篇
Mysql 开源审计插件有哪些
MySQL 开源的审计插件主要用于记录数据库的操作行为,如查询、登录、权限变更等,以便进行安全审计、合规性检查和问题排查。以下是几个常见的开源 MySQL 审计插件:
Linux运维技术之路
2025/02/18
1840
Mysql 开源审计插件有哪些
相关推荐
等保测评2.0:MySQL安全审计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验