MySQL审计插件安装使用说明文档
目的
为了便于开发人员和DBA安装和使用MySQL审计插件,并对审计的使用和审计粒度有更全面的理解。本文对审计插件的设计思想、审计粒度、审计配置说明、安装使用、其他内容进行详细的描述。一方面便于后续的维护和开发,另一方面对于使用提供便利的查询。
设计思想 www.2cto.com
MySQL的审计接口为开发审计插件提供了有利的条件,基于MySQL审计接口,参考General log设计思想,将审计插件的审计类型定义了:FILE和TABLE两种类型,用于将审计的内容分别写入日志文件或数据库表。此外,对审计的粒度进行划分,不仅根据操作命令的类型进行划分,并对Query命令类型进行进一步的细化分,将DDL、DML、DCL三种类型不同SQL语句类型进行划分;对特定的用户进行审计,仅对指定的用户审计,结合审计的粒度实现对用户行为的审计;对特定的对象(数据库、数据表)进行审计,目前仅给出配置,源码中暂时没有实现。
此外,审计的粒度采用按位标示,并通过按位覆盖可以进行自定义的审计粒度。
审计粒度
审计插件将审计的粒度细化到具体的SQL语句,主要包括:create、drop、alter、ddl(包括create、drop、alter)、insert、delete、update、modify(包括insert、delete、update、replace)、select、dml(包括insert、delete、update、select)、grant、revoke、dcl(包括grant、revoke)、set、cmd(包括ddl、dml、dcl、set)、connect、quit、connection(包括connect、quit)、server(包括修改server相关的命令操作,如init db、sleep等操作)、full(包括以上所有操作)、all(包括所有操作,包括预留的所有的审计粒度的扩展)、none(不进行审计),这些粒度在配置文件中的以audit_为前缀,值为1/0(或on/off)。为了更精确的控制某些命令,提供audit_ops参数,该参数的值是整数,通过整数的二进制位来控制具体的审计粒度。
具体的审计粒度对应整数的二进制位如下所示:
粒度
位值
AUDIT_ALL
(~AUDIT_NONE)
AUDIT_NONE
(ulonglong)0
AUDIT_CREATE
(ulonglong)1
AUDIT_ALTER
(AUDIT_CREATE << 1)
AUDIT_DROP
(AUDIT_CREATE << 2)
AUDIT_DDL
(AUDIT_CREATE | AUDIT_ALTER | AUDIT_DROP)
AUDIT_INSERT www.2cto.com
(AUDIT_CREATE << 3)
AUDIT_UPDATE
(AUDIT_CREATE << 4)
AUDIT_REPLACE
(AUDIT_CREATE << 5)
AUDIT_DELETE
(AUDIT_CREATE << 6)
AUDIT_MODIFY
(AUDIT_INSERT | AUDIT_UPDATE | AUDIT_DELETE | AUDIT_REPLACE)
AUDIT_SELECT
(AUDIT_CREATE << 7)
AUDIT_DML
(AUDIT_MODIFY | AUDIT_SELECT)
AUDIT_GRANT
(AUDIT_CREATE << 8)
AUDIT_REV