共用方式為


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

適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

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

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

使用方式的考量

根據預設,pgAudit 記錄陳述式會與您的一般記錄陳述式一起發出,其方法是使用 Postgres 的標準記錄功能。 在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中,您可以將所有記錄設定為傳送至 Azure 監視器記錄存放區,以便後續在 Log Analytics 中進行分析。 如果您啟用 Azure 監視器資源記錄,記錄將會根據您的選擇,以 JSON 格式自動傳送至 Azure 儲存體、事件中樞和/或 Azure 監視器記錄。

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

安裝 pgAudit

在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中安裝 pgAudit 延伸模組之前,您將需要允許列出 pgAudit 延伸模組以供使用。

使用 Azure 入口網站

  1. 選取適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體。
  2. 在提要欄位中,選取 [伺服器參數]
  3. 搜尋 azure.extensions 參數。
  4. 選取 [pgAudit] 做為您想要列入允許清單的延伸模組。 螢幕擷取畫面顯示適用於 PostgreSQL 的 Azure 資料庫 - 允許列出要安裝的延伸模組。

使用 Azure CLI

您可以透過 CLI 參數集命令允許清單延伸模組。

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value pgAudit

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

使用 Azure 入口網站

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

  2. 在提要欄位中,選取 [伺服器參數]

  3. 搜尋 shared_preload_libraries 參數。

  4. 選取 pgaudit螢幕擷取畫面:顯示適用於 PostgreSQL 的 Azure 資料庫彈性伺服器已為 pgaudit 啟用 shared_preload_libraries。

  5. 您可以在 psql 中執行下列查詢,以確認 pgaudit 已載入 shared_preload_libraries 中:

    show shared_preload_libraries;
    

    您應該會在將傳回 shared_preload_libraries 的查詢結果中看到 pgaudit

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

    CREATE EXTENSION pgaudit;
    

提示

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

pgAudit 設定

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

啟用 pgAudit 之後,您可以設定其參數以開始記錄。 若要設定 pgAudit,您可以依照下列指示操作。 使用 Azure 入口網站

  1. 選取適用於 PostgreSQL 的 Azure 資料庫伺服器。
  2. 在提要欄位中,選取 [伺服器參數]
  3. 搜尋 pgaudit 參數。
  4. 挑選要編輯的適當設定參數。 例如,若要開始記錄設定 pgaudit.logWRITE螢幕擷取畫面:顯示適用於 PostgreSQL 的 Azure 資料庫使用 pgAudit 設定記錄
  5. 按一下 [儲存] 按鈕以儲存變更

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

注意

pgaudit.log_client 設定為 [開啟],會將記錄重新導向至用戶端程序 (例如 psql),而不會寫入至檔案。 此設定通常應保持停用狀態。

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

注意

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

注意

如果您將 log_statement 參數設定為 DDL 或 ALL,並執行 CREATE ROLE/USER ... WITH PASSWORD ... ; ALTER ROLE/USER ... WITH PASSWORD ... ; 命令,則 PostgreSQL 會在 PostgreSQL 記錄中建立一個項目,其中的密碼會以純文字記錄,而可能導致潛在的安全性風險。 這是根據 PostgreSQL 引擎設計的預期行為。 不過,您可以使用 PGAudit 擴充功能,並在伺服器參數頁面中設定 pgaudit.log='DDL' 參數;不同於 Postgres log_statement='DDL' 設定,這不會在 Postgres Log 中記錄任何 CREATE/ALTER ROLE 陳述式。 如果您需要記錄這些陳述式,您可以額外新增 pgaudit.log ='ROLE',而記錄 'CREATE/ALTER ROLE' 則會從記錄中修訂密碼。

稽核記錄檔格式

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

開始使用

若要快速開始使用,請將 pgaudit.log 設定為 WRITE,並開啟您的伺服器記錄以檢閱輸出。

檢視稽核記錄

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

針對 Azure 監視器記錄,記錄會傳送至您選取的工作區。 Postgres 記錄會使用 AzureDiagnostics 收集模式,以便可從 AzureDiagnostics 資料表加以查詢。 下表中的欄位說明如下。 在 Azure 監視器記錄查詢概觀中深入了解查詢和警示。

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

在 Postgres 記錄中搜尋特定伺服器在過去一天中的所有 pgAudit 項目

AzureDiagnostics
| where Resource =~ "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"

下一步