Azure Database for PostgreSQL 中的审核日志记录

Azure Database for PostgreSQL 中的数据库活动的审核日志记录可通过 pgaudit 扩展获取。 pgaudit 提供详细的会话和/或对象审核日志记录。

如果希望 Azure 资源级日志用于计算和存储缩放等作,请参阅 Azure 活动日志

使用注意事项

默认情况下, pgaudit 日志语句和常规日志语句是使用 Postgres 的标准日志记录工具发出的。 在 Azure Database for PostgreSQL 中,可以将所有日志配置为发送到 Azure Monitor 日志存储,以便在 Log Analytics 中进行后续分析。 如果启用 Azure Monitor 资源日志记录,日志会自动(采用 JSON 格式)发送到 Azure 存储、事件中心和/或 Azure Monitor 日志,具体取决于你的选择。

若要了解如何设置到 Azure 存储、事件中心或 Azure Monitor 日志的日志记录,请访问 服务器日志文章的资源日志部分。

安装扩展

若要使用 pgaudit 扩展,需要在计划使用该扩展的数据库中 允许列表加载创建 扩展。

配置扩展设置

pgaudit 允许配置会话或对象审核日志记录。 会话审核日志记录 会发出已执行语句的详细日志。 对象审核日志记录的审核 范围限定于特定关系。 可以选择设置一种或两种类型的日志记录。

启用pgaudit后,可以配置其参数以开始日志记录。

若要配置 pgaudit,可以按照以下说明作:

使用 Azure 门户

  1. 选择 Azure Database for the PostgreSQL 的实例。

  2. 在资源菜单中的 “设置”下,选择 “服务器参数”。

  3. pgaudit搜索参数。

  4. 选择要编辑的相应参数。 例如,若要开始日志记录 INSERTUPDATEDELETETRUNCATECOPY 语句,请设置为 pgaudit.logWRITE

  5. 选择“ 保存 ”按钮保存更改。

提供每个参数的定义的官方文档pgaudit。 首先测试参数,并确认你收到预期的行为。

例如,设置为pgaudit.log_clientON不仅将审核事件写入服务器日志,还将它们发送到客户端进程(如 psql)。 此设置通常应保持禁用状态。

pgaudit.log_level 仅在启用时 pgaudit.log_client 启用。

在 Azure Database for PostgreSQL 中,pgaudit.log无法使用文档中所述-pgaudit(减号)符号快捷方式进行设置。 应单独指定所有必需的语句类(READ、WRITE 等)。

如果将参数log_statement设置为DDL或运行或ALL运行或CREATE ROLE/USER ... WITH PASSWORD ... ;命令ALTER ROLE/USER ... WITH PASSWORD ... ;,则 PostgreSQL 会在 PostgreSQL 日志中创建一个条目,其中密码以明文形式记录,这可能会导致潜在的安全风险。 这是 PostgreSQL 引擎设计的预期行为。

但是,pgaudit可以使用扩展并设置为 pgaudit.logDDL,该扩展不会在 Postgres 服务器日志中记录任何CREATE/ALTER ROLE语句,这与设置为log_statementDDL时不同。 如果需要记录这些语句,也可以设置为pgaudit.logROLE,这会在日志记录CREATE/ALTER ROLE时对日志中的密码进行修订。

审核日志格式

每个审核条目都以 AUDIT:. 文档详细介绍pgaudit了条目的其余部分的格式。

入门指南

若要快速开始,请设置为pgaudit.logALL并打开服务器日志以查看输出。

查看审核日志

访问日志的方式取决于所选终结点。 请参阅 Azure 存储的 日志存储帐户 文章。 请参阅事件中心的 流 Azure 日志 文章。

对于 Azure Monitor 日志,日志将发送到所选工作区。 Postgres 日志使用 AzureDiagnostics 收集模式,以便可以从 AzureDiagnostics 表查询它们。 在 Azure Monitor 日志查询 概述中了解有关查询和警报的详细信息。

可以使用此查询开始。 可以根据查询配置警报。

在 Postgres 日志中搜索最后一天特定服务器的所有 pgaudit 条目

AzureDiagnostics
| where Resource =~ "<flexible-server-name>"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"

安装了 pgaudit 扩展的主要版本升级

在主版本升级期间,pgaudit 扩展会自动删除,然后在升级完成后重新创建。 还原扩展时,不会自动保留在或其他相关参数中 pgaudit.log 设置的任何自定义配置。