查看审计结果
前提条件
- 审计功能总开关已开启。(参数audit_enabled。)
- 需要审计的审计项开关已开启。(参见日志参考。)
- 数据库正常运行,并且对数据库执行了一系列增、删、改、查操作,保证在查询时段内有审计结果产生。
- 数据库各个节点审计日志单独记录。
背景信息
只有拥有AUDITADMIN属性的用户才可以查看审计记录。有关数据库用户及创建用户的办法请参见用户。
审计查询命令是数据库提供的sql函数pg_query_audit,其原型为:
pg_query_audit(timestamptz startime,timestamptz endtime,audit_log)
参数startime和endtime分别表示审计记录的开始时间和结束时间,audit_log表示所查看的审计日志信息所在的物理文件路径,当不指定audit_log时,默认查看连接当前实例的审计日志信息。
startime和endtime的差值代表要查询的时间段,其有效值为从startime日期中的00:00:00开始到endtime日期中的23:59:59之间的任何值。请正确指定这两个参数,否则将查不到需要的审计信息。
pg_query_audit函数的返回字段如下所述:
名称 类型 描述 time timestamp with time zone 操作时间 type text 操作类型 result text 操作结果 userid oid 用户id username text 执行操作的用户名 database text 数据库名称 client_conninfo text 客户端连接信息 object_name text 操作对象名称 detail_info text 执行操作详细信息 node_name text 节点名称 thread_id text 线程id local_port text 本地端口 remote_port text 远端端口
操作步骤
1、以安装Vastbase的操作系统用户(以vastbase为例)登录数据库主节点。
2、使用如下命令连接数据库。
vsql -r
3、查询审计记录。
由于审计内容较多,为了更加直观的显示,开启列式显示扩展输出。
\x on
查看审计记录。(需要确保指定的查询时段内有审计结果产生。)
select * from pg_query_audit('2023-01-04 10:05:00','2023-01-04 11:00:00');
查询结果如下:
-[ RECORD 1 ]---+------------------------------------------------------------------
time | 2023-01-04 10:06:11+08
type | login_success
result | ok
userid | 10
username | vastbase
database | vastbase
client_conninfo | gs_clean@::1@SSL_OFF
object_name | vastbase
detail_info | login db(vastbase) success,the current user is:vastbase, SSL=off
node_name | node1
thread_id | 47496107263744@726113171411843
local_port | 5432
remote_port | 48558
privilege | (ACL_CONNECT)
该条记录表明,用户vastbase在2023-01-04 10:06:11+08的时间点登录数据库vastbase。其中client_conninfo字段在log_hostname启动且IP连接时,字符@后显示反向DNS查找得到的主机名。
对于登录操作的记录,审计日志detail_info结尾会记录SSL信息,
SSL=on
表示客户端通过SSL连接,SSL=off
表示客户端没有通过SSL连接。
审计记录描述
对于不同类型的操作detail_info信息会有差异,下面展示几种常见的审计操作。
审计策略
下图显示的是触发审计策略的一条审计记录,detail_info字段表示执行操作的详细信息,以下是对detail_info各字段的解释说明:
- omm2:触发审计策略的用户名称。
- vsql:触发审计策略时连接数据库的application_name。
- local:触发审计策略时连接数据库的ip。
- vastbase:触发审计策略时的数据库名称。
- SELECT:审计的时间类型。
- 32942:触发的审计策略oid。
- normally:触发审计策略的响应动作。
数据库启停
下图显示数据库的启停审计,detail_info分别表示:
system_stop:使用fast方式关闭数据库。
fast方式:不等待客户端中断连接,所有活跃事务都被回滚并且客户端都被强制断开,然后服务器将被关闭。
system_start:启动数据库,端口号5432。
用户登录、注销审计
如下图所示显示对用户jim登录数据库vastbase的审计。
detail_info分别表示用户jim登录vastbase数据库失败或者成功。SSL=off
表示客户端没有通过SSL连接。
DML、SELECT审计
如下所示是对数据库DML操作的审计。
SET审计
如下图所示展示的是对SET操作的审计。
数据库对象审计
如下图所示是对数据库对象user的审计。