审计数据库对象 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

审计数据库对象

RDS for PostgreSQL 数据库实例上设置 pgAudit 并根据您的要求进行配置后,将在 PostgreSQL 日志中捕获更多详细信息。例如,虽然默认 PostgreSQL 日志记录配置标识数据库表中发生更改的日期和时间,但使用 pgAudit 扩展后,日志条目可以包括模式、进行更改的用户和其他详细信息,具体取决于扩展参数的配置方式。您可以设置审计以通过以下方法跟踪更改。

  • 对于每个会话,按用户进行跟踪。对于会话级别,您可以捕获完全限定的命令文本。

  • 对于每个对象,按用户和数据库进行跟踪。

当您在系统上创建 rds_pgaudit 角色,然后将此角色添加到自定义参数组中的 pgaudit.role 参数时,将激活对象审计功能。默认情况下,pgaudit.role 参数处于未设置状态,唯一允许的值是 rds_pgaudit。以下步骤假设 pgaudit 已初始化,并且您已按照设置 pgAudit 扩展中的步骤创建了 pgaudit 扩展。

设置 pgAudit 后 PostgreSQL 日志文件的图像。

如本示例所示,“LOG: AUDIT: SESSION”行提供了有关表及其架构的信息以及其他详细信息。

设置对象审计
  1. 使用 psql 连接到 RDS for PostgreSQL 数据库实例

    psql --host=your-instance-name.aws-region.rds.amazonaws.com --port=5432 --username=postgrespostgres --password --dbname=labdb
  2. 使用以下命令创建名为 rds_pgaudit 的数据库角色。

    labdb=> CREATE ROLE rds_pgaudit; CREATE ROLE labdb=>
  3. 关闭 psql 会话。

    labdb=> \q

    在接下来的几步中,使用 Amazon CLI 修改自定义参数组中的审计日志参数。

  4. 使用以下 Amazon CLI 命令将 pgaudit.role 参数设置为 rds_pgaudit。默认情况下,此参数为空,rds_pgaudit 是唯一允许的值。

    aws rds modify-db-parameter-group \ --db-parameter-group-name custom-param-group-name \ --parameters "ParameterName=pgaudit.role,ParameterValue=rds_pgaudit,ApplyMethod=pending-reboot" \ --region aws-region
  5. 使用以下 Amazon CLI 命令重启 RDS for PostgreSQL 数据库实例,以使对参数的更改生效。

    aws rds reboot-db-instance \ --db-instance-identifier your-instance \ --region aws-region
  6. 运行以下命令确认 pgaudit.role 设置为 rds_pgaudit

    SHOW pgaudit.role; pgaudit.role ------------------ rds_pgaudit

要测试 pgAudit 日志记录,您可以运行几条要审计的示例命令。例如,您可以运行以下命令。

CREATE TABLE t1 (id int); GRANT SELECT ON t1 TO rds_pgaudit; SELECT * FROM t1; id ---- (0 rows)

数据库日志应包含类似于以下内容的条目。

... 2017-06-12 19:09:49 UTC:...:rds_test@postgres:[11701]:LOG: AUDIT: OBJECT,1,1,READ,SELECT,TABLE,public.t1,select * from t1; ...

有关查看日志的信息,请参阅监控 Amazon RDS 日志文件

要了解关于 pgAudit 扩展的更多信息,请参阅 GitHub 上的 pgAudit