【DB吐槽大会】第61期 - PG 审计功能有巨大增强空间

简介: 大家好,这里是DB吐槽大会,第61期 - PG 审计功能有巨大增强空间

背景


1、产品的问题点

  • PG 审计功能有巨大增强空间

2、问题点背后涉及的技术原理

  • PG 通过配置log_statement参数控制日志打印的类别: ddl dml all
  • 通过配置log_min_duration_statement , 打印执行时间超过阈值的SQL
  • 日志格式可以配置为csvlog, 或指定格式

3、这个问题将影响哪些行业以及业务场景

  • 通用

4、会导致什么问题?

  • SQL审计日志的输出位置和其他日志混合打印到相同的文件中, 会导致查询和管理的复杂度增加. 基于文件的搜索也比较麻烦, 不支持索引等.
  • SQL审计日志可以控制的类别非常有限, 无法满足精细化审计需要.
  • all打印的内容过多, 导致性能下降、存储资源消耗过度. DML则记录下了所有的修改操作, DDL只记录DDL语句.

5、业务上应该如何避免这个坑

  • 可以使用pgaudit插件, 增加配置维度
/* Bits within auditLogBitmap, defines the classes we understand */    
#define LOG_DDL                 (1 << 0)        /* CREATE/DROP/ALTER objects */    
#define LOG_FUNCTION    (1 << 1)        /* Functions and DO blocks */    
#define LOG_MISC                (1 << 2)        /* Statements not covered */    
#define LOG_READ                (1 << 3)        /* SELECTs */    
#define LOG_ROLE                (1 << 4)        /* GRANT/REVOKE, CREATE/ALTER/DROP ROLE */    
#define LOG_WRITE               (1 << 5)        /* INSERT, UPDATE, DELETE, TRUNCATE */    
#define LOG_NONE                0                       /* nothing */    
#define LOG_ALL                 (0xFFFFFFFF)    /* All */  
/*    
 * GUC variable for pg_audit.role    
 *    
 * Administrators can choose which role to base OBJECT auditing off of.    
 * Object-level auditing uses the privileges which are granted to this role to    
 * determine if a statement should be logged.    
 */    
char *auditRole = NULL;    
/*    
 * Object type, used for SELECT/DML statements and function calls.    
 *    
 * For relation objects, this is essentially relkind (though we do not have    
 * access to a function which will just return a string given a relkind;    
 * getRelationTypeDescription() comes close but is not public currently).    
 *    
 * We also handle functions, so it isn't quite as simple as just relkind.    
 *    
 * This should be kept consistent with what is returned from    
 * pg_event_trigger_ddl_commands(), as that's what we use for DDL.    
 */    
#define OBJECT_TYPE_TABLE                       "TABLE"    
#define OBJECT_TYPE_INDEX                       "INDEX"    
#define OBJECT_TYPE_SEQUENCE            "SEQUENCE"    
#define OBJECT_TYPE_TOASTVALUE          "TOAST TABLE"    
#define OBJECT_TYPE_VIEW                        "VIEW"    
#define OBJECT_TYPE_MATVIEW                     "MATERIALIZED VIEW"    
#define OBJECT_TYPE_COMPOSITE_TYPE      "COMPOSITE TYPE"    
#define OBJECT_TYPE_FOREIGN_TABLE       "FOREIGN TABLE"    
#define OBJECT_TYPE_FUNCTION            "FUNCTION"    
#define OBJECT_TYPE_UNKNOWN                     "UNKNOWN"    

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • pgaudit依旧有增强空间, 同时pgaudit属于第三方插件, 质量和代码质量如何保障? 遇到问题的修复周期如果保障?

7、数据库未来产品迭代如何修复这个坑

  • 希望内核支持更强大的审计配置, 包含pgaudit的能力.
  • 不带条件的DML (delete, update)
  • 影响行数超过N(可配置)的DML(update, delete)
  • 返回结果超过N(可配置)的查询(select)
  • 支持白名单SQL (支持变量, 采用query hashid表达) (不记录)
  • 支持黑名单SQL (遇到就记录下来)
  • 支持user, dbname, query, 等组合条件配置.
  • 例如如果是某个用户执行的, 则审计, 否则不审计.
  • 希望可配置审计日志的输出目标, 区别于其他日志文件. 或者可以存储在表中.
  • 支持敏感信息加密存储. 例如修改用户密码, 密码部分在输出到日志文件中时加密存储.



相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
5月前
|
安全 开发工具 git
【Git】Git 系统性使用指南(内含《核心Git命令速查表》)
这是一份全面、实用的Git系统性指南,涵盖基础配置、日常操作、分支管理、远程协作、撤销回退、标签与高级命令(如rebase、cherry-pick、bisect等),附带速查表、规范建议和最佳实践,适合开发者日常参考、团队协作及面试复习。
1302 3
GEO
|
2月前
|
数据采集 人工智能 搜索推荐
2026年AI搜索优化三大趋势深度解读
2026年,AI重塑信息获取方式,“零点击搜索”兴起。GEO(生成式引擎优化)、AIVO(AI可见度优化)和AWVO(AI写作与网站内容优化)成为数字营销新核心。本文从市场规模、技术演进与实操策略三维度,解析三大趋势如何助力品牌抢占AI时代的“认知主权”与流量入口。
GEO
1180 0
|
机器学习/深度学习 资源调度 算法
机器学习领域必知数学符号与概念(一)
本文介绍了一些数学符号以及这些符号的含义。
1261 65
|
存储 监控 API
1688平台API接口实战:Python实现店铺全量商品数据抓取
本文介绍如何使用Python通过1688开放平台的API接口自动化抓取店铺所有商品数据。首先,开发者需在1688开放平台完成注册并获取App Key和App Secret,申请“商品信息查询”权限。接着,利用`alibaba.trade.product.search4trade`接口,构建请求参数、生成MD5签名,并通过分页机制获取全量商品数据。文中详细解析了响应结构、存储优化及常见问题处理方法,还提供了竞品监控、库存预警等应用场景示例和完整代码。
|
Java jenkins 网络安全
从零搭建 Gerrit 实现 code review
从零搭建 Gerrit 实现 code review
776 1
|
安全 算法 物联网
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。
|
传感器 人工智能 安全
《把握人机共融设计要点,重塑人机协作格局》
机器人已融入生活与工作的方方面面,从医疗到物流,其身影无处不在。实现人机共融,关键在于深度融合人与机器的优势,确保安全、高效、自然的交互。通过碰撞检测、安全距离设定和紧急制动系统保障安全;借助语音、手势、眼神交互实现自然沟通;智能协作发挥人机各自特长;个性化定制满足不同需求;情感交互让机器人更具“温度”。这一跨学科领域涉及机械、电子、AI与心理学,是未来机器人发展的核心方向。
548 0
|
iOS开发
mac不通过Xcode直接打开IOS模拟器
mac不通过Xcode直接打开IOS模拟器
1333 24
|
Shell 开发工具 git
Git的下载使用(获取源文件)
访Git官网下载区,选匹配OS版本,运行.exe开始安装。获取项目Git链接,文件夹内右键“Open Git Bash”,输入`git clone`加链接,执行下载即完成。
701 4
|
存储 移动开发 程序员
Docker部署Dillinger个人文本编辑器
【7月更文挑战第6天】Docker部署Dillinger个人文本编辑器
730 2