使用 pgaudit

PostgreSQL 审计扩展 (pgaudit) 为您的 IBM Cloud® Databases for PostgreSQL 部署启用了会话日志记录功能。 要查看审计日志,请确保您 已为 启用日志记录功能 Cloud Databases,并完成了 创建 授权 S2S 的步骤,以授予向 发送日志 IBM® Cloud Logs 的访问权限。

会话记录

会话记录默认为关闭。 您可以启用会话记录参数,记录审计事件类型集的所有活动。 会话日志对整个数据库群集启用,对特定事件类型启用 onoff

事件类型

会话记录是按事件类型配置的。 所有版本都支持的事件类型有

  • 函数
  • 职能部门
  • DDL
  • READ
  • MISC
  • MISC_SET
  • 无(禁用日志记录)

有关更多信息,请参阅 pgaudit

启用 pgaudit 会话记录

要启用 pgaudit 会话记录,请以管理员用户身份连接,并调用 set_pgaudit_session_logging 函数,同时指定适当的事件参数。 会话记录直接在数据库中启用,不提供 API 或 CLI 访问。

例如,要启用 DDL 和 ROLE,您可以调用

SELECT public.set_pgaudit_session_logging(current_database(),'{ddl, role}');

您可以使用 dbname 代替 current_database() 函数指定数据库。

启用 pgaudit 用户日志

要启用 pgaudit 用户日志,请以管理员用户身份连接,并调用 set_pgaudit_user_logging 函数,同时指定适当的事件参数。 为特定用户而不是数据库中的所有用户启用用户日志。

例如,要启用“读取”和“写入”功能,请使用以下命令:

SELECT public.set_pgaudit_user_logging(<CREATED USER>,'{read, write}');

启用 pgaudit 数据库日志

要启用 pgaudit 数据库特定日志记录功能,请以管理员用户身份连接并调用 set_pgaudit_database_logging 函数,同时指定适当的事件参数。 如果一个实例中有多个数据库,则为特定数据库启用数据库日志记录。

例如,要在 current_database 中启用 DDL 和 ROLE,请使用以下命令:

SELECT public.set_pgaudit_database_logging(current_database(),'{ddl, role}');

SELECT public.set_pgaudit_database_logging('sampledatabase','{read, write, ddl}');

任何后续调用都会替换现有配置,而不是相加。 例如,随后调用 SELECT public.set_pgaudit_session_logging('{misc}'); 只记录 misc,但禁用 ddlrole

禁用 pgaudit

要禁用审计日志记录,请调用同一函数并指定 none。 例如:

SELECT public.set_pgaudit_session_logging(current_database(),'{none}');

在调用该函数时,会立即更改审计级别,而不会中断数据库活动。

审计日志

审计事件显示在 IBM® Cloud Logs Routing 中,格式如下:

LOG: AUDIT: SESSION,1,1,DDL,CREATE TABLE,,,create table f2 (id int);,<not logged>

如需了解更多信息,请参阅 pgaudit 格式

如果您想查看当前日志级别,可以运行该命令:

show pgaudit.log;