GBase8a 审计管理
审计管理
1. 审计日志概述
审计日志用于记录用户的数据库操作,审计其行为,主要用于安全管理。审计日志将执行时间超过 long_query_time 值的SQL 记录下来,方便用户针对这些执行效率低下的SQL 语句进行分析、优化和改写,从而提高SQL 语句的执行效率。
2. 审计日志参数配置
操作场景
指导管理员开启或关闭审计日志。
操作方法
执行如下命令,开启审计日志。可以通过配置文件或 global 级控制。
SET GLOBAL audit_log = 1;
执行如下命令,设定审计日志存放在系统表中。
SET GLOBAL log_output = 'table';
执行如下命令,关闭审计日志。默认为关闭。
SET GLOBAL audit_log = 0;
3. 设置审计策略
操作场景
审计策略用来控制审计日志记录的策略,可以设置审计日志只记录某些指定的操作
或者某些固定用户的操作。本节将指导管理员创建、修改、删除审计策略。
操作方法
创建审计策略
创建审计策略的语法规则如下所示:
CREATE AUDIT POLICY <audit_policy_name> [(<audit_policy_item> = <value>[,<audit_policy_item> = <value>])];
表 3-1 参数说明
参数名称 | 描 述 |
| audit_policy_name | 为审计策略的名称,不区分大小写,存储时小写保存,可包 括大小写字符、数字和下划线,不包含特殊符号,审计名称 的首字符必须是英文字符。 |
| audit_policy_item | 为审计策略项目,审计策略项目名称不区分大小写。 |
表 3-2 审计策略项目说明
项目名称 | 取值&含义 |
| 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_type 指定的 object | |
Sql_comman ds | “”:不限制,默认值 |
INSERT, DELETE, UPDATE, LOAD, CREATE_USER, CREATE_D B, CREATE_TABLE, CREATE_VIEW, CREATE_INDEX, CREATE_ PROCEDURE, CREATE_FUNCTION, RENAME_USER, ALTER_D B, ALTER_TABLE, ALTER_PROCEDURE, ALTER_FUNCTION, A LTER_EVENT, DROP_USER, DROP_DB, DROP_TABLE, DROP_V IEW, DROP_INDEX, DROP_PROCEDURE, DROP_FUNCTION, DR OP_EVENT, TRUNCATE, GRANT, REVOKE, SELECT,OTHERS: 其中的一种或多种类型,多个类型间以逗号‘,’连接,且不添加空格 | |
Long_query_ time | <secs>:最小查询秒数,可带 6 位小数,精确到微秒,默认值 0,取 值范围为 0~31536000s |
| Status | “”:不限制,默认不限制。 |
| SUCCESS:执行成功 | |
| FAILED:执行失败 |
修改审计策略
修改审计策略的语法规则如下所示:
ALTER AUDIT POLICY <audit_policy_name> SET [(]<audit_policy_item> = <value>[,<audit_policy_item> = <value>][)];
表 3-3 参数说明
参数名称 | 描 述 |
| audit_policy_name | 为审计策略的名称,不区分大小写 |
| audit_policy_item | 为审计策略项目,取值内容与创建审计策略中描述相同。 |
删除审计策略
删除审计策略语法规则如下:
DROP AUDIT POLICY <audit_policy_name>;
4. 存储审计日志
审计日志的信息存储在系统表 gbase.audit_log 或日志gclusterd-audit.log 中,依赖于
全局级变量 log_output 的配置;gbased-audit.log 日志若不配置默认存储在
$GCLUSTER_BASE/log/gcluster/目录下。
使用约束
GBase 8a MPP Cluster 审计日志使用的约束条件:
审计日志用于记录所有的SQL 操作。对于包含结果集行数的统计操作,例如 SELECT、DELETE、INSERT、UPDATE、MERGE 和ALTER;
清空audit_log 时,需要使用TRUNCATE SELF audit_log 语句。
查看gclusterdb 下的audit_log_express 可看到所有节点上发生的日志。
5. 审计日志高可用
GBase 8a MPP Cluster 具有审计日志高可用机制,为实现审计日志的高可用机制,集群安装或升级时自动在gclusterdb 库下创建 EXPRESS 引擎随机分布表audit_log_express,并自动创建定时导出事件,将gbase 库中的audit_log 表内容定时导出到gclusterdb 库中的audit_log_express 表。
在多 VC 版本下,内置自动导出 event 功能失效,需要用户手动删除后重新创建 event。
CREATE EVENT "import_audit_log"
ON SCHEDULE EVERY 60 MINUTE
STARTS '2017-12-01 00:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
LOCAL
DO
begin
declare errno int;
declare msg text;
declare exit handler for sqlexception
begin
get diagnostics condition 1 errno = gbase_errno, msg = message_text;
create table if not exists import_audit_log_errors(
err_time datetime,
hostname varchar(64),
err_no int,
msg_txt varchar(1024)
) CHARSET=utf8mb4;
insert into import_audit_log_errors values (now(), @@hostname,
errno, substr(msg, 0, 1024));
end;
create table if not exists audit_log_express (
hostname varchar(64),
thread_id int,
taskid bigint,
start_time datetime,
uid bigint, user varchar(16),
host_ip varchar(32),
query_time time, rows bigint,
table_list varchar(4096),
sql_text varchar(8191),
sql_type varchar(16),
sql_command varchar(32),
operators varchar(256),
status varchar(16),
conn_type varchar(16)
) CHARSET=utf8mb4;
set self sql_mode = '';
create self table gbase.audit_log_bak2 like gbase.audit_log;
set self sql_mode = default;
rename self table gbase.audit_log to gbase.audit_log_bak1,
gbase.audit_log_bak2 to gbase.audit_log;
set _gbase_query_path = on;
insert into audit_log_express select
@@hostname as hostname,
thread_id,
taskid,
start_time,
uid,
user,
host_ip,
query_time,
rows,
substr(table_list, 0, 4096),
substr(sql_text, 0, 8191),
sql_type,
sql_command,
operators,
status,
conn_type
from gbase.audit_log_bak1;
drop self table gbase.audit_log_bak1;
end6. 使用示例
示例
使用系统表查看审计日志。
$ gccli -uroot -p
Enter password:
GBase client 9.5.3.17.117651. Copyright (c) 2004-2020, GBase. All Rights
Reserved.
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: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)
评论
热门帖子
- 12025-12-01浏览数:182611
- 22023-05-09浏览数:24814
- 42023-09-25浏览数:18325
- 52020-05-11浏览数:17320