mysql审计日志过滤sql功能

审计日志功能是通过插件实现的,需先安装。审计日志的过滤可通过audit_log_include_commands和audit_log_exclude_commands参数设置,两者互斥。要查看支持的SQL类型,需开启performance_schema并查询setup_instruments表。设置值时,只能设置其中一个参数,值最长1024字符,错误设置可能导致无记录。参数需持久化到my.conf并用loose-前缀确保重启后生效。

审计日志功能是一个插件,需要先安装插件才可以使用

过滤 sql 语句,可以通过插件内核参数 audit_log_include_commands 与 audit_log_exclude_commands 参数设置,两参数互斥,功能相反

查看参数支持取值

打开内核参数 performance_schema=ON,然后重启数据库,执行sql查看

set variables performance_schema=ON
SELECT name FROM performance_schema.setup_instruments WHERE name LIKE "statement/sql/%" ORDER BY name;

值设置

audit_log_include_commands:记录那些哪些类型sql

audit_log_exclude_commands:不记录哪些类型sql

参考:https://www.jianshu.com/p/2c893f5b385chttps://galeracluster.com/library/documentation/audit-log-plugin.html

  1. 添加多个值用逗号分隔

  1. 只有一个参数可以被设置,另一个需要为NULL,如果设置了另一个会报错设置不了,被设置的值最长长度为 1024,如果把所有取值都设置了,会被截断一部分

  1. 如果设置值错误了,根据情况是否有影响,如 audit_log_include_commands 只设置 abc,代表字记录abc 类型语句,但sql 类型中没有这种类型,那内核审计日志就什么都不会记录了

持久化

如果此次设置了没有加到 my.conf 配置文件中,重启 mysql 就会失效,参数还原默认值,要想永久生效,可以添加到my.conf文件中,且带上 loose- 前缀,代表在插件加载之后再加载此参数

### 日志审计系统对接 MySQL 日志源的方法 将 MySQL日志源对接到日志审计系统是确保数据库活动可追溯性和安全性的关键步骤。通过这种方式,可以实时监控数据库操作、检测异常行为,并满足合规性要求。以下是实现这一目标的主要方法。 #### 1. **使用 MySQL 原生日志文件** MySQL 提供了多种类型的日志文件,包括错误日志、查询日志(常规查询日志和慢查询日志)、二进制日志等。这些日志文件通常存储在服务器上的特定目录中,可以通过配置文件(如 `my.cnf` 或 `my.ini`)进行定义。 - **错误日志**:记录 MySQL 启动、运行和关闭期间的错误信息[^1]。 - **常规查询日志**:记录客户端连接、断开以及执行的 SQL 语句[^1]。 - **二进制日志**:记录所有更改数据数据的操作,可用于数据恢复和主从复制。 要将这些日志对接到日志审计系统,可以使用日志收集工具(如 Filebeat、Logstash 或 Fluentd)定期读取并传输日志文件内容到集中式日志管理平台(如 ELK Stack、Graylog 或 Splunk)。 #### 2. **启用 MySQL 审计插件(Audit Plugin)** MySQL 社区版和企业版均支持 **MySQL Enterprise Audit** 插件,该插件提供细粒度的审计功能,能够记录用户登录、SQL 查询、权限变更等事件。此插件生成的日志格式为 XML,便于解析和集成到日志审计系统中。 - 检查是否已启用审计插件: ```sql SHOW GLOBAL STATUS LIKE '%audit%'; ``` 如果返回结果中包含 `Audit_protocol_version` 和 `Audit_version`,则表示插件已加载[^2]。 - 配置审计插件: 在 `my.cnf` 中添加以下配置以启用插件: ```ini [mysqld] plugin-load-add=audit_log.so audit-log=FORCE_PLUS_PERMANENT ``` - 审计日志输出格式与路径: ```ini audit_log_format=NEW_JSON audit_log_file=/var/log/mysql/audit.log ``` 之后,可以使用日志采集工具将 `/var/log/mysql/audit.log` 文件发送至日志审计系统。 #### 3. **使用日志采集工具对接外部系统** 为了将 MySQL日志实时传输到日志审计系统,常用的日志采集工具有: - **Filebeat**:轻量级日志转发器,适合用于收集本地日志文件并发送到 Logstash 或 Elasticsearch。 - **Logstash**:强大的日志处理管道,支持多种输入、过滤和输出插件。 - **Fluentd**:开源的数据收集器,适用于统一日志层架构。 例如,使用 Filebeat 收集 MySQL 日志并发送到 Elasticsearch 的配置如下: ```yaml filebeat.inputs: - type: log paths: - /var/log/mysql/*.log output.elasticsearch: hosts: ["http://localhost:9200"] index: "mysql-logs-%{+yyyy.MM.dd}" ``` #### 4. **结合 SIEM 系统进行集中审计** 安全信息与事件管理(SIEM)系统(如 Splunk、QRadar、ArcSight)能够接收来自多个来源的日志,并进行关联分析、威胁检测和可视化展示。 - 将 MySQL 日志导入 SIEM 系统的方式包括: - 通过 syslog 协议将日志转发到 SIEM 服务器。 - 使用 API 接口直接推送日志数据。 - 通过数据库连接器(DB Connector)定期拉取日志表中的记录。 例如,在 MySQL 中创建一个专门用于审计的表,并通过触发器或应用程序写入操作日志,然后使用 SIEM 工具连接该数据库进行实时监控。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值