適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中的稽核記錄

你可以透過擴充pgaudit功能在 適用於 PostgreSQL 的 Azure 資料庫 中稽核資料庫活動。 pgaudit 提供詳細的會話與物件稽核記錄。

如果您需要 Azure 資源層級的記錄來進行計算和儲存體調整等作業,請參閱 Azure 活動記錄

使用方式的考量

預設會由 pgaudit 記錄陳述式,而 Postgres 的標準日誌功能則會輸出一般的日誌訊息。 在 適用於 PostgreSQL 的 Azure 資料庫 中,你可以設定所有日誌會傳送到 Azure 監視器 的日誌儲存庫,以便之後在 Log Analytics 中分析。 如果你啟用 Azure 監視器 資源日誌,日誌會自動以 JSON 格式傳送到 Azure 儲存體、Event Hubs 和 Azure 監視器 日誌,視你選擇而定。

若要了解如何設定 Azure 儲存體、事件中樞或 Azure 監視器記錄的記錄功能,請造訪伺服器記錄文章的資源記錄章節。

安裝延伸模組

若要使用 pgaudit 擴充功能,請先將該擴充功能加入 allowlist載入,並在預計使用該擴充功能的資料庫中建立該擴充功能。

設定擴充功能設定

pgaudit 可讓您設定工作階段或物件稽核記錄。 工作階段稽核記錄會發出已執行陳述式的詳細記錄。 物件稽核記錄是限定於特定關聯範圍的稽核。 您可以選擇設定一或兩種類型的記錄。

啟用pgaudit後,設定參數開始記錄。

要配置 pgaudit,請依照以下指示進行:

使用 Azure 入口網站

  1. 選取您的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。

  2. 在資源選單中, 設定區塊 中,選擇 參數

  3. 搜尋 pgaudit 參數。

  4. 選擇適當的參數進行編輯。 例如,要開始記錄 INSERTUPDATEDELETETRUNCATECOPY 語句,請設 pgaudit.logWRITE

  5. 選取 [儲存] 以儲存變更。

的官方pgaudit提供了每個參數的定義。 先測試參數,並確認您獲得預期的行為。

例如,設定 pgaudit.log_clientON 不僅會將稽核事件寫入伺服器日誌,還會將它們傳送至用戶端進程 (例如 psql)。 一般來說,關閉這個設定。

只有在 pgaudit.log_level 為開啟時才會啟用 pgaudit.log_client

在 適用於 PostgreSQL 的 Azure 資料庫 flexible server 中,您無法如 pgaudit 文件中所述,使用 -(減號)捷徑來設定 pgaudit.log。 逐一指定所有必用的語句類別(READWRITE、 等等)。

如果你將參數設 log_statementDDLALL ,並執行 CREATE ROLE/USER ... WITH PASSWORD ... ; or ALTER ROLE/USER ... WITH PASSWORD ... ; 指令,PostgreSQL 會在 PostgreSQL 日誌中建立一個明文密碼的條目,這可能會造成潛在的安全風險。 此行為是 PostgreSQL 引擎設計所預期的。

不過,您可以使用 pgaudit 擴充功能,並將 pgaudit.log 設為 DDL;如此一來,Postgres 伺服器日誌中就不會記錄任何 CREATE/ALTER ROLE 陳述,這點與將 log_statement 設為 DDL 時不同。 如果你需要記錄這些語句,也可以設定 pgaudit.logROLE,這樣在記錄 CREATE/ALTER ROLE時會刪除密碼。

稽核記錄檔格式

每一個審核項目都以 開 AUDIT:頭。 條目其餘部分的格式詳載於 pgaudit中。

入門指南

若要快速啟動,請設定 pgaudit.logALL,然後開啟伺服器日誌以檢閱輸出。

檢視稽核記錄

存取日誌的方法取決於你選擇的端點。 針對 Azure 儲存體,請參閱記錄儲存體帳戶一文。 針對事件中樞,請參閱串流 Azure 記錄一文。

對於 Azure 監視器 日誌,你要把日誌傳送到你選擇的工作區。 Postgres 日誌使用 AzureDiagnostics 集合模式,因此你可以從 AzureDiagnostics 表格查詢日誌。 欲了解更多查詢與警示資訊,請參閱 Azure 監視器 Logs 查詢概覽。

您可以透過此查詢開始使用。 您可以根據查詢來設定警示。

搜尋 pgaudit Postgres 日誌中該伺服器過去一天的所有條目。

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

安裝 pgaudit 擴充套件後的主版本升級

在主要版本升級過程中,程序會自動丟棄 pgaudit 擴充功能,升級完成後再重新建立。 雖然這個過程會恢復擴充功能,但不會自動保留任何自訂 pgaudit.log 設定或其他相關參數。