你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Database for PostgreSQL 中进行审核日志记录

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

如果需要对计算和存储缩放之类的操作进行 Azure 资源级别的日志记录,请参阅 Azure 活动日志

使用注意事项

默认情况下,通过使用 Postgres 的标准日志记录设备将 pgaudit 日志语句与常规日志语句一起发出。 在 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.log 设置为 WRITE

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

pgaudit 的官方文档提供每个参数的定义。 请先测试参数,确认获取的是预期行为。

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

pgaudit.log_level 只有在 pgaudit.log_client 处于打开状态时才会启用。

在 Azure Database for PostgreSQL 中,根据 pgaudit 文档中的说明,不能使用 -(减)号快捷方式来设置 pgaudit.log。 所有必需的语句类(READ、WRITE 等)均应单独指定。

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

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

审核日志格式

每个审核条目都以 AUDIT: 开头。 条目其余部分的格式详见 pgaudit文档

入门指南

若要快速开始,请将 pgaudit.log 设置为 ALL,然后打开服务器日志查看输出。

查看审核日志

访问日志的方式取决于所选的终结点。 有关 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 或其他相关参数中设置的任何自定义配置。