配置日志记录行为

如需配置 pgAudit 日志记录行为,请设置 pgaudit.log 标志或 pgaudit.role 标志:

  • 设置 pgaudit.log 以启用和配置会话日志记录。您可以在实例、数据库或角色上设置此标志,以定义 pgAudit 日志记录的操作范围。您可以将该标志设置为一个值,以定义 pgAudit 日志记录的操作类型。

  • 设置 pgaudit.role 以启用和配置对象日志记录,该日志记录会记录影响特定关系的语句。您可以将此标志设置为角色的名称,然后向您希望记录的特定对象授予语句访问权限。语句访问权限包括 SELECT, INSERT, UPDATE, and DELETE。pgAudit 会记录任何用户运行的与访问权限和对象组合相符的所有操作。

以下部分提供了示例,展示了设置 pgAudit 日志记录行为的选项。

如需了解此扩展程序的其他功能,请参阅 pgAudit 文档

为实例中的所有数据库配置会话审核日志记录

如需为实例中的所有数据库配置审核,请在实例级设置 pgaudit.log 标志。

例如:

  • 如需为实例中所有数据库的所有操作启用审核,请执行以下操作:
    gcloud alloydb instances update my-instance \
        --database-flags pgaudit.log=all[,flag2=value2...] \
        --region=us-central1 \
        --cluster=my-cluster \
        --project=my-project
    
  • 如需仅针对实例中所有数据库的读取和写入操作启用审核,请执行以下操作:
    gcloud alloydb instances update my-instance \
        --database-flags=^:^pgaudit.log=read,write[:flag2=value2...] \
        --region=us-central1 \
        --cluster=my-cluster \
        --project=my-project
    

请注意使用备用分隔符语法,这样您就可以在标志值中使用英文逗号字符。

如需了解如何配置数据库标志,请参阅配置数据库标志

为特定数据库配置会话审核日志记录

您可以通过在数据库级别设置 pgaudit.log 标志来为特定数据库配置审核。

例如,如需为数据库 finance 启用读写审核,请执行以下操作:

finance=> ALTER DATABASE finance SET pgaudit.log = 'read,write';

为单个用户配置会话审核日志记录

您可以通过在各个角色级别设置 pgaudit.log 来为特定用户启用审核。

例如,如需为用户 Alice 执行的所有数据库操作设置审核,请执行以下操作:

finance=> ALTER ROLE alice SET pgaudit.log = 'all';

配置对象审核日志记录

关系的审核比特定数据库的审核范围小一些。审核关系时,系统会将一个唯一的审核员角色分配给 pgaudit.role 参数。此操作会记录授予此角色的任何对象或关系。

例如:

  • 如需为员工数据库中“薪水”关系的所有 SELECT 查询配置审核,请执行以下操作:
    employee=> CREATE ROLE auditor WITH NOLOGIN;
    employee=> ALTER DATABASE employee SET pgaudit.role = 'auditor';
    employee=> GRANT SELECT ON salary TO auditor;
    

您还可以审核给定关系的一部分列。

例如:

  • 如需配置仅当从 salary 关系访问 incometax_status 列时才会发生的审核日志记录,请执行以下操作:
    employee=> GRANT SELECT(income, tax_status) ON salary TO auditor;