mysql安全-数据库审计(audit)

本文详细介绍了MySQL数据库的审计功能,包括audit插件的安装、audit.log日志文件的格式分析以及日志文件的控制方法。同时,文章提到了mysql audit的一个使用限制,即不记录load data infile操作。对于关注数据库安全和审计跟踪的读者,本文提供了实用的指导。

1 简介

    数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断。它通过对用户访问数据库行为的记录、分析和汇报,用来帮助用户事后生成合规报告、事故追根溯源,同时加强内外部数据库网络行为记录,提高数据资产安全。
    在MySQL数据库中(5.5版本),增加了一个新的插件:Audit plugin,用于对数据库连接和数据库操作进行审计。该插件在mysql5.6.20 企业版及其后续版本才比较完善。

2 audit插件安装

    可通过两种方式加载
    2.1 配置my.cnf文件
[mysqld]
plugin-load=audit_log.so
    如果想要在运行过程中该插件不被移除,配置如下
[mysqld]
plugin-load=audit_log.so
audit-log=FORCE_PLUS_PERMANENT
    该加载方式不会被注册到mysql.plugins表中,如果在my.cnf中移除配置选项将会导致审计失败。
    2.2 在mysql中动态加载
    进入mysql数据库执行如下sql语句
mysql> INSTALL PLUGIN audit_log SONAME 'audit_log.so';
    该选项会被注册到mysql.plugins表中,数据库后续的重启,该插件都会被加载。

    加载成功后查看状态

    注:演示使用的mysql版本为5.6.21企业版
    2.3 查看所有加载的插件
    可通过如下两个命令查看所有已经加载的插件
mysql> SHOW PLUGINS;
mysql> select * from INFORMATION_SCHEMA.PLUGINS;

    mysql> SHOW PLUGINS;

<think> 我们正在讨论MySQL开启数据库审计的方法。根据引用内容,有三种方法: 1. 使用MySQL自带的general log(审计日志记录粗糙) 2. 使用Percona Server for MySQL审计插件audit_log.so(适用于社区版) 3. 使用MariaDB的server_audit.so插件(需注意版本兼容性) 用户的问题是想查找MySQL开启数据库审计的方法,我们需要给出详细的步骤。 注意:用户可能使用的是MySQL社区版,因为企业版自带审计插件。 根据引用[1]和[2],我们可以提供两种主要方法: 方法一:使用MySQL的general log(简单但信息有限) 方法二:使用Percona的审计插件(推荐,功能更完整) 另外,引用[3]提到使用MariaDB的审计插件,但需要注意版本兼容性,否则可能导致数据库崩溃。 因此,我们重点介绍前两种方法,第三种方法由于风险较高,仅作为备选并提醒注意事项。 回答结构: 一、使用MySQL自带general log(方法一) 步骤:修改配置文件,开启general_log,设置日志文件路径,重启MySQL。 优缺点:简单但记录信息有限(只有时间和SQL语句,缺乏客户端信息等)。 二、使用Percona审计插件(方法二) 步骤:下载Percona Server for MySQL审计插件(audit_log.so),安装插件,配置参数,重启。 优缺点:记录详细,但需要额外安装插件。 三、使用MariaDB审计插件(方法三,谨慎使用) 步骤:从Maria官网下载对应版本的server_audit.so,拷贝到MySQL插件目录,安装插件并配置。 注意:必须确保MySQL与MariaDB版本兼容,否则可能导致崩溃。 最后,生成相关问题。 注意:引用标记要对应引用内容,引用[1]对应Percona方法,引用[2]对应general log方法,引用[3]对应MariaDB插件方法。 由于用户要求参考站内引用,我们在相应步骤后标注引用。 </think> 以下是MySQL开启数据库审计的三种主流方法,根据需求场景提供详细实施步骤: --- ### 一、使用MySQL原生general log(简易审计) **适用场景**:快速基础审计,无需额外安装 **优缺点**: ✅ 优点:操作简单,跨平台支持(Linux/Windows)[^2] ❌ 缺点:仅记录SQL语句和时间,缺乏客户端IP、用户等关键信息[^1] ```ini # 编辑配置文件 my.cnf [mysqld] general_log = ON # 开启审计 general_log_file = /var/log/mysql_audit.log # 日志路径 log_timestamps = SYSTEM # 使用系统时区 ``` ```bash service mysql restart # 重启生效[^2] ``` --- ### 二、安装Percona审计插件(推荐方案) **适用场景**:社区版MySQL的完整审计需求 **核心优势**:记录操作者IP、用户、数据库对象等全量信息[^1] #### 步骤: 1. **下载插件** 访问[Percona下载页](https://www.percona.com/downloads/),选择与MySQL版本匹配的`audit_log.so` 2. **安装插件** ```sql INSTALL PLUGIN audit_log SONAME 'audit_log.so'; SHOW PLUGINS; -- 验证安装 ``` 3. **配置参数** ```ini [mysqld] plugin-load = audit_log.so audit_log_format = JSON # JSON格式记录 audit_log_file = /var/log/percona_audit.log audit_log_policy = ALL # 审计所有操作 ``` 4. **重启服务** ```bash service mysql restart ``` > 📌 **日志示例**: > ```json > {"time":"2023-10-05T14:23:01Z", "user":"admin", "host":"192.168.1.10", > "db":"hr_db", "query":"DELETE FROM employees WHERE id=100"} > ``` --- ### 三、使用MariaDB审计插件(兼容方案) **适用场景**:MariaDB或兼容MySQL版本 **注意事项**:严格匹配MySQL与MariaDB版本(如MySQL 5.7对应MariaDB 5.5)[^3] #### 步骤: 1. 从[MariaDB官网](https://mariadb.org/download/)下载对应版本的`server_audit.so` 2. 复制到MySQL插件目录(通常为`/usr/lib/mysql/plugin/`) 3. 加载插件: ```sql INSTALL PLUGIN server_audit SONAME 'server_audit.so'; ``` 4. 配置参数: ```ini [mysqld] server_audit_logging = ON server_audit_events = 'CONNECT,QUERY' # 审计连接和查询 ``` --- ### 四、审计方案对比 | 维度 | 原生general log | Percona插件 | MariaDB插件 | |----------------|----------------|----------------|----------------| | 安装复杂度 | ⭐无需安装 | ⭐⭐需下载插件 | ⭐⭐⭐需版本匹配 | | 日志信息完整性 | ⭐ 基础SQL记录 | ⭐⭐⭐全量审计 | ⭐⭐中等级别 | | 性能影响 | ⭐⭐⭐低 | ⭐⭐中 | ⭐中高 | | 合规性支持 | ⭐ 有限 | ⭐⭐⭐ GDPR就绪 | ⭐⭐ PCI-DSS | > 💡 **推荐选择**: > - 开发测试环境 → 原生general log > - 生产环境合规审计 → Percona插件 > - MariaDB用户 → 官方插件 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值