设置 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 扩展
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 RDS for PostgreSQL 数据库实例。
-
打开 的配置选项卡。RDS for PostgreSQL 数据库实例的 Configuration(配置)选项卡。在实例详细信息中,找到 Parameter group(参数组)链接。
-
选择此链接以打开与您的 RDS for PostgreSQL 数据库实例关联的自定义参数。
-
在 Parameters(参数)搜索字段中,键入
shared_pre
以查找shared_preload_libraries
参数。 -
选择 Edit parameters(编辑参数)以访问属性值。
-
将
pgaudit
添加到 Values(值)字段的列表中。使用逗号分隔值列表中的项目。 重启 RDS for PostgreSQL 数据库实例,以使对
shared_preload_libraries
参数的更改生效。当实例可用时,请验证 pgAudit 是否已初始化。使用
psql
连接到 RDS for PostgreSQL 数据库实例,然后运行以下命令。SHOW shared_preload_libraries;
shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)
初始化 pgAudit 后,您现在可以创建扩展了。您需要在初始化库后创建扩展,因为
pgaudit
扩展会为审计数据定义语言(DDL)语句安装事件触发器。CREATE EXTENSION pgaudit;
关闭
psql
会话。labdb=>
\q
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 在列表中找到
pgaudit.log
参数并设置为适合您的使用案例的值。例如,将pgaudit.log
参数设置为write
(如下图所示),可以捕获对日志的插入、更新、删除和其他一些类型的更改。还可以为
pgaudit.log
参数选择以下值之一。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
。
选择 Save changes(保存更改)。
通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 从“数据库”列表中选择 RDS for PostgreSQL 数据库实例。
设置 pgAudit
要使用 Amazon CLI 设置 pgAudit,您可以调用 modify-db-parameter-group 操作来修改自定义参数组中的审计日志参数,如以下过程所示。
使用以下 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" \ --regionaws-region
-
使用以下 Amazon CLI 命令重启 RDS for PostgreSQL 数据库实例,以便初始化 pgaudit 库。
aws rds reboot-db-instance \ --db-instance-identifier
your-instance
\ --regionaws-region
当实例可用时,您可以验证
pgaudit
是否已初始化。使用psql
连接到 RDS for PostgreSQL 数据库实例,然后运行以下命令。SHOW shared_preload_libraries;
shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)
初始化 pgAudit 后,您现在可以创建扩展了。
CREATE EXTENSION pgaudit;
关闭
psql
会话以便您可以使用 Amazon CLI。labdb=>
\q
使用以下 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" \ --regionaws-region
还可以为
pgaudit.log
参数选择以下值之一。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
。
使用以下 Amazon CLI 命令重启 RDS for PostgreSQL 数据库实例。
aws rds reboot-db-instance \ --db-instance-identifier
your-instance
\ --regionaws-region