设置 pgAudit 扩展
要在 RDS for PostgreSQL 数据库实例 上设置 pgAudit 扩展,首先要将 pgAudit 添加到 RDS for PostgreSQL 数据库实例的自定义数据库参数组 上的共享库中。有关创建自定义数据库参数组的信息,请参阅 Amazon RDS 的参数组。接下来,安装 pgAudit 扩展。最后,指定要审计的数据库和对象。本部分中的过程向您展示如何操作。您可以使用 AWS Management Console或 AWS CLI。
您必须拥有 rds_superuser
角色的权限才能执行所有这些任务。
以下步骤假设您的 RDS for PostgreSQL 数据库实例与自定义 数据库参数组相关联。
设置 pgAudit 扩展
登录 AWS 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
登录 AWS 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
要使用 AWS CLI 设置 pgAudit,您可以调用 modify-db-parameter-group 操作来修改自定义参数组中的审计日志参数,如以下过程所示。
使用以下 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" \ --regionaws-region
-
使用以下 AWS 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
会话以便您可以使用 AWS CLI。labdb=>
\q
使用以下 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" \ --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
。
使用以下 AWS CLI 命令重启 RDS for PostgreSQL 数据库实例。
aws rds reboot-db-instance \ --db-instance-identifier
your-instance
\ --regionaws-region