pgaudit

提供审计功能

概览

扩展包名版本分类许可证语言
pgaudit18.0SECPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
7100pgaudit-
相关扩展pgauditlogtofile set_user pg_permissions pg_auth_mon pg_auditor safeupdate pg_drop_events table_log

pg15=pgaudit17, pg14=pgaudit16

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG18.01817161514pgaudit-
RPMPGDG18.01817161514pgaudit_$v-
DEBPGDG18.01817161514postgresql-$v-pgaudit-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PGDG 18.0
PGDG 17.1
PGDG 16.1
PGDG 1.7.1
PGDG 1.6.3
d12.aarch64
PGDG 18.0
PGDG 17.1
PGDG 16.1
PGDG 1.7.1
PGDG 1.6.3
d13.x86_64
PGDG 18.0
PGDG 17.1
PGDG 16.1
PGDG 1.7.1
PGDG 1.6.3
d13.aarch64
PGDG 18.0
PGDG 17.1
PGDG 16.1
PGDG 1.7.1
PGDG 1.6.3
u22.x86_64
u22.aarch64
PGDG 18.0
PGDG 17.1
PGDG 16.1
PGDG 1.7.1
PGDG 1.6.3
u24.x86_64
u24.aarch64
PGDG 18.0
PGDG 17.1
PGDG 16.1
PGDG 1.7.1
PGDG 1.6.3

安装

您可以直接安装 pgaudit 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pgaudit;          # 当前活跃 PG 版本安装
pig ext install -y pgaudit -v 18  # PG 18
pig ext install -y pgaudit -v 17  # PG 17
pig ext install -y pgaudit -v 16  # PG 16
pig ext install -y pgaudit -v 15  # PG 15
pig ext install -y pgaudit -v 14  # PG 14
dnf install -y pgaudit_18       # PG 18
dnf install -y pgaudit_17       # PG 17
dnf install -y pgaudit_16       # PG 16
dnf install -y pgaudit_15       # PG 15
dnf install -y pgaudit_14       # PG 14
apt install -y postgresql-18-pgaudit   # PG 18
apt install -y postgresql-17-pgaudit   # PG 17
apt install -y postgresql-16-pgaudit   # PG 16
apt install -y postgresql-15-pgaudit   # PG 15
apt install -y postgresql-14-pgaudit   # PG 14

预加载配置

shared_preload_libraries = 'pgaudit';

创建扩展

CREATE EXTENSION pgaudit;

用法

pgaudit: 开源 PostgreSQL 审计日志

pgAudit 通过标准 PostgreSQL 日志功能提供详细的会话和/或对象审计日志,生成政府、金融或 ISO 认证所需的审计追踪。

CREATE EXTENSION pgaudit;

配置参数

参数默认值描述
pgaudit.lognone要记录的语句类别:READWRITEFUNCTIONROLEDDLMISCMISC_SETALL
pgaudit.log_catalogon当所有关系都在 pg_catalog 中时记录语句
pgaudit.log_clientoff向客户端显示审计日志消息
pgaudit.log_levellog审计条目的日志级别
pgaudit.log_parameteroff在日志中包含语句参数
pgaudit.log_parameter_max_size0参数最大字节数(0=无限制)
pgaudit.log_relationoff在 SELECT/DML 中为每个关系生成单独的日志条目
pgaudit.log_rowsoff在日志中包含行数
pgaudit.log_statementon在日志中包含语句文本
pgaudit.log_statement_onceoff仅在第一个条目中记录语句文本
pgaudit.role(无)对象审计日志的主角色

会话审计日志

记录所有 DML 和 DDL,按关系详细记录:

SET pgaudit.log = 'write, ddl';
SET pgaudit.log_relation = on;

记录除杂项命令外的所有内容:

SET pgaudit.log = 'all, -misc';

输出示例:

AUDIT: SESSION,1,1,DDL,CREATE TABLE,TABLE,public.account,create table account(...)
AUDIT: SESSION,2,1,READ,SELECT,,,select * from account

对象审计日志

向审计角色授予权限以控制记录哪些关系:

SET pgaudit.role = 'auditor';

GRANT SELECT, DELETE
   ON public.account
   TO auditor;

现在对 account 表的任何 SELECTDELETE 操作都会被审计记录。

日志格式

条目为 CSV 格式,包含以下字段:AUDIT_TYPESTATEMENT_IDSUBSTATEMENT_IDCLASSCOMMANDOBJECT_TYPEOBJECT_NAMESTATEMENTPARAMETER


最后修改 2026-03-14: update extension metadata (953cbd0)