配置日志记录行为

如要配置 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;
    

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

例如:

  • 如要配置只有在有人通过薪资关系访问 incometax_status 列时才发生的审核日志记录,可进行如下设置:
    employee=> GRANT SELECT(income, tax_status) ON salary TO auditor;