文档下载建议反馈入口

  • 创建审计策略
  • 修改审计策略
  • 查看审计策略
  • 删除审计策略

审计策略管理

数据库审计以安全事件为中心,以全面审计和精确审计为基础,实时记录数据库活动,对数据库操作进行细粒度审计的合规性管理。通过记录、分析和汇报用户访问数据库的行为,帮助用户事后生成合规报告、追溯事故根源。通过大数据搜索技术提供高效查询审计报告,定位事件原因,以便日后查询、分析、过滤,加强内外部数据库网络行为的监控与审计,提高数据资产安全。

KaiwuDB 支持监控和记录包括管理员在内的所有用户操作,提供三个级别的审计:

  • 系统级审计:系统自动启动系统级审计,无需额外配置
  • 语句级审计:审计数据库管理语句的执行,包括 DDL 语句(如创建用户、创建表等)以及系统管理操作(如作业控制、会话管理等)
  • 对象级审计:审计 DML 语句的执行,如对特定表或视图进行的查询、插入、更新、删除等数据操作

下表列出 KaiwuDB 支持的系统级审计操作。

对象操作描述
DATABASECREATE创建数据库。
ALTER修改数据库。
DROP删除数据库。
IMPORT导入数据库。
EXPORT导出数据库。
BACKUP备份数据库。
RESTORE恢复数据库。
TABLECREATE创建表。
ALTER修改表。
DROP删除表。
TRUNCATE清空表。
说明
TRUNCATE 操作只适用于关系数据库。
IMPORT导入表数据。
EXPORT导出表数据。
BACKUP备份表。
RESTORE恢复表。
INDEXCREATE创建索引。
ALTER修改索引。
DROP删除索引。
JOBCANCEL取消任务。
PAUSE暂停任务。
RESUME恢复任务。
PIPECREATE创建数据推送。
ALTER修改数据推送。
DROP删除数据推送。
PUBLICATIONCREATE创建数据发布。
ALTER修改数据发布。
DROP删除数据发布。
SCHEDULECREATE创建计划。
ALTER修改计划。
DROP删除计划。
PAUSE暂停计划。
RESUME恢复计划。
STREAMCREATE创建流计算。
ALTER修改流计算。
DROP删除流计算。
SUBSCRIPTIONCREATE创建数据订阅。
ALTER修改数据订阅。
DROP删除数据订阅。
TS ENGINEBACKUP备份时序引擎。
RESTORE恢复时序引擎。
NODERESTART重启节点。
DECOMMISON退役节点。
RECOMMISION复役节点。
QUIT节点退出。
JOIN节点加入。
CONNECTLOGIN用户登录。
LOGOUT用户登出。
CLUSTER SETTINGSET设置集群参数。
RESET重置集群参数。

用户需要通过 SQL 语句创建、启用相应的语句级和对象级审计策略。

下表列出 KaiwuDB 支持的语句级审计操作。

对象关系数据库时序数据库
USER- CREATE USER
- ALTER USER
- DROP USER
- CREATE USER
- ALTER USER
- DROP USER
ROLE- CREATE ROLE
- ALTER ROLE
- GRANT ROLE
- REVOKE ROLE
- DROP ROLE
- CREATE ROLE
- ALTER ROLE
- GRANT ROLE
- REVOKE ROLE
- DROP ROLE
SCHEMA- CREATE SCHEMA
- DROP SCHEMA
-
VIEW- CREATE VIEW
- ALTER VIEW
- DROP VIEW
-
SEQUENCE- CREATE SEQUENCE
- ALTER SEQUENCE
- DROP SEQUENCE
-
PRIVILEGE- GRANT PRIVILEGE
- REVOKE PRIVILEGE
- GRANT PRIVILEGE
- REVOKE PRIVILEGE
AUDIT- CREATE AUDIT
- ALTER AUDIT
- DROP AUDIT
- CREATE AUDIT
- ALTER AUDIT
- DROP AUDIT
RANGEALTER RANGEALTER RANGE
QUERY- CANCEL QUERY
- EXPLAIN QUERY
- CANCEL QUERY
- EXPLAIN QUERY
SESSION- SET SESSION
- RESET SESSION
- CANCEL SESSION
- SET SESSION
- RESET SESSION
- CANCEL SESSION
STATISTICSCREATE STATISTICSCREATE STATISTICS
LEVEL- CREATE LEVEL
- DROP LEVEL
-
COMPARTMENT- CREATE COMPARTMENT
- DROP COMPARTMENT
-
LABEL- CREATE LABEL
- DROP LABEL
- GRANT LABEL
- REVOKE LABEL
-

