MySQL审计插件安装使用说明文档
MySQL审计插件安装使用说明文档
目的
为了便于开发人员和DBA安装和使用MySQL审计插件,并对审计的使用和审计粒度有更全面的理解。本文对审计插件的设计思想、审计粒度、审计配置说明、安装使用、其他内容进行详细的描述。一方面便于后续的维护和开发,另一方面对于使用提供便利的查询。
设计思想
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 |
(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_REVOKE |
(AUDIT_CREATE << 9) |
AUDIT_DCL |
(AUDIT_GRANT | AUDIT_REVOKE) |
AUDIT_SET |
(AUDIT_CREATE << 10) |
AUDIT_CMD |
(AUDIT_DDL | AUDIT_DML | AUDIT_DCL | AUDIT_SET) |
AUDIT_CONNECT |
(AUDIT_CREATE << 11) |
AUDIT_QUIT |
(AUDIT_CREATE << 12) |
AUDIT_CHANGE_USER |
(AUDIT_CREATE << 13) |
AUDIT_CONNECTION |
(AUDIT_CONNECT | AUDIT_QUIT | AUDIT_CHANGE_USER) |
AUDIT_FULL |
(AUDIT_CMD | AUDIT_CONNECTION) |
AUDIT_SLEEP |
(AUDIT_CREATE << 16) |
AUDIT_INIT_DB |
(AUDIT_CREATE << 17) |
AUDIT_FIELD_LIST |
(AUDIT_CREATE << 18) |
AUDIT_REFRESH |
(AUDIT_CREATE << 19) |
AUDIT_SHUTDOWN |
(AUDIT_CREATE << 20) |
AUDIT_STATISTICS |
(AUDIT_CREATE << 21) |
AUDIT_PROCESSLIST |
(AUDIT_CREATE << 22) |
AUDIT_KILL |
(AUDIT_CREATE << 23) |
AUDIT_DEBUG |
(AUDIT_CREATE << 24) |
AUDIT_PING |
(AUDIT_CREATE << 25) |
AUDIT_TIME |
(AUDIT_CREATE << 26) |
AUDIT_DELAY_INSERT |
(AUDIT_CREATE << 27) |
AUDIT_BINLOG_DUMP |
(AUDIT_CREATE << 28) |
AUDIT_TABLE_DUMP |
(AUDIT_CREATE << 29) |
AUDIT_CONNECT_OUT |
(AUDIT_CREATE << 30) |
AUDIT_REGISTER_SLAVE |
(AUDIT_CREATE << 31) |
AUDIT_PREPARE |
(AUDIT_CREATE << 32) |
AUDIT_EXECUTE |
(AUDIT_CREATE << 33) |
AUDIT_LONG_DATA |
(AUDIT_CREATE << 34) |
AUDIT_CLOSE_STMT |
(AUDIT_CREATE << 35) |
AUDIT_RESET_STMT |
(AUDIT_CREATE << 36) |
AUDIT_SET_OPTION |
(AUDIT_CREATE << 37) |
AUDIT_FETCH |
(AUDIT_CREATE << 38) |
AUDIT_DAEMON |
(AUDIT_CREATE << 39) |
AUDIT_ERROR |
(AUDIT_CREATE << 40) |
AUDIT_SERVER |
(~AUDIT_FULL) |
|
评论暂时关闭