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)

  • 1
  • 2
  • 3
  • 下一页

相关内容