下表列出 KaiwuDB 支持的对象级审计操作。

对象关系数据库时序数据库
TABLE- INSERT
- SELECT
- UPDATE
- DELETE
- INSERT
- SELECT
- UPDATE
- DELETE
其中,UPDATE 和 DELETE 只支持报错审计。
VIEWSELECT-

系统默认将审计结果保存在审计日志文件中。更多审计日志相关的信息,参见日志管理

创建审计策略

CREATE AUDIT 语句用于创建语句级、对象级审计策略。用户可以使用 ALTER AUDIT ENABLEALTER AUDIT DISABLE 语句开启或禁用创建的审计策略。

所需权限

  • 非三权分立模式下,用户是 admin 角色的成员。默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是 secadmin 角色的成员。默认情况下,secroot 用户属于 secadmin 角色。

语法格式

参数说明

参数说明
IF NOT EXISTS可选关键字。当使用 IF NOT EXISTS 关键字时,如果目标审计策略不存在,系统创建审计策略。如果目标审计策略存在,系统创建审计策略失败,但不会报错。当未使用 IF NOT EXISTS 关键字时,如果目标审计策略不存在,系统创建审计策略。如果目标审计策略存在,系统报错,提示目标审计策略已存在。
audit_name审计策略的名称。审计策略名称必须唯一。
target_type审计对象类型。支持 user、role、database、schema、table、view、index、sequence、privilege、audit、range、query、job、schedule、session、statistics。支持使用 ALL 作为参数值,表示对所有对象类型进行审计。
target_name可选参数。审计对象的名称,格式为 database_name.target_nametarget_name
- 指定对象名称时:进行对象级审计,审计对指定对象的数据操作。如未指定数据库,则默认使用当前数据库。
- 未指定对象名称时:进行语句级审计,审计与该对象类型相关的管理语句。
注意:
1. 进行对象级审计时,对象类型必须是 table 或 view。
2. 指定具体对象名称时,只能进行对象级审计。
operations审计操作。支持指定一个或多个审计操作,审计操作之间使用逗号(,)隔开。支持使用 ALL 作为参数值,表示对所有操作进行审计。支持的审计操作取决于对象可执行的操作。
operators用户或角色名称。支持指定一个或多个用户或角色,用户或角色名称之间使用逗号(,)隔开。支持使用 ALL 作为参数值,表示对所有用户和角色进行审计。
WHENEVER可选关键字,指定执行审计的条件。默认为 ALL,且只支持设置为 ALL,表示总是记录审计。

语法示例

  • 创建语句级审计策略。

    以下示例创建 atest 语句级审计策略,对 root 用户执行的数据库创建操作进行审计。

    CREATE AUDIT atest ON DATABASE FOR create TO root;
    
  • 创建对象级审计策略。

    以下示例创建 atest 对象级审计策略,对 root 用户执行的 t1 表的查询操作进行审计。

    CREATE AUDIT atest ON TABLE t1 FOR SELECT TO root;
    

修改审计策略

ALTER AUDIT 语句用于启用、禁用、重命名审计策略。

所需权限

  • 非三权分立模式下,用户是 admin 角色的成员。默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是 secadmin 角色的成员。默认情况下,secroot 用户属于 secadmin 角色。

语法格式

参数说明

