GBase 8a集群审计日志使用介绍
1.简介
GBase 8a MPP Cluster 的审计日志可根据审计策略配置进行数据库操作的记录和审计,同时也可以提供慢SQL的记录功能,方面用户进行 SQL 语句的分析优化。
审计日志记录的主要内容如下:
thread_id: 线程号,同 processlist 中的 ID;
taskid:每个 sql 任务编号;
start_time:开始执行时间;
end_time:结束执行时间;
user_host:登录的用户和 IP,显示格式为: priv_user[user]@hostname[IP];
user:用户名;
host_ip: 用户登录端 IP 地址;
query_time:执行语句所用时间;
rows:行数;
db:执行语句所针对的数据库;
table_list: 涉及表,格式:`<db>`.`<tb>`[,...];
sql_text:记录执行用时大于 long_query_time 设定值的 SQL 语句;
sql_type:sql 类型,如 DDL、DML、DQL、OTHERS;
sql_command: sql 命令类型,如 SELECT、UPDATE,INSERT,LOAD 等;
operators: 涉及的算子,比如 JOIN、WHERE、GROUP、HAVING 等;
status:sql 执行状态,如 SUCCESS、FAILED、KILLED 等;
conn_type:用户登录方式(CAPI、ODBC、JDBC、ADO.NET、STUDIO);
其中 sql_command 的取值范围为:INSERT、DELETE、UPDATE、LOAD、CREATE USER、CREATE DB、CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PROCEDURE、CREATE FUNCTION、RENAME USER、ALTER DB、ALTER TABLE、ALTER PROCEDURE、ALTER FUNCTION、ALTER EVENT、DROP USER、DROP DB、DROP TABLE、DROP VIEW、DROP INDEX、DROP PROCEDURE、DROP FUNCTION、
DROP EVENT、TRUNCATE、GRANT、REVOKE、SELECT 和 OTHERS。
operators 的取值范围为:START_WITH、CONNECT_BY、JOIN、WHERE、 GROUP、OLAP_GROUP、HAVING、OLAP_FUNC、DISTINCT、ORDER 和 LIMIT。若一个 SQL 涉及多个算子,各算子之间用逗号分割。
2.配置参数
可以使用如下配置方式开启或关闭审计日志:
全局级变量(默认为 0,即关闭审计日志)
SET GLOBAL audit_log = 0;
或
SET GLOBAL audit_log = 1;
配置文件中设置(数据库服务重启仍有效)
在管理节点上/opt/gcluster/config/gbase_8a_gcluster.cnf配置文件中添加如下配置参数:
audit_log=1
log_output = 'table'
开启审计日志后,需要创建审计策略才能进行审计日志的记录。
3.创建审计策略
创建审计策略的语法规则如下所示:
CREATE AUDIT POLICY <audit_policy_name> [(<audit_policy_item> =
<value>[,<audit_policy_item> = <value>])];
其中 audit_policy_name 为审计策略的名称,不区分大小写,存储时小写保存,可包括字母、数字和下划线,不能包含特殊符号,数字不能作为第一个字符;audit_policy_item 为审计策略项目,审计策略项目名称不区分大小写,目前支持的审计策略项目包括:
| 项目名称 | 取值&含义 |
| Enable | Y:启用,默认值 |
| N:禁用 | |
| Hosts | “”:不限制,默认值 |
<host>:严格匹配 host, 支持空格“ ”分隔的 host 列表,host 可使用“%”和“_”做通配符 | |
| User | “”:不限制,默认值 |
| <user>:严格匹配 user,区分大小写 | |
| Db | “”:不限制,默认值 |
| <db>:严格匹配 db | |
| Obj_type | “”:不限制,默认值 |
| TABLE(VIEW):Object 为表(视图) | |
| PROCEDURE:Object 为存储过程 | |
| FUNCTION:Object 为函数 | |
| Object | “”:不限制,默认值 |
| <object>:匹配 Obj_tpe 指定的 object | |
| Sql_commands | “”:不限制,默认值 |
INSERT, DELETE, UPDATE, LOAD, CREATE_USER, CREATE_DB, CREATE_TABLE, CREATE_VIEW, CREATE_INDEX, CREATE_PROCEDURE, CREATE_FUNCTION, RENAME_USER, ALTER_DB, ALTER_TABLE, ALTER_PROCEDURE, ALTER_FUNCTION, ALTER_EVENT, DROP_USER, DROP_DB, DROP_TABLE, DROP_VIEW, DROP_INDEX, DROP_PROCEDURE, DROP_FUNCTION, DROP_EVENT, TRUNCATE, GRANT, REVOKE, SELECT, OTHERS: 其中的一种或多种类型,多个类型间以逗号‘ ,’连接, 且不添加空格 | |
Long_query_time
| <secs>:最小查询秒数,可带 6 位小数,精确到微秒, 默认值 0,取值范围为 0~31536000 |
| Status | “”:不限制,默认值 |
| SUCCESS:执行成功 | |
| FAILED:执行失败 |
4.修改审计策略
修改审计策略的语法规则如下:
ALTER AUDIT POLICY <audit_policy_name> SET [(]<audit_policy_item> = <value>[,<audit_policy_item> = <value>][)];
其中:
audit_policy_name 为审计策略的名称,不区分大小写;
audit_policy_item 为审计策略项目,取值内容与创建审计策略中描述相同
5.删除审计策略
删除审计策略语法规则如下:
DROP AUDIT POLICY <audit_policy_name>;
6.使用示例
示例 1:使用系统表查看审计日志。
gbase> SET long_query_time = 0;
Query OK, 0 rows affected
gbase> SET GLOBAL audit_log = 1;
Query OK, 0 rows affected
gbase>CREATE AUDIT POLICY audit_policy_1 ( Enable = 'Y' );
Query OK, 0 rows affected
gbase> SET GLOBAL log_output = 'table';
Query OK, 0 rows affected
gbase> CREATE USER u_sj identified by 'u_sj';
Query OK, 0 rows affected
gbase> GRANT ALL ON *.* TO u_sj;
Query OK, 0 rows affected
gbase> CREATE DATABASE testSJ;
Query OK, 1 row affected
gbase> USE testSJ;
Query OK, 0 rows affected
gbase> CREATE TABLE t1(i int);
Query OK, 0 rows affected
gbase> INSERT INTO t1 VALUES (1),(2);
Query OK, 2 rows affected
gbase> SELECT start_time,user_host,query_time,rows,LEFT(sql_text, 30), conn_type FROM
gbase.audit_log;
+---------------------+----------------------------------+
| start_time | user_host |
+---------------------+----------------------------------+
| 2021-06-16 10:40:24 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:24 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:24 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:24 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:24 | root[root] @ localhost [] |
| 2021-06-16 10:40:33 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:33 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:33 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:32 | root[root] @ localhost [] |
| 2021-06-16 10:40:44 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:44 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:44 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:44 | root[root] @ localhost [] |
| 2021-06-16 10:40:48 | gbase[gbase] @ [192.168.146.24] |
| 2021-06-16 10:40:49 | gbase[gbase] @ [192.168.146.24] |
| 2021-06-16 10:40:49 | gbase[gbase] @ [192.168.146.24] |
| 2021-06-16 10:40:57 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:57 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:57 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:57 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:40:57 | root[root] @ localhost [] |
| 2021-06-16 10:41:05 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:05 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:05 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:05 | root[root] @ localhost [] |
| 2021-06-16 10:41:17 | gbase[gbase] @ [192.168.146.24] |
| 2021-06-16 10:41:17 | gbase[gbase] @ [192.168.146.24] |
| 2021-06-16 10:41:17 | gbase[gbase] @ [192.168.146.24] |
| 2021-06-16 10:41:17 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:17 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:17 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:17 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:17 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:17 | root[root] @ localhost [] |
| 2021-06-16 10:41:29 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:29 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:29 | root[root] @ [192.168.146.24] |
| 2021-06-16 10:41:29 | root[root] @ localhost [] |
| 2021-06-16 10:41:43 | root[root] @ localhost [] |
+---------------------+----------------------------------+
+-----------------+------+--------------------------------+-----------+
| query_time | rows | LEFT(sql_text, 30) | conn_type |
+-----------------+------+--------------------------------+-----------+
| 00:00:00.000012 | 0 | Ping | CAPI |
| 00:00:00.000115 | 0 | SET NAMES utf8mb4 | CAPI |
| 00:00:00.000164 | 0 | SET SELF SCN = 0 | CAPI |
| 00:00:00.000094 | 0 | SET SELF GLOBAL log_output = | CAPI |
| 00:00:00.239863 | 0 | SET GLOBAL log_output = 'table | ODBC |
| 00:00:00.000009 | 0 | Ping | CAPI |
| 00:00:00.000143 | 0 | SET SELF SCN = 0 | CAPI |
| 00:00:01.149579 | 0 | CREATE GCLUSTER_LOCAL USER "u_ | CAPI |
| 00:00:04.376179 | 0 | CREATE USER u_sj identified by | ODBC |
| 00:00:00.000019 | 0 | Ping | CAPI |
| 00:00:00.000207 | 0 | SET SELF SCN = 0 | CAPI |
| 00:00:00.057846 | 0 | GRANT /*+vcid*/ GCLUSTER_LOCAL | CAPI |
| 00:00:00.266514 | 0 | GRANT ALL ON *.* TO u_sj | ODBC |
| 00:00:00.001372 | 0 | Connect | CAPI |
| 00:00:00.000005 | 0 | Ping | CAPI |
| 00:00:00.000002 | 0 | Quit | CAPI |
| 00:00:00.000008 | 0 | Ping | CAPI |
| 00:00:00.000090 | 0 | SET NAMES utf8 | CAPI |
| 00:00:00.000147 | 0 | SET SELF SCN = 9259 | CAPI |
| 00:00:00.261615 | 0 | CREATE GCLUSTER_LOCAL DATABASE | CAPI |
| 00:00:00.965256 | 0 | CREATE DATABASE testSJ | ODBC |
| 00:00:00.000018 | 0 | Ping | CAPI |
| 00:00:00.000042 | 0 | Init VC Name | CAPI |
| 00:00:00.000058 | 0 | Init DB | CAPI |
| 00:00:00.014822 | 0 | USE testSJ | ODBC |
| 00:00:00.004341 | 0 | Connect | CAPI |
| 00:00:00.032791 | 0 | select table_id from informati | CAPI |
| 00:00:00.000003 | 0 | Quit | CAPI |
| 00:00:00.000038 | 0 | Ping | CAPI |
| 00:00:00.000046 | 0 | Init VC Name | CAPI |
| 00:00:00.000070 | 0 | Init DB | CAPI |
| 00:00:00.000547 | 0 | SET SELF SCN = 9260 | CAPI |
| 00:00:00.781898 | 0 | CREATE GCLUSTER_LOCAL TABLE | CAPI |
| 00:00:02.731924 | 0 | CREATE TABLE t1(i int) | ODBC |
| 00:00:00.000132 | 0 | commit | CAPI |
| 00:00:00.000614 | 0 | set autocommit=1 | CAPI |
| 00:00:00.000175 | 0 | set autocommit=1 | CAPI |
| 00:00:00.200714 | 2 | INSERT INTO t1 VALUES (1),(2) | ODBC |
| 00:00:00.000530 | 38 | SELECT start_time,user_host,qu | ODBC |
+-----------------+------+--------------------------------+-----------+
39 rows in set (Elapsed: 00:00:00.00)
gbase> INSERT INTO t1 SELECT * FROM t1;
Query OK, 2 rows affected
gbase> UPDATE t1 SET i = 3;
Query OK, 4 rows affected
gbase> DELETE FROM t1;
Query OK, 4 rows affected
gbase> SELECT start_time,user_host,query_time,rows, LEFT(sql_text, 30), conn_type
FROM gbase.audit_log;
+---------------------+--------------------------------+
| start_time | user_host |
+---------------------+--------------------------------+
| 2021-06-16 11:17:18 | root[root] @ localhost [] |
| 2021-06-16 11:18:09 | root[root] @ localhost [] |
| 2021-06-16 11:18:21 | root[root] @ [192.168.146.24] |
| 2021-06-16 11:18:21 | root[root] @ [192.168.146.24] |
| 2021-06-16 11:18:21 | root[root] @ [192.168.146.24] |
| 2021-06-16 11:18:20 | root[root] @ localhost [] |
| 2021-06-16 11:18:29 | root[root] @ [192.168.146.24] |
| 2021-06-16 11:18:29 | root[root] @ [192.168.146.24] |
| 2021-06-16 11:18:29 | root[root] @ [192.168.146.24] |
| 2021-06-16 11:18:28 | root[root] @ localhost [] |
+---------------------+--------------------------------+
+-----------------+------+--------------------------------+-----------+
| query_time | rows | LEFT(sql_text, 30) | conn_type |
+-----------------+------+--------------------------------+-----------+
| 00:00:00.003119 | 0 | truncate self table gbase.audi | ODBC |
| 00:00:02.090188 | 2 | INSERT INTO t1 SELECT * FROM t | ODBC |
| 00:00:00.000095 | 0 | commit | CAPI |
| 00:00:00.000272 | 0 | set autocommit=1 | CAPI |
| 00:00:00.000416 | 0 | set autocommit=1 | CAPI |
| 00:00:01.108768 | 4 | UPDATE t1 SET i = 3 | ODBC |
| 00:00:00.000057 | 0 | commit | CAPI |
| 00:00:00.000198 | 0 | set autocommit=1 | CAPI |
| 00:00:00.000899 | 0 | set autocommit=1 | CAPI |
| 00:00:00.396723 | 4 | DELETE FROM t1 | ODBC |
+-----------------+------+--------------------------------+-----------+
10 rows in set (Elapsed: 00:00:00.00)
7.审计日志高可用
为实现审计日志的高可用机制,集群安装或升级时自动在 gclusterdb 库下创建 EXPRESS 引擎随机分布表 audit_log_express,并自动创建定时导出事件,将 gbase 库中的 audit_log 表内容定时导出到 gclusterdb 库中的audit_log_express 表。
热门帖子
- 12025-12-01浏览数:182762
- 22023-05-09浏览数:25056
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528