温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PostgreSQL审计如何实现

发布时间:2021-11-26 09:14:51 来源:亿速云 阅读:569 作者:小新 栏目:大数据

小编给大家分享一下PostgreSQL审计如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

PostgreSQL 的审计还是要借助PostgreSQL的扩展pgaudit 来进行。有些熟悉PG的同学可能说,不是可以log_statement = all 来记录所有的语句吗,干嘛那么麻烦,自己去查日志不就好了。实际上如果公司有审计部门的情况下,这样是过不了关的,需要一个与商业数据功能相差无几的方式来面对审计部门的“亲和力”。

安装很简单,如果熟悉extension的话,当然pgaudit需要加载链接库中

PostgreSQL审计如何实现

与大部分的audit 的方式不同pg_audit记录在标准的PostgreSQL日志中。Pgaudit通过在模块加载时注册自身并为executorStart、executorCheckPerms、processUtility和object_access提供挂钩来工作。因此,pgaudit与另一种audit-trigger不同支持读取(SELECT、COPY)。一般来说,使用pgaudit,我们可以有两种操作模式,或者将它们结合使用:

session 模式或object 模式。

其中可以进行监控的方式

  • READ (select, copy from)

  • WRITE (insert, update, delete, truncate, copy to)

  • FUNCTION (function calls and DO blocks)

  • ROLE (grant, revoke, create/alter/drop role)

  • DDL (all DDL except those in ROLE)

  • MISC (discard, fetch, checkpoint, vacuum)

从上面可以审计监控的东西来说,还是很全面的。

下面我们可以来做一个测试

PostgreSQL审计如何实现

我们创建一个表,而这个表应该被audit 日志来记录,我们看看audit 日志是否记录了。从下图可以看到

PostgreSQL审计如何实现

在日志中已经添加了audit 的记录。

说明这个东西还是蛮好用的。日志的格式

  • AUDIT_TYPE - 告知你目前的audit 的方式是 session 还是 object

  • STATEMENT_ID - 主语句的会话ID

  • SUBSTATEMENT_ID - 主语句中每个子语句的顺序ID。

  • Operation type 操作的方式是DDL DCL DML 

  • COMMAND -  操作的命令

  • OBJECT_TYPE - 操作的OBJECT 类型

  • OBJECT_NAME - 操作的OBJECT 类型的名字,例如表名,存储过程名等等

  • STATEMENT - 执行的语句

  • PARAMETER - 相关的参数

此时有人可能提出,这个设计的不好,为什么不能设计到插入到表中,个人觉得有两点,既然叫审计日志,1 他是提供审计的  2  他是日志 

如果日志在某些情况下爆发增长,怎么办,塞满整个表的存储空间,从多方面考虑,让日志存储在适当的地方,其实是一个比较规范的做法。

下面我们来做几个尝试来看看审计日志是否能帮助我们,记录相关的操作,下图是PG相关的audit 选项。

PostgreSQL审计如何实现

相关的一些设置设什么意思

pgaudit.log

指定会话审计日志记录哪些语句类。

可以设置的类别 read , write ,function,role ,ddl,misc , All 等

pgaudit.log_catalog

指定当一条语句中的所有关系都位于pg_catalog中时,应该启用会话日志记录。禁用此设置将减少来自psql和PgAdmin等工具的日志噪音,这些工具会大量查询目录。

pgaudit.log_relation

指定会话审计日志记录是否应该为SELECT或DML语句中引用的每个关系(表、视图等)创建单独的日志条目。对于不使用对象审计日志记录的穷举日志记录,这是一个非常有用的快捷方式。

例如我们要记录 ddl ,role , functiton,以及更改系统配置 方面的操作记录

PostgreSQL审计如何实现

PostgreSQL审计如何实现

当然,这样的操作记录也不是没有缺点的,例如我想知道是那个账户做的某件事,这点还是没有做到,仅仅是知道在什么时间做了什么。

以上是“PostgreSQL审计如何实现”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI