设置 pgAudit 扩展 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

设置 pgAudit 扩展

要在 RDS for PostgreSQL 数据库实例 上设置 pgAudit 扩展,首先要将 pgAudit 添加到 RDS for PostgreSQL 数据库实例的自定义数据库参数组 上的共享库中。有关创建自定义数据库参数组的信息,请参阅 Amazon RDS 的参数组接下来,安装 pgAudit 扩展。最后,指定要审计的数据库和对象。本部分中的过程向您展示如何操作。您可以使用 Amazon Web Services Management Console或 Amazon CLI。

您必须拥有 rds_superuser 角色的权限才能执行所有这些任务。

以下步骤假设您的 RDS for PostgreSQL 数据库实例与自定义 数据库参数组相关联。

设置 pgAudit 扩展
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 RDS for PostgreSQL 数据库实例

  3. 打开 的配置选项卡。RDS for PostgreSQL 数据库实例的 Configuration(配置)选项卡。在实例详细信息中,找到 Parameter group(参数组)链接。

  4. 选择此链接以打开与您的 RDS for PostgreSQL 数据库实例关联的自定义参数。

  5. Parameters(参数)搜索字段中,键入 shared_pre 以查找 shared_preload_libraries 参数。

  6. 选择 Edit parameters(编辑参数)以访问属性值。

  7. pgaudit 添加到 Values(值)字段的列表中。使用逗号分隔值列表中的项目。

    添加了 pgAudit 的 shared_preload_libaries 参数的图像。
  8. 重启 RDS for PostgreSQL 数据库实例,以使对 shared_preload_libraries 参数的更改生效。

  9. 当实例可用时,请验证 pgAudit 是否已初始化。使用 psql 连接到 RDS for PostgreSQL 数据库实例,然后运行以下命令。

    SHOW shared_preload_libraries; shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)
  10. 初始化 pgAudit 后,您现在可以创建扩展了。您需要在初始化库后创建扩展,因为 pgaudit 扩展会为审计数据定义语言(DDL)语句安装事件触发器。

    CREATE EXTENSION pgaudit;
  11. 关闭 psql 会话。

    labdb=> \q
  12. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  13. 在列表中找到 pgaudit.log 参数并设置为适合您的使用案例的值。例如,将 pgaudit.log 参数设置为 write(如下图所示),可以捕获对日志的插入、更新、删除和其他一些类型的更改。

    带有设置的 pgaudit.log 参数的图像。

    还可以为 pgaudit.log 参数选择以下值之一。

    • none – 这是默认值。不记录任何数据库更改。

    • all – 记录所有内容(read、write、function、role、ddl、misc)。

    • ddl – 记录所有数据定义语言(DDL)语句(不包括在 ROLE 类中)。

    • function – 记录函数调用和 DO 块。

    • misc – 记录其他命令,例如 DISCARDFETCHCHECKPOINTVACUUMSET

    • read –当源为关系(例如表)或查询时记录 SELECTCOPY

    • role – 记录与角色和权限相关的语句,例如 GRANTREVOKECREATE ROLEALTER ROLEDROP ROLE

    • write – 当目标为关系(表)时,记录 INSERTUPDATEDELETETRUNCATECOPY

  14. 选择 Save changes(保存更改)。

  15. 通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  16. 从“数据库”列表中选择 RDS for PostgreSQL 数据库实例

设置 pgAudit

要使用 Amazon CLI 设置 pgAudit,您可以调用 modify-db-parameter-group 操作来修改自定义参数组中的审计日志参数,如以下过程所示。

  1. 使用以下 Amazon CLI 命令向 shared_preload_libraries 参数中添加 pgaudit

    aws rds modify-db-parameter-group \ --db-parameter-group-name custom-param-group-name \ --parameters "ParameterName=shared_preload_libraries,ParameterValue=pgaudit,ApplyMethod=pending-reboot" \ --region aws-region
  2. 使用以下 Amazon CLI 命令重启 RDS for PostgreSQL 数据库实例,以便初始化 pgaudit 库。

    aws rds reboot-db-instance \ --db-instance-identifier your-instance \ --region aws-region
  3. 当实例可用时,您可以验证 pgaudit 是否已初始化。使用 psql 连接到 RDS for PostgreSQL 数据库实例,然后运行以下命令。

    SHOW shared_preload_libraries; shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)

    初始化 pgAudit 后,您现在可以创建扩展了。

    CREATE EXTENSION pgaudit;
  4. 关闭 psql 会话以便您可以使用 Amazon CLI。

    labdb=> \q
  5. 使用以下 Amazon CLI 命令指定要由会话审计日志记录所记录的语句类别。该示例将 pgaudit.log 参数设置为 write,用于捕获对日志的插入、更新和删除。

    aws rds modify-db-parameter-group \ --db-parameter-group-name custom-param-group-name \ --parameters "ParameterName=pgaudit.log,ParameterValue=write,ApplyMethod=pending-reboot" \ --region aws-region

    还可以为 pgaudit.log 参数选择以下值之一。

    • none – 这是默认值。不记录任何数据库更改。

    • all – 记录所有内容(read、write、function、role、ddl、misc)。

    • ddl – 记录所有数据定义语言(DDL)语句(不包括在 ROLE 类中)。

    • function – 记录函数调用和 DO 块。

    • misc – 记录其他命令,例如 DISCARDFETCHCHECKPOINTVACUUMSET

    • read –当源为关系(例如表)或查询时记录 SELECTCOPY

    • role – 记录与角色和权限相关的语句,例如 GRANTREVOKECREATE ROLEALTER ROLEDROP ROLE

    • write – 当目标为关系(表)时,记录 INSERTUPDATEDELETETRUNCATECOPY

    使用以下 Amazon CLI 命令重启 RDS for PostgreSQL 数据库实例

    aws rds reboot-db-instance \ --db-instance-identifier your-instance \ --region aws-region