稽核 適用於 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 資料庫 中,這些.log檔案可以透過 Azure 入口網站 或 Azure CLI 下載。 檔案集合的最大記憶體為 1 GB。 每個檔案最多可使用七天。 預設值為三天。 此服務是短期記憶體選項。

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

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

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

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

安裝pgAudit

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

若要使用入口 網站

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

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

  3. 搜尋 shared_preload_libraries

  4. 選取 [PGAUDIT]。

    顯示 適用於 PostgreSQL 的 Azure 資料庫 啟用 PGAUDIT shared_preload_libraries的螢幕快照。

  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 開啟時,才會啟用參數 pgaudit.log_level

注意

在 適用於 PostgreSQL 的 Azure 資料庫 中,pgaudit.log無法使用負號快捷方式 (-) 來設定,如 pgAudit 檔中所述。 應個別指定所有必要的語句類別,例如 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:"

下一步