分享方式:


適用於 PostgreSQL 的 Azure 資料庫 (單一伺服器) 中的稽核記錄

適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器即將淘汰。 強烈建議您升級至適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫單一伺服器會發生什麼情況? (部分機器翻譯)。

適用於 PostgreSQL 的 Azure 資料庫 (單一伺服器) 的資料庫活動稽核記錄,可透過 PostgreSQL 稽核擴充功能 pgAudit 取得。 pgAudit 擴充功能提供詳細的工作階段和物件稽核記錄。

注意

pgAudit 擴充功能在適用於 PostgreSQL 的 Azure 資料庫上處於預覽狀態。 只能在一般用途和記憶體優化伺服器上啟用。

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

使用狀況的考量

根據預設,pgAudit 記錄陳述式會與您的一般記錄陳述式一起發出,其方法是使用 Postgres 的標準記錄功能。 在適用於 PostgreSQL 的 Azure 資料庫中,可以透過 Azure 入口網站或 Azure CLI 下載這些 .log 檔案。 檔案集合的最大儲存空間為 1 GB。 每個檔案最多提供七天的可用性。 預設為三天。 此服務是短期儲存體選項。

此外,您可以將所有記錄設定為傳送至 Azure 監視器記錄存放區,以便後續在 Log Analytics 中進行分析。 如果您啟用監視器資源記錄,記錄將會根據您的選擇,以 JSON 格式自動傳送至 Azure 儲存體、Azure 事件中樞或監視器記錄。

啟用 pgAudit 會在伺服器上產生大量記錄,這會影響效能和記錄儲存體。 建議您使用監視器記錄,其會提供長期儲存選項,以及分析和警示功能。 關閉標準記錄功能,以降低其他記錄功能效能的影響:

  1. 將參數 logging_collector 設定為 OFF
  2. 重新啟動伺服器以套用此變更。

若要瞭解如何設定儲存體、事件中樞或監視記錄的記錄功能,請參閱適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器中記錄的資源記錄一節。

安裝 pgAudit

若要安裝 pgAudit,您必須先將其包含在伺服器的共用預先載入程式庫中。 需要重新啟動伺服器,對 Postgres shared_preload_libraries 參數的變更才會生效。 您可以使用入口網站CLIREST API 來變更參數。

若要使用入口網站

  1. 選取適用於 PostgreSQL 的 Azure 資料庫伺服器。

  2. 在左側的 [設定] 下,選取 [伺服器參數]。

  3. 搜尋 shared_preload_libraries

  4. 選取 PGAUDIT

    螢幕擷取畫面:顯示已為 PGAUDIT 啟用 shared_preload_libraries 的適用於 PostgreSQL 的 Azure 資料庫。

  5. 重新啟動伺服器以套用變更。

  6. 使用 psql 之類的用戶端連線至您的伺服器,並啟用 pgAudit 擴充功能:

    CREATE EXTENSION pgaudit;
    

提示

如果您看到錯誤,請確認您已在儲存 shared_preload_libraries 之後重新啟動伺服器。

pgAudit 設定

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

注意

pgAudit 設定是全域指定的,不能在資料庫或角色層級指定。

安裝 pgAudit 之後,您可以設定其參數以開始記錄。

若要設定 pgAudit,請在入口網站中:

  1. 選取適用於 PostgreSQL 的 Azure 資料庫伺服器。

  2. 在左側的 [設定] 下,選取 [伺服器參數]。

  3. 搜尋 pgaudit 參數。

  4. 選取要編輯的適當設定參數。 例如,若要開始記錄,請將 pgaudit.log 設定為 WRITE

    螢幕擷取畫面:顯示適用於 PostgreSQL 的 Azure 資料庫使用 pgAudit 設定記錄。

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

pgAudit 文件提供每個參數的定義。 先測試參數,並確認您獲得預期的行為。 例如:

  • 開啟設定 pgaudit.log_client 時,會將記錄重新導向至 psql 之類的用戶端程序,而不是寫入至檔案。 一般而言,請將此設定保持 [已停用]。
  • 只有當 pgaudit.log_client 為 ON 時,才會啟用 pgaudit.log_level 參數。

注意

在適用於 PostgreSQL 的 Azure 資料庫中,無法使用如 pgAudit 文件中所述的減號快速鍵 (-) 來設定 pgaudit.log。 所有必要的陳述式類別 (例如 READ、WRITE) 都應該個別指定。

稽核記錄檔格式

每個稽核項目分別會以記錄行開頭附近的 AUDIT: 表示。 pgAudit 文件詳細說明了其餘項目的格式。

如果您需要任何其他欄位來滿足稽核需求,請使用 Postgres 參數 log_line_prefix。 字串 log_line_prefix 是每個 Postgres 記錄行開頭的輸出。 舉例來說,下列 log_line_prefix 設定會提供時間戳記、使用者名稱、資料庫名稱和程序識別碼:

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

若要了解 log_line_prefix,請參閱 PostgreSQL 文件

開始使用

若要快速開始使用,請將 pgaudit.log 設定為 WRITE。 接著,開啟記錄以檢閱輸出。

檢視稽核記錄

如果您使用 .log 檔案,您的稽核記錄會包含在與 PostgreSQL 錯誤記錄相同的檔案中。 您可以透過入口網站或CLI 來下載記錄檔。

如果您使用 Azure 資源記錄,則存取記錄的方式取決於您所選擇的端點。 如需儲存體,請參閱 Azure 資源記錄。 針對事件中樞,另請參閱 Azure 資源記錄

針對監視器記錄,記錄會傳送至您選取的工作區。 Postgres 記錄會使用 AzureDiagnostics 收集模式,以便可從 AzureDiagnostics 資料表加以查詢,如下所示。 若要深入瞭解查詢和警示,請參閱 Azure 監視器中的記錄查詢

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

搜尋過去一天中特定伺服器的所有 Postgres 記錄:

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

下一步