VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

CREATE AUDIT POLICY

功能描述

创建统一审计策略。

注意事项

  • 开启审计开关(audit_enabled=on)时,根据具体的审计策略决定需要记录的审计日志。

  • 开启安全策略开关(enable_security_policy=on)时,审计策略才能生效。

  • 未开启三权分立,只有安全策略管理员(poladmin)、系统管理员(sysadmin)或初始用户能进行此操作。

  • 开启三权分立(enable_separation_of_duty=on)后,只有安全管理员才能进行此操作。

语法格式

CREATE AUDIT POLICY [ IF NOT EXISTS ] policy_name { { { privilege_audit_clause | access_audit_clause } [ filter_group_clause ] [ ENABLE | DISABLE ] } | [ sequence_audit_clause ] };
  • 其中权限审计子句privilege_audit_clause可以是:

    PRIVILEGES { DDL | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]
    
  • 其中访问审计子句access_audit_clause可以是:

    ACCESS { DML | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]
    
  • 其中,定义审计策略过滤信息的子句filter_group_clause可以是:

    FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] }
    
  • 其中,审计语句序列的子句sequence_audit_clause可以是:

    SEQUENCE BY ['SQL']
    
  • 其中DDL可以是:

    { ( ALTER | ANALYZE | COMMENT | CREATE | DROP | GRANT | REVOKE | SET | SHOW ) }
    
  • 其中DML可以是:

    { ( COPY | DEALLOCATE | DELETE_P | EXECUTE | REINDEX | INSERT | PREPARE | SELECT | TRUNCATE | UPDATE ) }
    
  • 其中FILTER_TYPE可以是:

    { APP | ROLES | IP | TIME_PERIOD }
    

参数说明

  • [ IF NOT EXISTS ]

    如果指定了IF NOT EXISTS,当数据库中存在同名审计策略时不会报错,而会发出通知,告知同名审计策略已存在。

  • policy_name

    审计策略名称,需要唯一,不可重复;

    取值范围:字符串,要符合标识符的命名规范。

  • DDL

    指的是针对数据库执行如下操作时进行审计,目前支持:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、SET、SHOW。

  • ALL

    指的是上述DDL/DML支持的所有对数据库的操作。

  • resource_label_name

    资源标签名称。

  • DML

    指的是针对数据库执行如下操作时进行审计,目前支持:SELECT、COPY、DEALLOCATE、DELETE、EXECUTE、INSERT、PREPARE、REINDEX、TRUNCATE、UPDATE。

  • FILTER_TYPE

    描述策略过滤的条件类型,包括IP、APP、ROLES、TIME_PERIOD,分别表示将IP、访问的应用名、数据库系统用户以及重要时间段作为审计的过滤条件。

  • filter_value

    指具体过滤信息内容。

  • ENABLE|DISABLE

    可以打开或关闭统一审计策略。若不指定ENABLE、DISABLE,语句默认为ENABLE。

  • ['SQL']

    使用基于语句序列的审计功能:预先建立的语句序列审计规则,如果数据库中某个会话依次执行了预先定义的 SQL 语句,就会触发审计。不支持SQL转换的场景。

    • 创建语句审计策略时只能指定一条SQL,后续可通过ALTER AUDIT POLICY命令向审计策略中追加SQL。

    • 一条SQL可以被多个审计策略包含;不能出现两个语句序列完全相同的审计策略。

    • 被审计的SQL不能存在语法错误;单条SQL语句应被单引号及方括号包围。

    在MySQL兼容模式下,执行的会话SQL必须与策略中定义的SQL大小写完全一致时,才会触发审计。

示例

1、创建dev_audit和bob_audit用户。

CREATE USER dev_audit PASSWORD 'dev@1234';
CREATE USER bob_audit password 'bob@1234';

2、创建一个表tb_for_audit。

CREATE TABLE tb_for_audit(col1 text, col2 text, col3 text);

3、创建资源标签adt_lb0。

CREATE RESOURCE LABEL adt_lb0 add TABLE(tb_for_audit);

4、创建审计策略:

  • 对数据库执行create操作创建审计策略。

    CREATE AUDIT POLICY adt1 PRIVILEGES CREATE;
    
  • 对数据库执行select操作创建审计策略。

    CREATE AUDIT POLICY adt2 ACCESS SELECT;
    
  • 仅审计记录用户dev_audit和bob_audit在执行针对adt_lb0资源进行的create操作数据库创建审计策略。

    CREATE AUDIT POLICY adt3 PRIVILEGES CREATE ON LABEL(adt_lb0) FILTER ON ROLES(dev_audit, bob_audit);
    
  • 仅审计记录用户dev_audit和bob_audit,客户端工具为vsql,IP地址为'10.20.30.40'、'127.0.0.0/24',在执行针对adt_lb0资源进行的select、insert、delete操作数据库创建审计策略。

    CREATE AUDIT POLICY adt4 ACCESS SELECT ON LABEL(adt_lb0), INSERT ON LABEL(adt_lb0), DELETE FILTER ON ROLES(dev_audit, bob_audit), APP(psql, gsql), IP('10.20.30.40', '127.0.0.0/24');
    
  • 审计通过vsql客户端工具或者“从127.0.0.1发起且用户为vastbase”的对资源池 adt_lb0 中对象进行insert或update的操作。

    CREATE AUDIT POLICY p_tbl ACCESS insert ON LABEL (adt_lb0), update ON LABEL (adt_lb0) FILTER ON IP ('127.0.0.1') AND ROLES (vastbase) OR APP (vsql);
    
  • 审计指定时间范围内用户vastbase的所有drop操作。

    CREATE AUDIT POLICY adt_test privileges drop filter on time_period('2023-11-28 00:00:00','2023-12-07 00:00:00') and roles(vastbase);
    
  • 预先定义语句序列审计规则,如果数据库中某个会话执行了该SQL,就会触发审计。

    CREATE AUDIT POLICY adt5 sequence by ['create table tb_123456(id int,name text);'];
    

5、删除创建的审计策略adt1。

DROP AUDIT POLICY adt1;

相关链接

ALTER AUDIT POLICYDROP AUDIT POLICY