一项一项教你测等保20——MySQL安全审计
一、前言
只要是信息系统,就需要运行所必需的系统环境,而Windows和Linux系统是现在使用最为广泛的主机操作系统,前边我们已经讲了等保测评2.0主机系统方面的测评项要求,大家有兴趣的可以翻阅我之前的文章。
而信息系统只要运行,就会产生数据,产生数据就需要存储,数据库就是另一个所有信息系统所必需的,数据是信息系统最重要的东西,所以数据库的安全就是保障数据安全的重要的屏障,现在市面上有许多数据库产品,其中另一个使用比较广泛的就是MySQL数据库,今天我们就来讲一讲等保测评2.0中对MySQL数据库有哪些安全要求。
二、测评项
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
d)应对审计进程进行保护,防止未经授权的中断。
三、测评项a
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
对于比较成熟和常用的软件,很少不自带审计功能,MySQL数据库也不例外,它的审计功能——general_log是安装MySQL数据库时就自带的,然而默认状态下则是关闭的,因为它会记录下所有MySQL数据库所执行的SQL语句,所以会占用非常大的服务器和数据库资源。
我们可以通过语句:
show global variables like '%general%'
来查看MySQL数据库是否开启了general_log审计功能,如下图所示:

general_log审计功能
果然MySQL数据库是默认关闭general_log审计功能的,下面一行则表示审计日志general_log_file所存放的位置。
要想开启general_log审计功能,我们可以使用语句:
set global general_log = on;
执行后我们再使用前边的查看语句查看general_log审计功能的状态,已经变成了“ON”,如下图所示:

开启general_log审计功能
但是这只是临时性的开启,当数据库重新启动时general_log审计功能又会变回关闭状态,要想永久开启就必须修改配置文件“my.cnf”中的“general_log”参数为“ON”,就可以永久开启了。
除此之外,我们也可以通过插件来实现审计功能。
MariaDB的Audit Plugin插件
我们可以使用语句:
SHOW GLOBAL VARIABLES LIKE 'server_audit%';
来查看该插件是否启用,当然只有在一些MySQL数据库版本之上才可以使用此插件,这里判断Audit Plugin插件是否开启,只需查看server_audit_logging参数是否为“ON”。

Audit Plugin插件配置信息
四、测评项b
b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
不管是自带的general_log审计功能还是插件审计功能,审计记录所包含的内容都符合该测评项所要求的内容,我们以general_log审计功能所记录的日志为例,如下所示:
| 2020-11-16 10:00:12 | root[root] @ localhost [] | 2 | 1132333306 | Query | select * from user
其中包括日期和时间、用户、事件类型为“query”查询,具体语句为“select * from user”等。
五、测评项c
c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
我们可以使用语句:
show variables like 'log_output';
来查看审计记录的保存方式,“file”表示文件存储,“table”表示数据表存储,采用什么存储方式就需要查看对应文件的权限,只允许数据库管理员之类的人员才可以访问、修改等。

审计记录存储方式
备份的话,就直接查看备份文件就可以了,再看看备份策略,符合定期备份的要求就可以了。
六、测评项d
d)应对审计进程进行保护,防止未经授权的中断。
这个就比较简单了,有两个地方可以对审计进程进行配置。一个是my.cnf,这里就需要操作系统上对配置文件的权限进行限制,只允许数据库管理有权限进行修改。(同时也要限制MySQL中的file_priv权限。)另外一个就是那些变量了,似乎是需要super权限才可以设置全局变量,那么这里的话就需要查看super权限给了哪些账户。
以上就是一项一项教你测等保2.0——MySQL安全审计的所有内容,希望对大家有所帮助,欢迎关注@科技兴了解更多科技尤其是网络安全方面的资讯与知识。
开箱即用的 MySQL 审核平台
大家好。
程序员日常工作接触最多的可能就是 SQL 了,而 SQL 语句的编写是很考验水平的。如果让有问题的 SQL 变更发布到线上,可能会直接造成线上服务的不可用,所以 SQL 经过团队成员的审核校对是很有必要的。
今天要推荐的工具 Yearning,是一个开箱即用的 MySQL Web 审核平台,提供查询审计,SQL审核,SQL回滚,自定义工作流等多种功能。
Yearning 拥有以下功能:
1、自动化SQL语句审核,可对SQL进行自动检测并执行
2、 DDL/DML语句执行后自动生成回滚语句
3、 审核/查询 审计功能
4、 支持LDAP登录/钉钉及邮件消息推送
5、 支持自定义审核工作流
6、 支持细粒度权限分配
更全的功能如下图:
Yearning 使用 Go 语言开发,同时 Yearning 不依赖于任何第三方 SQL 审核工具作为审核引擎,内部已自己实现审核/回滚相关逻辑,仅依赖 Mysql 数据库存储相应的流程和使用情况。所以 Yearning 安装也很简单,只需要下载官方的二进制包即可启动,开箱即用。以下是 Yearning 的几个常用操作界面:
1、Dashboard
2、审核
3、SQL 语法及规则检测
更多项目详情请查看如下链接。
开源项目地址:https://github.com/cookieY/Yearning
相关问答
MariaDB对比MySQL,性能、功能与适用场景全面分析-ZOL问答
从MySQL5.7版本开始,MySQL引入了基于RFC7159标准的原生JSON数据类型。这一特性使得用户能够以高效的方式访问和操作存储在JSON文档中的数据。然而...
