GAUSSDB-统一审计
【摘要】 语法格式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)