前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PostgreSQL 审计怎么搞

PostgreSQL 审计怎么搞

作者头像
AustinDatabases
发布2020-02-13 17:51:58
2.5K0
发布2020-02-13 17:51:58
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

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

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

与大部分的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)

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

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

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

在日志中已经添加了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 选项。

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

pgaudit.log

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

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

pgaudit.log_catalog

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

pgaudit.log_relation

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • pgaudit.log
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档