华为云云数据库rds使用pgaudit插件_云淘科技

简介

金融机构、政府机构和许多行业都需要保留 审计日志以满足监管要求。通过将 PostgreSQL 审计扩展 (pgAudit) 与RDS for PostgreSQL 数据库实例一起使用,可以捕获审计员通常需要或满足法规要求的详细记录。例如,您可以设置pgAudit扩展来跟踪对特定数据库和表所做的更改、记录进行更改的用户以及许多其他详细信息。

更多信息,请参见pgaudit官方文档。

支持版本说明

PostgreSQL 12、 13、14最新的小版本支持该插件。可通过以下SQL语句查询当前实例是否支持该插件:

SELECT * FROM pg_available_extension_versions WHERE name = 'pgaudit';

如果不支持,可通过升级内核小版本或者使用转储与还原升级大版本使用该插件。

RDS PostgreSQL实例支持的插件,具体请参见支持的插件列表。

插件安装/卸载

安装插件

SELECT control_extension ('create', 'pgaudit');

删除插件

SELECT control_extension ('drop', 'pgaudit');

更多信息,请参见通过界面安装和卸载插件和通过SQL命令安装和卸载插件。

基本使用

设置pgaudit扩展

首先需要在插件管理中预加载pgaudit插件,因为pgaudit扩展会安装用于审核数据定义语言 (DDL) 语句的事件触发器。 默认插件管理中已预加载pgaudit插件,也可通过如下命令查看是否加载成功。

show shared_preload_libraries;
                             shared_preload_libraries                             
---------------------------------------------------------------------------------
 pg_stat_statements,pgaudit,passwordcheck.so,pg_sql_history,auth_delay,pglogical
(1 row)

加载成功后再进行创建插件,请参考插件安装/卸载。
插件安装好后,需要开启审计日志。

如需开通审计日志功能,请联系客服申请。

在控制台上单击实例名称,在基本信息页面,选择“SQL审计”页签。

图1 SQL审计

单击“设置SQL审计”。
在弹框中,开启审计日志开关,可选择审计日志保留天数。

图2 设置SQL审计

开启审计日志后,还需要配置参数。

在界面“参数修改”页签,搜索“pgaudit.log”参数(指定会话审计日志将记录哪些类型的语句)并设置为适合业务需要的值,可以捕获对日志的插入、更新、删除和其他一些类型的更改。“pgaudit.log”参数取值如下:

表1 参数值说明

参数值

描述

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还有一些参数,可根据业务需要在界面上进行设置。

表2 参数说明

参数名称

描述

pgaudit.log_catalog

指定在语句中的所有关系都在pg_catalog中的情况下,应该启用会话日志记录。

pgaudit.log_client_authentication

控制是否记录用户认证的信息。

pgaudit.log_extra_field

控制是否记录PID、IP、用户名、数据库等字段。

pgaudit.log_file_rotation_age

设置独立审计日志的轮转时间。

pgaudit.log_parameter

指定审核日志记录应该包含与语句传递的参数。

pgaudit.log_relation

指定会话审核日志记录是否应该为SELECT或DML语句中引用的每个关系(表、视图等)创建单独的日志项。

pgaudit.log_rows

指定审计日志记录应包括语句检索或影响的行。

pgaudit.log_write_txid

控制是否记录写操作(insert/update等)的txid。

pgaudit.logstatementonce

指定日志记录是否包含语句、文本和参数。

SQL审计功能验证

执行sql语句。

create table t1 (id int);

insert into t1 values (1);

select * from t1;
 id
----
  1

(1 rows)

在界面上通过“SQL审计”页签进行审计日志下载。

审计日志包含以下内容:

AUDIT: OBJECT,1,1,READ,SELECT,TABLE,public.t1,select * from t1;

AUDIT:表示这是一个审计日志条目。
OBJECT:表示这是一个对象级别的审计日志。
第一个1:表示对象的 ID。
第二个1:表示对象的子 ID。
READ:表示这是一个读取操作。
SELECT:表示这是一个 SELECT 查询。
TABLE:表示对象类型是表。
public.t1:表示表的名称和模式。
select * from t1:表示执行的 SQL 查询语句。

父主题: 插件管理

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家