使用 pgaudit 插件
功能概述
通过 pgaudit 插件可以审计 PostgreSQL 数据库的操作。PostgreSQL 应用版本需为 v2.2.0-高可用版、v2.2.0-基础版,及以上版本。
操作步骤
步骤一:创建审计用户
-
创建一个权限为
普通权限的数据库账号,用于审计。详情参考添加账号。 -
高级权限的用户通过grant命令为该审计用户授权需要记录审计日志的表的权限。
步骤二:安装 pgaudit 插件
-
使用
高级权限的账号,通过高可用写 IP 连接数据库。详情参考连接数据库。 -
执行以下命令,安装 pgaudit 插件。
create extension pgaudit;
步骤三:配置 pgaudit 参数
数据库中所有节点,包括主实例节点和只读实例节点,均需配置 pgaudit 参数,即所有节点均需执行以下步骤。
-
使用
高级权限的账号,通过高可用写 IP 连接数据库。详情参考连接数据库。 -
执行以下命令更新 pgaudit 参数。
alter system set pgaudit.role = 'auditor'; alter system set pgaudit.log = 'WRITE, DDL, ROLE';参数说明如下,更多详细介绍请参考官方文档。
参数 说明 pgaudit.role
该参数用于指定负责进行审计日志记录的角色。例如配置为创建的审计用户
auditor。pgaudit.log
该参数用于指定需要被审计记录的操作。多个取值使用
,分隔,支持通过-符号排除特定值,例如,ALL,-misc表示记录除 MISC 外的所有操作。-
none:默认值,不记录任何操作。 -
READ:记录 SELECT 和 COPY 操作。 -
WRITE:记录 INSERT、UPDATE、DELETE、TRUNCATE 和 COPY 操作。 -
FUNCTION:记录函数调用和 DO 块。 -
ROLE:记录与角色和权限相关的操作,例如 GRANT、REVOKE、CREATE/ALTER/DROP ROLE。 -
DDL:记录除 ROLE 类外的所有 DDL 操作。 -
MISC:记录其它操作,例如 DISCARD、FETCH、CHECKPOINT、VACUUM、SET 等。 -
MISC_SET:记录其他 SET 操作,例如 SET ROLE。 -
ALL:记录所有操作。
-
-
执行以下命令,重载配置,使修改生效。
select pg_reload_conf(); -
执行以下命令,查看修改后的配置。
show pgaudit.role; show pgaudit.log;
步骤四:查看审计日志
参考日志功能,查看相关日志信息,其中带有 AUDIT 关键字的日志即为审计日志。