GAUSSDB-统一审计

举报
yd_294088545 发表于 2026/01/12 22:06:39 2026/01/12
【摘要】 语法格式CREATE AUDIT POLICY [IF NOT EXISTS] policy_name{ {privilege_audit_clause | access_audit_clause} [filter_group_clause] [ENABLE | DISABLE]};子句说明权限审计子句(privilege_audit_clause)PRIVILEG...

语法格式

CREATE AUDIT POLICY [IF NOT EXISTS] policy_name
{ 
    {privilege_audit_clause | access_audit_clause} 
    [filter_group_clause] 
    [ENABLE | DISABLE]
};

子句说明
权限审计子句(privilege_audit_clause)
PRIVILEGES {DDL | ALL} [ON LABEL (resource_label_name [, ...])]
用于审计特定权限操作(如DDL或所有权限)

访问审计子句(access_audit_clause)
ACCESS {DML | ALL} [ON LABEL (resource_label_name [, ...])]
用于审计数据操作(如DML或所有访问行为)

过滤子句(filter_group_clause)

FILTER ON { (filter_type = value [, ...]) | (IP | ROLES | APP) }
支持按IP地址、用户角色或应用过滤审计事件

参数详细说明

policy_name:审计策略名称,需唯一。
IF NOT EXISTS:可选,避免重复创建同名策略时报错
ENABLE/DISABLE:可选,设置策略状态(默认为启用)
resource_label_name:资源标签名称,用于关联需审计的资源(如表、视图等)

注意事项
(1)、权限要求
仅poladmin、sysadmin或初始用户可执行此操作
(2)、前置条件
需开启安全策略开关:SET enable_security_policy = on;
(3)、资源标签
审计策略需通过ON LABEL关联预定义的资源标签,标签内需包含具体审计对象

示例

用SQL查看审计是否打开(默认是开启的)
show audit_enabled;
--也可以基于gs_setting系统视图查看
select name,setting from pg_settings where name='audit_enabled';

用SQL查看日志存储最大空间
select name ,setting from pg_settings where name='audit_space_limit';

查看过去一天所有产生审计日志的总数,当前时间要求使用now()
select count(*) from pg_query_audit(now()-1,now());

查看过去一天gaussdb这个用户登录postgres数据库,当前是要要求使用now()
select * from pg_query_audit(now()-1,now()) where type='login_success' and username = 'gaussdb' and database='postgres';


删除’2025-09-20 00:00:00’到’2025-09-21 23:59:59’时间段的审计记录
select * from pg_delete_audit('2025-09-20 00:00:00','205-09-21 23:59:59');


创建表tb1,字段自定义
create table tb1(c1 int,c2 varchar(50));

创建审计策略adt3,仅审计记录用户gaussdb,在执行针对表tb1资源进行select、insert、delete操作数据库创建审计策略
--给tb1打上资源标签
create resource label tb1_label add table(tb1);
--创建审计策略
create audit policy adt3 access 
select on label(tb1_label),
insert on label(tb1_label),
delete on label (tb1_label)
filter on roles(gaussdb);

查看日志
select * from pg_query_audit(now()-1,now()) order by time desc;

对数据库相关操作的所有审计信息
select * from gs_auditing;

关闭adt3审计策略
alter audit policy adt3 disable;

为统一审计对象策略adt3,添加描述'audit policy for tb1'
alter audit policy adt3 comments 'audit policy for tb1';

删除以上创建的审计策略,级联删除用户user1
--删除策略
drop audit policy adt3;
drop audit policy adt1,adt2,adt3;【删除多个策略】
--删除资源标签
drop resource label tb1_label;

创建user3用户
create user user3 password 'test@123';

给用户授予查看审计权限
alter user user3 with auditadmin;

确认user3用户创建成功,并拥有审计权限,用SQL查询出来
SELECT * FROM ADM_SYS_PRIVS where grantee='user3' and privilege='rolauditadmin';

创建统一审计策略adt1,对所有数据库执行create审计操作
--创建统一审计策略
create audit policy adt1 privileges create;

创建审计策略adt2,对所有数据库执行select审计操作
create audit policy adt2 access select;

创建表tb1,创建审计策略adt3,仅审计记录用户gaussdb,在执行针对表tb1资源进行的select、insert、delete操作数据库创建审计策略
--创建表
create table tb1(c1 int);
--创建资源标签标记tb1表
create resource label tb1_label add table(tb1);
--创建统一审计
create audit policy adt3 access
select on label(tb1_label),
insert on label(tb1_label),
delete on label(tb1_label) 
filter on roles(gaussdb);

为统一审计对象策略adt1,添加描述’audit policy for tb1’
alter audit policy adt1 comments 'audit policy for tb1';

修改adt1,使之对IP地址为’10.20.30.40’的场景生效
alter audit policy adt1 modify(filter on ip('10.20.30.40'));

对数据库相关操作的所有审计信息
select * from gs_auditing;

禁用统一审计策略adt1
alter audit policy adt1 disable;

删除策略adt1、adt2、adt3和相应的资源标签,级联删除用户user3
--删除审计策略
drop audit policy adt1,adt2,adt3;
--删除资源标签
drop resource label tb1_label;

对数据库相关操作的所有审计信息
select * from gs_auditing;
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。