Azure Database for PostgreSQL(单一服务器)中的审核日志记录

适用于: Azure Database for PostgreSQL - 单一服务器

重要

Azure Database for PostgreSQL - 单一服务器即将停用。 我们强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 有关迁移到 Azure Database for PostgreSQL 灵活服务器的详细信息,请参阅 Azure Database for PostgreSQL 单一服务器的最新动态

Azure Database for PostgreSQL(单一服务器)中数据库活动的审核日志记录可通过 PostgreSQL 审核扩展 pgAudit 获得。 pgAudit 扩展提供详细会话和对象审核日志记录。

注意

pgAudit 扩展在 Azure Database for PostgreSQL 上为预览版。 它只能在常规用途和内存优化服务器上启用。

如果需要计算和存储缩放之类的操作的 Azure 资源级日志,请参阅 Azure 平台日志概述

使用注意事项

默认使用 Postgres 标准日志记录设备将 pgAudit 日志语句与常规日志语句一起发出。 在 Azure Database for PostgreSQL 中,这些 .log 文件可以通过 Azure 门户或 Azure CLI 下载。 文件集的最大存储为 1 GB。 每个文件的可用期最长为 7 天。 默认为 3 天。 此服务是一个短期存储选项。

也可将所有日志配置为发送到 Azure Monitor 日志存储,以便日后在 Log Analytics 中进行分析。 如果启用 Monitor 资源日志记录,日志会自动以 JSON 格式发送到 Azure 存储、Azure 事件中心或 Monitor Logs,具体取决于你的选择。

启用 pgAudit 会在服务器上生成大量日志记录,这会影响性能和日志存储。 建议使用 Monitor Logs,它提供更长期的存储选项以及分析和警报功能。 请关闭标准日志记录,以降低额外的日志记录对性能的影响:

  1. 将参数 logging_collector 设置为 OFF。
  2. 重启服务器以应用该更改。

若要了解如何设置将日志记录到存储、事件中心或 Monitor Logs 的功能,请参阅 Azure Database for PostgreSQL(单一服务器)日志中的资源日志部分。

安装 pgAudit

若要安装 pgAudit,需将其包括在服务器的共享预加载库中。 更改 Postgres 的 shared_preload_libraries 参数需要重启服务器才能生效。 可以使用门户CLIREST API 更改参数。

若要使用门户更改参数,请执行以下操作:

  1. 选择你的 Azure Database for PostgreSQL 服务器。

  2. 在左侧的“设置”下,选择“服务器参数” 。

  3. 搜索 shared_preload_libraries。

  4. 选择 PGAUDIT。

    显示为 PGAUDIT 启用 shared_preload_libraries 的 Azure Database for PostgreSQL 的屏幕截图。

  5. 重启服务器以应用更改。

  6. 使用客户端(例如 psql)连接到服务器,并启用 pgAudit 扩展:

    CREATE EXTENSION pgaudit;
    

提示

如果看到错误,请确认是否在保存 shared_preload_libraries 后重启了服务器。

pgAudit 设置

可以通过 pgAudit 配置会话或对象审核日志记录。 会话审核日志记录会发出已执行语句的详细日志。 对象审核日志记录是局限于特定关系的审核。 可以选择设置一个或两个类型的日志记录。

注意

pgAudit 设置在全局范围指定,不能在数据库或角色级别指定。

安装 pgAudit 以后,即可配置其参数以开始日志记录。

若要在门户中配置 pgAudit,请执行以下操作:

  1. 选择你的 Azure Database for PostgreSQL 服务器。

  2. 在左侧的“设置”下,选择“服务器参数” 。

  3. 搜索 pgaudit 参数。

  4. 选择适当的设置参数进行编辑。 例如,若要启动日志记录,请将 pgaudit.log 设置为 WRITE 。

    显示使用 pgAudit 配置日志记录的 Azure Database for PostgreSQL 的屏幕截图。

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

pgAudit 文档提供每个参数的定义。 请先测试参数,确认正常运行。 例如:

  • 启用 pgaudit.log_client 设置后,它会将日志重定向到客户端进程(如 psql)而不是写入文件。 通常应将此设置保持禁用状态。
  • 参数 pgaudit.log_level 仅在 pgaudit.log_client 为启用的情况下才启用 。

注意

在 Azure Database for PostgreSQL 中,不能使用 pgAudit 文档中所述的减号快捷方式 (-) 来设置 pgaudit.log。 应单独指定所有必需的语句类,例如 READ 和 WRITE。

审核日志格式

每个审核条目通过靠近日志行开头的 AUDIT: 进行指示。 条目其余部分的格式详见 pgAudit 文档

如果需要任何其他的字段来满足审核要求,请使用 Postgres 参数 log_line_prefix。 每个 Postgres 日志行开头的输出都是 log_line_prefix 字符串。 例如,以下 log_line_prefix 设置提供时间戳、用户名、数据库名称和进程 ID:

t=%m u=%u db=%d pid=[%p]:

若要了解有关 log_line_prefix 的详细信息,请参阅 PostgreSQL 文档

入门

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

查看审核日志

如果使用的是 .log 文件,则审核日志将与 PostgreSQL 错误日志包含在同一文件中。 可以从门户CLI 下载日志文件。

如果使用的是 Azure 资源日志记录,则日志的访问方式取决于所选的终结点。 对于存储,请参阅 Azure 资源日志。 对于事件中心,也请参阅 Azure 资源日志

对于 Monitor Logs,日志将发送到所选的工作区。 Postgres 日志使用 AzureDiagnostics 收集模式,因此可以利用 AzureDiagnostics 表进行查询,如下所示。 若要详细了解查询和警报,请参阅在 Azure Monitor 中记录查询

通过此查询开始使用。 可以基于查询配置警报。

搜索特定的服务器在过去一天生成的所有 Postgres 日志:

AzureDiagnostics
| where LogicalServerName_s == "myservername"
| where TimeGenerated > ago(1d) 
| where Message contains "AUDIT:"

后续步骤