功能概述

通过 pgaudit 插件可以审计 PostgreSQL 数据库的操作。PostgreSQL 应用版本需为 v2.2.0-高可用版、v2.2.0-基础版,及以上版本。

操作步骤

步骤一:创建审计用户

  1. 创建一个权限为 普通权限 的数据库账号,用于审计。详情参考添加账号

  2. 高级权限 的用户通过 grant 命令为该审计用户授权需要记录审计日志的表的权限。

步骤二:安装 pgaudit 插件

  1. 使用 高级权限 的账号,通过高可用写 IP 连接数据库。详情参考连接数据库

  2. 执行以下命令,安装 pgaudit 插件。

    create extension pgaudit;

步骤三:配置 pgaudit 参数

数据库中所有节点,包括主实例节点和只读实例节点,均需配置 pgaudit 参数,即所有节点均需执行以下步骤。

  1. 使用 高级权限 的账号,通过高可用写 IP 连接数据库。详情参考连接数据库

  2. 执行以下命令更新 pgaudit 参数。

    alter system set pgaudit.role = 'auditor';
    alter system set pgaudit.log = 'WRITE, DDL, ROLE';

    参数说明如下,更多详细介绍请参考官方文档

    参数 说明

    pgaudit.role

    该参数用于指定负责进行审计日志记录的角色。例如配置为创建的审计用户 auditor

    pgaudit.log

    该参数用于指定需要被审计记录的操作。多个取值使用 , 分隔,支持通过 - 符号排除特定值,例如,ALL,-misc 表示记录除 MISC 外的所有操作。

    • none:默认值,不记录任何操作。

    • READ:记录 SELECT 和 COPY 操作。

    • WRITE:记录 INSERT、UPDATE、DELETE、TRUNCATE 和 COPY 操作。

    • FUNCTION:记录函数调用和 DO 块。

    • ROLE:记录与角色和权限相关的操作,例如 GRANT、REVOKE、CREATE/ALTER/DROP ROLE。

    • DDL:记录除 ROLE 类外的所有 DDL 操作。

    • MISC:记录其它操作,例如 DISCARD、FETCH、CHECKPOINT、VACUUM、SET 等。

    • MISC_SET:记录其他 SET 操作,例如 SET ROLE。

    • ALL:记录所有操作。

  3. 执行以下命令,重载配置,使修改生效。

    select pg_reload_conf();
  4. 执行以下命令,查看修改后的配置。

    show pgaudit.role;
    show pgaudit.log;

步骤四:查看审计日志

参考日志功能,查看相关日志信息,其中带有 AUDIT 关键字的日志即为审计日志。