从审计日志记录中排除用户或数据库
如 RDS for PostgreSQL 数据库日志文件中所述,PostgreSQL 日志会消耗存储空间。使用 pgAudit 扩展会在不同程度上增加日志中收集的数据量,具体取决于您跟踪的更改。您可能不需要审计 RDS for PostgreSQL 数据库实例中的每个用户或数据库。
为了最大限度地减少对存储的影响,避免不必要地捕获审计记录,您可以将用户和数据库排除在审计范围之外。您还可以在给定会话中更改日志记录。下面的示例向您演示如何操作。
注意
会话级别的参数设置优先于 RDS for PostgreSQL 数据库实例的自定义数据库参数组中的设置。如果您不希望数据库用户绕过您的审计日志记录配置设置,请务必更改其权限。
假设您的 RDS for PostgreSQL 数据库实例配置为审计所有用户和数据库的相同级别的活动。然后,您决定不想对用户 myuser
进行审计。您可以使用以下 SQL 命令对 myuser
关闭审计功能。
ALTER USER myuser SET pgaudit.log TO 'NONE';
然后,您可以使用以下查询来检查 pgaudit.log
的 user_specific_settings
列,以确认该参数已设置为 NONE
。
SELECT usename AS user_name, useconfig AS user_specific_settings FROM pg_user WHERE usename = 'myuser';
您将看到如下输出。
user_name | user_specific_settings
-----------+------------------------
myuser | {pgaudit.log=NONE}
(1 row)
在给定用户与数据库的会话期间,您可以使用以下命令对此用户关闭日志记录功能。
ALTER USER myuser IN DATABASE mydatabase SET pgaudit.log TO 'none';
使用以下查询,对于特定用户和数据库组合检查 pgaudit.log 的设置列。
SELECT usename AS "user_name", datname AS "database_name", pg_catalog.array_to_string(setconfig, E'\n') AS "settings" FROM pg_catalog.pg_db_role_setting s LEFT JOIN pg_catalog.pg_database d ON d.oid = setdatabase LEFT JOIN pg_catalog.pg_user r ON r.usesysid = setrole WHERE usename = 'myuser' AND datname = 'mydatabase' ORDER BY 1, 2;
您将看到类似以下内容的输出。
user_name | database_name | settings
-----------+---------------+------------------
myuser | mydatabase | pgaudit.log=none
(1 row)
对 myuser
关闭审计后,您决定不想跟踪对 mydatabase
的更改。您可以使用以下命令对该特定数据库关闭审计。
ALTER DATABASE mydatabase SET pgaudit.log to 'NONE';
然后,使用以下查询检查 database_specific_settings 列,以确认 pgaudit.log 已设置为 NONE。
SELECT a.datname AS database_name, b.setconfig AS database_specific_settings FROM pg_database a FULL JOIN pg_db_role_setting b ON a.oid = b.setdatabase WHERE a.datname = 'mydatabase';
您将看到如下输出。
database_name | database_specific_settings
---------------+----------------------------
mydatabase | {pgaudit.log=NONE}
(1 row)
要将 myuser 的设置恢复为默认设置,请使用以下命令:
ALTER USER myuser RESET pgaudit.log;
要将数据库的设置恢复为默认设置,请使用以下命令。
ALTER DATABASE mydatabase RESET pgaudit.log;
要将用户和数据库重置为默认设置,请使用以下命令。
ALTER USER myuser IN DATABASE mydatabase RESET pgaudit.log;
还可以通过将 pgaudit.log
设置为 pgaudit.log
参数的其他允许值之一,将特定事件捕获到日志中。有关更多信息,请参阅 pgaudit.log 参数允许的设置列表。
ALTER USER myuser SET pgaudit.log TO 'read'; ALTER DATABASE mydatabase SET pgaudit.log TO 'function'; ALTER USER myuser IN DATABASE mydatabase SET pgaudit.log TO 'read,function'