使用 pgaudit
PostgreSQL 审计扩展 (pgaudit) 为您的 IBM Cloud® Databases for PostgreSQL 部署启用了会话日志记录功能。 要查看审计日志,请确保您 已为 启用日志记录功能 Cloud Databases,并完成了 创建 授权 S2S 的步骤,以授予向 发送日志 IBM® Cloud Logs 的访问权限。
会话记录
会话记录默认为关闭。 您可以启用会话记录参数,记录审计事件类型集的所有活动。 会话日志对整个数据库群集启用,对特定事件类型启用 on 或 off。
事件类型
会话记录是按事件类型配置的。 所有版本都支持的事件类型有
- 函数
- 职能部门
- 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,但禁用 ddl 和 role。
禁用 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;