更新时间:2024-05-31 GMT+08:00
分享

CREATE AUDIT POLICY

功能描述

创建统一审计策略。

注意事项

  • 审计策略的创建与维护有权限限制,只有poladmin、sysadmin或初始用户有权限进行此操作。
  • 在创建审计策略之前,需要确保已经开启安全策略开关,即设置GUC参数“enable_security_policy=on”后,脱敏策略才会生效。
  • 系统管理员或安全策略管理员可以访问GS_AUDITING_POLICY、GS_AUDITING_POLICY_ACCESS、GS_AUDITING_POLICY_PRIVILEGES和GS_AUDITING_POLICY_FILTERS系统表,查询已创建的审计策略。
  • 审计策略名称应具有唯一性,避免与现有策略产生冲突。可以使用IF NOT EXISTS来检查指定的审计策略是否存在,以避免重复创建。

在使用DATABASE LINK功能的场景下,客户端发起的DATABASE LINK请求,实际的发送方是服务端,发送端IP地址等相关的属性将是服务端的值。详情见DATABASE LINK

语法格式

CREATE AUDIT POLICY [ IF NOT EXISTS ] policy_name { { privilege_audit_clause | access_audit_clause } [, ... ] [ filter_group_clause ] [ ENABLE | DISABLE ] };
  • privilege_audit_clause:
    1
    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 [, ... ] ) } [, ... ] 

参数说明

  • policy_name

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

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

  • resource_label_name

    资源标签名称。

  • DDL

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

    取值为ANALYZE时,ANALYZE和VACCUM操作都会被审计。

  • DML

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

  • ALL

    指的是上述DDL或DML中支持的所有对数据库的操作。当形式为{ DDL | ALL }时,ALL指所有DDL操作;当形式为{ DML | ALL }时,ALL指所有DML操作。

  • FILTER_TYPE

    描述策略过滤的条件类型,包括APP、ROLES、IP。

  • filter_value

    指具体过滤信息内容。

  • ENABLE|DISABLE

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

示例

  • 创建一个对数据库执行CREATE的审计策略。
    --创建adt1策略。
    gaussdb=# CREATE AUDIT POLICY adt1 PRIVILEGES CREATE; 
    
    --查看adt1策略。
    gaussdb=# SELECT * FROM GS_AUDITING_POLICY;
     polname | polcomments |         modifydate         | polenabled 
    ---------+-------------+----------------------------+------------
     adt1    |             | 2023-11-06 16:41:40.947417 | t
    
    --查看审计策略的存放位置。
    gaussdb=# SHOW audit_directory;
    
    --删除审计策略adt1。
    gaussdb=# DROP AUDIT POLICY adt1;
  • 创建一个审计策略,仅审计用户dev_audit进行CREATE操作 。
    --创建dev_audit用户。
    gaussdb=# CREATE USER dev_audit PASSWORD '********';
    
    --创建一个表tb_for_audit。
    gaussdb=# CREATE TABLE tb_for_audit(col1 text, col2 text, col3 text); 
    
    --创建基于tb_for_audit表的adt_lb0资源标签。
    gaussdb=# CREATE RESOURCE LABEL adt_lb0 add TABLE(public.tb_for_audit);
    
    --创建针对adt_lb0资源进行create操作的adt2审计策略。
    gaussdb=# CREATE AUDIT POLICY adt2 PRIVILEGES CREATE ON LABEL(adt_lb0) FILTER ON ROLES(dev_audit);
    
    --删除审计策略adt2。
    gaussdb=# DROP AUDIT POLICY adt2;
    
    --删除表tb_for_audit。
    gaussdb=# DROP TABLE tb_for_audit;
    
    --删除dev_audit用户。
    gaussdb=# DROP USER dev_audit;
  • 创建一个仅审计记录用户dev_audit,客户端工具为gsql,IP地址为'10.20.30.40', '127.0.0.0/24',在执行针对adt_lb0资源进行的SELECT、INSERT、DELETE操作数据库的审计策略。
    --创建dev_audit用户。
    gaussdb=# CREATE USER dev_audit PASSWORD '********';
    
    --创建审计策略adt3。
    gaussdb=# CREATE AUDIT POLICY adt3 ACCESS SELECT ON LABEL(adt_lb0), INSERT ON LABEL(adt_lb0), DELETE FILTER ON ROLES(dev_audit), APP(gsql), IP('10.20.30.40', '127.0.0.0/24');
    
    --删除审计策略adt3。
    gaussdb=# DROP AUDIT POLICY adt3;
    
    --删除dev_audit用户。
    gaussdb=# DROP USER dev_audit;
分享:

    相关文档

    相关产品