如需“商务咨询“或”开源交流“, 速联系! 

欢迎关注PolarDB公众号:
PolarDB 15 近期feat解读: 审计日志(audit logging)功能增强
https://github.com/ApsaraDB/PolarDB-for-PostgreSQL/commit/9ff0329ec239ed619870685098a3b37b0d79c92e
本次 Commit(9ff0329ec239ed619870685098a3b37b0d79c92e)对 PolarDB-for-PostgreSQL 的审计日志(audit logging)功能进行了重要重构和增强,主要内容如下:
解决了什么问题?
stack-based 审计事件追踪机制
引入基于栈的审计事件追踪(stack-based audit event tracking)机制,以支持更复杂的审计场景和多层嵌套语句的审计。 审计事件(AuditEvent)现在可以以栈的方式入栈/出栈,便于管理多层嵌套的 SQL 操作。 重命名与迁移
原有的 plaudit
扩展被移除(contrib/plaudit/ 目录被删除)。新增 polar_audit
扩展(external/polar_audit/),代码由原plaudit
基础上重写并扩展。功能增强
增加了更多 GUC 配置项,包括 polar_audit.log_parameter
,可选择是否记录 SQL 语句参数。审计支持更灵活的配置项及更细颗粒度的控制(如是否审计 catalog、是否单独审计每个 relation、是否记录语句文本等)。
主要变更内容
删除: contrib/plaudit
目录及相关文件(Makefile、C 源、SQL 安装脚本、control 文件)。新增: external/polar_audit
目录及相关文件(Makefile、polar_audit.c、SQL 安装脚本、control 文件)。新增更完善的基于栈的审计事件结构与内存管理代码。 新增/调整 GUC 配置项,支持更细粒度的审计日志控制。
使用示例
1. 编译并安装扩展
cd external/polar_audit
make && make install
2. 在数据库中创建扩展
CREATE EXTENSION polar_audit;
3. 配置审计参数(可在 postgresql.conf 或会话级别设置)
-- 控制定哪些类型的 SQL 语句会被记录
SET polar_audit.log = 'all';
-- 是否审计 catalog 类对象
SET polar_audit.log_catalog = on;
-- 是否为每个表单独记录一条日志
SET polar_audit.log_relation = off;
-- 是否记录完整 SQL 语句
SET polar_audit.log_statement = on;
-- 是否记录 SQL 参数
SET polar_audit.log_parameter = on;
-- 设置有权限写入审计日志的角色
SET polar_audit.role = 'audit_admin';
4. 常规 SQL 操作的审计
-- 下面的操作将被 polar_audit 扩展自动审计
INSERT INTO mytable VALUES (1, 'test');
UPDATE mytable SET col='val' WHERE id=1;
DROP TABLE mytable;
5. 查看审计日志(通常日志输出到 PostgreSQL 的日志文件中,具体格式和内容由扩展实现决定)
总结
此 Commit 用 stack-based 机制重构了 PolarDB 审计日志功能,提升了可扩展性与灵活性,并以 polar_audit
替代了原有的 plaudit
,为云原生数据库的安全合规提供了更强的支撑。
这个feat来自ZTE, 感谢ZTE对PolarDB开源项目的代码贡献.
你知道数据库为什么如此重视“审计”功能吗? 欢迎留言讨论
文章转载自PolarDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