参数说明
IF EXISTS可选关键字。当使用 IF EXISTS 关键字时,如果目标审计策略存在,系统修改目标审计策略。如果目标审计策略不存在,系统修改审计策略失败,但不会报错。当未使用 IF EXISTS 关键字时,如果目标审计策略存在,系统修改审计策略。如果目标审计策略不存在,系统报错,提示目标审计策略不存在。
audit_name当前的审计策略名称。
ENABLE启用审计策略。默认情况下,禁用审计策略。
DISABLE禁用审计策略。
new_name新的审计策略名称。审计策略名称必须唯一。

语法示例

  • 启动审计策略。

    以下示例启用 atest 审计策略。

    ALTER AUDIT atest ENABLE;
    
  • 重命名审计策略。

    以下示例将 atest 审计策略重命名未 btest

    ALTER AUDIT atest RENAME TO btest;
    

查看审计策略

SHOW AUDITS 语句用于查看审计策略。

所需权限

语法格式

参数说明

参数说明
target_type可选参数,审计对象类型。支持 user、role、database、schema、table、view、index、sequence、privilege、audit、range、query、job、schedule、session、statistics。支持使用 ALL 作为参数值,表示查看所有对象的审计策略。
target_name可选参数,数据库已存在的审计对象的名称。格式为 database_name.target_name。如果只提供了审计对象名称,则默认对查看当前数据库中指定对象的审计策略。如未指定对象名称,KaiwuDB 查看指定对象的审计策略。
说明
如果对象类型为 database,无法指定对象名称。
operations可选参数,审计操作。支持指定一个或多个审计操作,审计操作之间使用逗号(,)隔开。
operators可选参数,用户或角色名称。支持指定一个或多个用户或角色,用户或角色名称之间使用逗号(,)隔开。

语法示例

  • 查看所有审计策略。

    SHOW AUDITS;
    

    执行成功后,控制台输出以下信息:

      audit_name | target_type | target_name | target_id | operations | operators | condition | whenever | action | level | enable
    -------------+-------------+-------------+-----------+------------+-----------+-----------+----------+--------+-------+---------
      b          | ALL         |             |         0 | ALL        | rest_user |         0 | ALL      |      0 |     0 | false
      c          | DATABASE    |             |         0 | ALL        | rest_user |         0 | ALL      |      0 |     0 | false
      d          | ALL         |             |         0 | ALL        | rest_user |         0 | ALL      |      0 |     0 | false
    (3 rows)
    
  • 查看指定对象类型的审计策略。

    SHOW AUDITS ON DATABASE;
    

    执行成功后,控制台输出以下信息:

      audit_name | target_type | target_name | target_id | operations | operators | condition | whenever | action | level | enable
    -------------+-------------+-------------+-----------+------------+-----------+-----------+----------+--------+-------+---------
      c          | DATABASE    |             |         0 | ALL        | rest_user |         0 | ALL      |      0 |     0 | false
    (1 row)
    

删除审计策略

DROP AUDIT 语句用于删除审计策略。

所需权限

  • 非三权分立模式下,用户是 admin 角色的成员。默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是 secadmin 角色的成员。默认情况下,secroot 用户属于 secadmin 角色。

语法格式

参数说明

参数说明
IF EXISTS可选关键字。当使用 IF EXISTS 关键字时,如果目标审计策略存在,系统删除目标审计策略。如果目标审计策略不存在,系统删除审计策略失败,但不会报错。当未使用 IF EXISTS 关键字时,如果目标审计策略存在,系统删除审计策略。如果目标审计策略不存在,系统报错,提示目标审计策略不存在。
audit_name审计策略的名称。支持同时删除多个审计策略,审计策略名称之间使用逗号(,)隔开。

语法示例

  • 删除指定审计策略。

    以下示例删除 btest 审计策略。

    DROP AUDIT btest;
    
  • 删除多个审计策略。

    以下示例删除 dcadcd 审计策略。

    DROP AUDIT dca, dcd;