使用pgaudit插件 本节介绍了pgaudit插件使用方法。 简介 金融机构、政府机构和许多行业都需要保留 审计日志以满足监管要求。通过将 PostgreSQL 审计扩展 (pgAudit) 与RDS for PostgreSQL 数据库实例一起使用,可以捕获审计员通常需要或满足法规要求的详细记录。例如,您可以设置pgAudit扩展来跟踪对特定数据库和表所做的更改、记录进行更改的用户以及许多其他详细信息。 更多信息,请参见pgaudit官方文档。 支持版本说明 可通过以下SQL语句查询当前实例是否支持该插件: plaintext SELECT FROM pgavailableextensionversions WHERE name 'pgaudit'; 如果不支持,可通过使用转储与还原升级大版本使用该插件。 RDS PostgreSQL实例支持的插件,具体请参见支持的插件列表。 插件安装/卸载 安装插件 plaintext SELECT controlextension ('create', 'pgaudit'); 删除插件 plaintext SELECT controlextension ('drop', 'pgaudit'); 更多信息,请参见通过界面安装和卸载插件和通过SQL命令安装和卸载插件。 基本使用 设置pgaudit扩展 1. 首先需要在插件管理中预加载pgaudit插件,因为pgaudit扩展会安装用于审核数据定义语言 (DDL) 语句的事件触发器。 默认插件管理中已预加载pgaudit插件,也可通过如下命令查看是否加载成功。 plaintext show sharedpreloadlibraries; sharedpreloadlibraries pgstatstatements,pgaudit,passwordcheck.so,pgsqlhistory,authdelay,pglogical (1 row) 2. 加载成功后再进行创建插件,请参考插件安装/卸载。 3. 插件安装好后,需要开启审计日志。 a. 在控制台上单击实例名称,在基本信息页面,选择“SQL审计”页签。 b. 单击“设置SQL审计”。 c. 在弹框中,开启审计日志开关,可选择审计日志保留天数。 4. 开启审计日志后,还需要配置参数。 在界面“参数修改”页签,搜索“pgaudit.log”参数(指定会话审计日志将记录哪些类型的语句)并设置为适合业务需要的值,可以捕获对日志的插入、更新、删除和其他一些类型的更改。“pgaudit.log”参数取值如下: 表 参数值说明 参数值 描述 none 这是原定设置值。不记录任何数据库更改。 all 记录所有内容(read、write、function、role、ddl、misc)。 ddl 记录所有数据定义语言(DDL)语句(不包括在 ROLE 类中)。 function 记录函数调用和DO块。 misc 记录其他命令,例如:DISCARD、FETCH、CHECKPOINT、VACUUM、SET read 当源为关系(例如表)或查询时记录SELECT和COPY。 role 记录与角色和权限相关的语句,例如:GRANT、REVOKE、CREATE ROLE、ALTER ROLE、DROP ROLE write 当目标为关系(表)时,记录INSERT、UPDATE、DELETE、TRUNCATE和COPY。 pgaudit还有一些参数,可根据业务需要在界面上进行设置。 表 参数说明 参数名称 描述 pgaudit.log 指定会话审计日志记录将记录哪些类的语句。 pgaudit.logcatalog 指定在语句中的所有关系都在pgcatalog中的情况下,应该启用会话日志记录。 pgaudit.logclientauthentication 控制是否记录用户认证的信息。 pgaudit.logextrafield 控制是否记录PID、IP、用户名、数据库等字段。 pgaudit.logfilerotationage 设置独立审计日志的轮转时间。 pgaudit.logparameter 指定审核日志记录应该包含与语句传递的参数。 pgaudit.logrelation 指定会话审核日志记录是否应该为SELECT或DML语句中引用的每个关系(表、视图等)创建单独的日志项。 pgaudit.logrows 指定审计日志记录应包括语句检索或影响的行。 pgaudit.logwritetxid 控制是否记录写操作(insert/update等)的txid。 pgaudit.logstatementonce 指定日志记录是否包含语句、文本和参数。 pgaudit.logclient 指定审计日志是否发送到客户端。 pgaudit.loglevel 指定用于日志条目的日志级别。 pgaudit.writeintopglogfile 控制是否仍旧向PostgreSQL的运行日志记录审计信息。 如果您需要在客户端上显示审计日志,可以通过修改以下参数进行配置: − “pgaudit.writeintopglogfile”和“pgaudit.logclient”参数值同时为on,再根据“pgaudit.loglevel”参数选择客户端显示的日志级别(例如notice),客户端再次进行查询时,可以在客户端显示对应级别的审计日志。 − “pgaudit.writeintopglogfile”和“pgaudit.logclient”参数只要有一个值为off,客户端不会显示审计日志。 − “pgaudit.loglevel”仅在“pgaudit.logclient”打开时启用。