全量审计日志 #
背景信息 #
全量审计日志,是指开启该功能后,系统将记录所有执行的 SQL 语句,并包含语句对应的数据库、用户、访问地址,访问耗时等信息,便于企业进行审计操作。
参数解释 #
- general_query_log:全量审计日志仅有一个参数,值为 true 时启用全量日志,值为 false 时停用该功能。
前提条件 #
与“慢查询日志”功能相似,全量审计日志的实现也是基于 Agent 的,因此该功能仅适用于 DBPlusEngine-Proxy 且启用 Agent 的场景。
配置示例 #
全量审计日志是基于 Agent 的功能,因此以下配置位于 agent.yaml 中:
plugins:
logging:
BaseLogging:
props:
# Whether to enable slow query log.
slow-query-log: true
# Long query threshold, in milliseconds.
long-query-time: 5000
# Whether to enable general query log.
# general-query-log: false
其中,general-query-log 配置为 false,表示不启用全量日志。 当需要全量日志时,可通过如下任意一种方式启用:
- 将 general-query-log 配置 true 并重新启动 DBPlusEngine-Proxy。
- 执行 DistSQL:
SET VARIABLE general_query_log = true;
。
全量审计日志格式 #
全量审计日志格式如下:
db: {database} user: {user} host: {host} query_time: {query time}
{sql}
- db:数据库名称;
- user:当前连接中使用的用户名称;
- host:客户端访问地址;
- query_time:SQL 执行耗时,单位为 ms;
- sql:客户端发送的 SQL 语句。
例如:
[INFO ] 2022-07-01 00:00:00.000 [ShardingSphere-Command-0] GENERAL-QUERY - db: sharding_db user: root host: 127.0.0.1 query_time: 145
CREATE TABLE `t_order` (
`order_id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`status` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (`order_id`)
)