pgAudit - 开源PostgreSQL审计日志

pgAudit是一个PostgreSQL的审计扩展,提供会话和对象级别的详细审计日志,满足政府、金融或ISO认证的审计需求。它记录了数据库活动的详细信息,以弥补标准日志记录的不足,方便审计人员进行深度审查。设置pgAudit时需要注意避免产生过多日志,以防止磁盘空间耗尽。pgAudit适用于PostgreSQL 9.5及以上版本。
摘要由CSDN通过智能技术生成

翻译自官方文档:传送门

能力有限,如有错误请指正

介绍

PostgreSQL审计扩展(pgAudit)通过标准的PostgreSQL日志记录工具提供详细的会话和(或)对象审计日志记录。

pgAudit的目标是为PostgreSQL用户提供生成审计日志的能力,这些日志通常需要符合政府、金融或ISO认证。

审计是对个人或组织账户的正式检查,通常由独立机构进行。pgAudit收集的信息被正确地称为审计跟踪或审计日志。本文档中使用了审计日志这一术语。

为什么使用 pgAudit?

基本语句日志记录可以由 log_statement = all 的标准日志记录工具提供。这对于监视和其他使用是可以接受的,但是没有提供审计所需的详细程度。仅仅拥有对数据库执行的所有操作的列表是不够的。还必须能够找到审计人员感兴趣的特定报表。标准的日志记录功能显示了用户的请求,而pgAudit关注的是数据库满足请求时发生的事情的细节。

例如,审计人员可能想要验证某个特定的表是在文档化的维护窗口中创建的。对于grep来说,这似乎是一项简单的工作,但是如果您看到这样一个(故意混淆的)例子:

BEGIN
    EXECUTE 'CREATE TABLE import' || 'ant_table (id INT)';
END $$;

标准日志记录会给您这样的结果:

LOG:  statement: DO $$
BEGIN
    EXECUTE 'CREATE TABLE import' || 'ant_table (id INT)';
END $$;

在动态创建表的情况下,查找感兴趣的表可能需要一些代码知识。这并不理想,因为只搜索表名更可取。这就是pgAudit的用武之地。对于相同的输入,它将在日志中产生以下输出:

AUDIT: SESSION,33,1,FUNCTION,DO,,,"DO $$
BEGIN
    EXECUTE 'CREATE TABLE import' || 'ant_table (id INT)';
END $$;"
AUDIT: SESSION,33,2,DDL,CREATE TABLE,TABLE,public.important_table,CREATE TABLE important_table (id INT)

不仅 DO 块被记录,子语句2还包含 CREATE TABLE 的全文,其中包含语句类型、对象类型和全限定名称,以方便搜索。

当记录 SELECT语句 和 DML语句 时,pgAudit可以配置为记录语句中引用的每个关系的单独条目。查找涉及特定表的所有语句不需要解析。实际上,我们的目标是,语句文本主要是为深度取证提供的,不应该被要求进行审计。

使用注意事项

根据设置的不同,pgAudit可以生成大量日志记录。小心地确定在您的环境中需要审计哪些日志,以避免日志记录过多。

例如,在OLAP环境中工作时,审计大型事实表中的日志插入可能不太明智。日志文件的大小可能是插入的实际数据大小的许多倍,因为日志文件表示为文本。由于日志通常与操作系统一起存储,这可能导致磁盘空间很快耗尽。在不可能将审计日志记录限制到某些表的情况下,请确保在测试时评估性能影响,并在日志卷上分配大量空间。对于OLTP环境也是如此。即使插入卷没有那么高,审计日志记录的性能影响仍然会显著影响延迟。

为了限制SELECT和DML语句记录的关系审计的数量,考虑使用对象审计日志记录(请参阅对象审计)。对象审计日志允许选择要记录的关系,从而减少总体日志量。然而,当添加新关系时,它们必须显式地添加到对象审计日志记录中。在这种情况下,将指定的表排除在日志之外并包含所有其他表的编程解决方案可能是一个不错的选择。

PostgreSQL版本兼容性

pgAudit支持Postgr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值