设置 pgAudit 扩展 - Amazon Aurora

设置 pgAudit 扩展

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

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

以下步骤假设您的 Aurora PostgreSQL 数据库集群 与自定义数据库集群 参数组相关联。

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

  2. 在导航窗格中,选择 Aurora PostgreSQL 数据库集群的写入器实例

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

  4. 选择此链接以打开与您的 Aurora PostgreSQL 数据库集群 关联的自定义参数。

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

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

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

    添加了 pgAudit 的 shared_preload_libaries 参数的图像。
  8. 重启 Aurora PostgreSQL 数据库集群的写入器实例,以使对 shared_preload_libraries 参数的更改生效。

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

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

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

    labdb=> \q
  12. 登录 AWS 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. 从“数据库”列表中选择 Aurora PostgreSQL 数据库集群的写入器实例

设置 pgAudit

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

  1. 使用以下 AWS 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. 使用以下 AWS CLI 命令重启 Aurora PostgreSQL 数据库集群的写入器实例,以便初始化 pgaudit 库。

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

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

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

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

    labdb=> \q
  5. 使用以下 AWS 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

    使用以下 AWS CLI 命令重启 Aurora PostgreSQL 数据库集群的写入器实例

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