目的为了便于开发人员和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) |
MySQL数据库Alter database 处理逻辑MySQL源码中的BUG相关资讯 MySQL基础
- MySQL因为区分大小写而引起找不到 (09/08/2012 20:12:21)
- MySQL 执行计划解读 (09/07/2012 06:18:14)
- MySQL审计插件安装使用说明文档-- (08/09/2012 08:57:10)
| - MySQL 版本选择 (09/07/2012 06:18:58)
- MySQL Internal 笔记 (09/01/2012 16:34:19)
- MySQL的“[Warning] Invalid (old? (08/09/2012 08:55:01)
|
本文评论 查看全部评论 (0)