PostgreSQL的扩展(extensions)-常用的扩展之pgAudit
基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777
pgAudit
是一个 PostgreSQL 的扩展,它提供了一种方式来生成详尽的审计日志。这对于需要遵守特定监管要求的企业来说是非常重要的,比如那些必须符合 HIPAA、SOX、PCI DSS 等标准的企业。通过 pgAudit
,可以对数据库中发生的各种类型的活动进行详细的记录,包括但不限于:
- DDL(数据定义语言)操作:如 CREATE、ALTER、DROP 等。
- DML(数据操纵语言)操作:如 SELECT、INSERT、UPDATE、DELETE 等。
- 权限变更。
- 函数执行。
这些详细的审计日志能够帮助组织追踪数据变更的来源,验证和确保数据访问和操作行为的合规性。
安装 pgAudit
pgAudit
的安装通常涉及到扩展的编译和加载。以下是安装过程的大概步骤(可能会根据您的操作系统和 PostgreSQL 的版本有所不同):
-
下载 pgAudit 扩展源码:
你可以从 pgAudit 的 GitHub 仓库或者通过你的包管理系统来获取 pgAudit 源代码。要下载对应版本的pgaudit。下载网址:https://github.com/pgaudit/pgaudit/releases
-
编译扩展
[pg16@test resource]$ unzip pgaudit-16.0.zip
[pg16@test resource]$ cd pgaudit-16.0/
[pg16@test pgaudit-16.0]$ make install USE_PGXS=1
-
在
postgresql.conf
文件中配置:加载
pgAudit
扩展需要在postgresql.conf
文件中进行配置。将pgaudit
添加到shared_preload_libraries
配置项中:
–修改postgresql.conf
文件
shared_preload_libraries = 'pgaudit,pg_stat_statements,auto_explain' # (change requires restart)
–系统上修改,并重启pg
postgres=# alter system set shared_preload_libraries=pgaudit,pg_stat_kcache,pg_stat_statements,auto_explain;
ALTER SYSTEM
postgres=# \q
[pg16@test ~]$ pg_ctl restart
- 创建扩展:
使用 CREATE EXTENSION
命令在你的数据库中创建 pgAudit
扩展。
postgres=# \c white postgres
You are now connected to database "white" as user "postgres".
white=#
white=# CREATE EXTENSION pgaudit;
CREATE EXTENSION
white=# select * from pg_extension;
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+--------------------+----------+--------------+----------------+------------+-----------+--------------
14270 | plpgsql | 10 | 11 | f | 1.0 | |
16726 | pg_repack | 10 | 2200 | f | 1.5.0 | |
16975 | pg_stat_statements | 10 | 2200 | t | 1.10 | |
17048 | pgaudit | 10 | 2200 | t | 16.0 | |
(4 rows)
配置 pgAudit
pgAudit
可以通过在 postgresql.conf
文件中设置参数来进行详细配置。例如:
-
pgaudit.log
:这个设置允许指定将哪些类别的语句记录到审计日志中。 -
pgaudit.log_level
:决定了审计条目使用的日志级别。 -
pgaudit.log_parameter
:控制是否记录 SQL 语句的参数值。
通过合适的配置,可以调整 pgAudit
生成的日志详情和量级,以适应不同的需求和合规性要求。
使用实例
要配置 pgAudit
记录所有的 DDL 操作和角色更改,你可能会在 postgresql.conf
文件中设置如下:
pgaudit.log = 'ddl, role'
这个配置会让 pgAudit
仅记录数据定义语言操作和角色相关变更的日志。
注意
-
在使用
pgAudit
之前,重要的是彻底理解其文档和配置选项。不恰当的配置可能会导致巨大的日志文件,而且可能不完全符合监管要求。 -
考虑到性能和存储影响,合理规划审计策略至关重要。
-
审计日志应当得到妥善管理和监控,以确保安全性和合规性。
pgAudit
提供了一种高度可配置的方式来满足 PostgreSQL 数据库审计和合规性需求,但必须谨慎配置以确保既满足需求又不会过分消耗资源。
谨记:心存敬畏,行有所止。