【问题标题】:Postgresql log user or role changes activityPostgresql 记录用户或角色更改活动
【发布时间】:2022-06-23 12:48:13
【问题描述】:

我需要记录用户和角色中的所有更改(例如:向用户授予超级用户),记录添加新用户/角色,记录删除用户/角色。这是为了监控我们数据的安全性并确保将用户/角色更改记录到表甚至日志文件中。

我尝试在 pg_rolespg_user 上创建触发器

CREATE TRIGGER pg_roles_trigger BEFORE INSERT OR UPDATE OR DELETE ON pg_roles
FOR EACH ROW EXECUTE PROCEDURE user_access_log_trigger();

但我收到错误Error:"pg_roles" is a view. DETAIL: Views cannot have row-level BEFORE or AFTER triggers

因此尝试在基表pg_authid 上创建触发器。但它也给出了错误: ERROR: permission denied: "pg_authid" is a system catalog SQL state: 42501

Postgresql 有什么选项吗?

【问题讨论】:

    标签: postgresql logging


    【解决方案1】:

    官方 postgres 文档在这里很有帮助。您可以通过将文件中的log_statement 键配置为all 来配置postgresql.conf 以记录所有查询和ddl。

    https://www.postgresql.org/docs/current/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHAT

    如果需要将其加载到表中,您可以解析日志并将该信息写回表中,或者在需要审核时轮换和备份日志。

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2021-07-11
      • 2021-05-15
      • 2013-02-14
      • 1970-01-01
      • 2014-12-07
      • 2021-01-13
      • 2019-04-09
      • 2012-05-13
      相关资源
      最近更新 更多