本系统的审计功能通过pgaudit插件实现。
安装pgaudit插件,然后在postgresql.conf文件中设置参数,注意这里要选择与相应内核版本匹配的版本:
shared_preload_libraries='pgaudit'
下面是审计选项:
- pgaudit.log
指定会话审计日志记录哪些语句类。可以设置的类别 read、write、function、role 、ddl、misc 、 All 等。
- pgaudit.log_catalog
指定当一条语句中的所有关系都位于pg_catalog中时,应该启用会话日志记录。禁用此设置将减少来自psql和PgAdmin等工具的日志噪音,这些工具会大量查询目录。
- pgaudit.log_relation
指定会话审计日志记录是否应该为SELECT或DML语句中引用的每个关系(表、视图等)创建单独的日志条目。对于不使用对象审计日志记录的穷举日志记录,这是一个非常有用的快捷方式。
可以通过下面的sql查询审计项配置:
select name,setting,source from pg_settings where name like 'pgaudit%';
会话审计
会话审计日志提供用户在后端执行的所有语句的详细日志。使用pgaudit.log设置启用会话日志记录。
配置如下:
set pgaudit.log = 'write, ddl';
set pgaudit.log_relation = on;
set pgaudit.log_client=on;
create table account
id int,
name text,
password text,
description text
);
insert into account (id, name, password, description)
values (1, 'user1', 'HASH1', 'blah, blah');
可以看到审计日志:
对象审计
对象审计模式只支持增删改查的审计。对象审计模式是基于角色实现的,通过pgaudit.role参数来定义用于对象审计的角色。当审计角色具有执行命令的权限或有成员角色继承权限时,将审计访问的对象。
create role auditor with password 'wcb';
set pgaudit.log = '';
set pgaudit.role = 'auditor';
grant select, delete on public.account to auditor;
drop table account;
create table account(
id int,
name text,
password text,
description text
);
insert into account (id, name, password, description) values (1, 'user1', 'HASH1', 'blah, blah');
select * from account;
日志如下:
关于AntDB数据库
AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。