SuperAPI AI 工具集

implementing-database-audit-logging

数据与分析

查看项目

更新于 10-15 23:26

技能介绍

用途:为合规与安全监控实现数据库审计日志,追踪所有数据修改(INSERT、UPDATE、DELETE),记录变更前后完整值、用户身份、时间戳和应用上下文。支持 PostgreSQL 与 MySQL 的触发器审计、变更数据捕获(CDC)模式及应用层审计日志。

主要能力:识别需审计的表(含 PII、财务数据、访问控制数据);创建含 table_name、record_id、action、old_values、new_values、changed_columns、changed_by、changed_at、client_ip、application_name、transaction_id 的 audit_log 表并建立索引;提供 PostgreSQL 审计触发器函数 audit_trigger_func(),通过 to_jsonb(NEW/OLD)、current_setting('app.user', true)、inet_client_addr()、txid_current() 捕获上下文;按 changed_at 范围按月分区;撤销应用用户对 audit_log 的 UPDATE/DELETE 权限以保护完整性;提供合规报告查询(记录变更历史、按用户查询、批量操作检测、非工作时间活动);支持归档至 S3/Azure Blob 等冷存储。

使用方式:需具备 CREATE TABLE、CREATE FUNCTION、CREATE TRIGGER 权限的数据库凭据,使用 psql 或 mysql CLI 执行审计 DDL。创建 audit_log 表与索引后,创建触发器函数并附加到各审计表,例如 CREATE TRIGGER audit_users AFTER INSERT OR UPDATE OR DELETE ON users FOR EACH ROW EXECUTE FUNCTION audit_trigger_func()。应用层需在每个请求开始时执行 SET LOCAL app.user = 'user@example.com',连接池在检出钩子中设置。

适用场景:HIPAA 医疗数据库审计、检测未授权数据修改、GDPR 第 15 条数据访问请求响应等。

限制:触发器会增加高写入表的开销;审计表可能占用大量磁盘(建议按被审计表年数据量的 10-30% 规划);current_setting('app.user') 可能返回 NULL;审计 INSERT 失败可能阻塞应用操作;需为审计数据使用独立表空间或存储卷。具体收费、价格与平台支持暂未提供。