適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的稽核記錄
適用於: 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中的資料庫活動稽核記錄可透過pgaudit
擴充功能取得。 pgaudit
提供詳細的工作階段和/或物件稽核記錄。
如果您需要 Azure 資源層級的記錄來進行計算和儲存體調整等作業,請參閱 Azure 活動記錄。
使用方式的考量
根據預設, pgaudit
記錄語句和您的一般記錄語句會使用Postgres的標準記錄設備發出。 在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中,您可以將所有記錄設定為傳送至 Azure 監視器記錄存放區,以供稍後在 Log Analytics 中進行分析。 如果您啟用 Azure 監視器資源記錄,系統會根據您的選擇,自動將記錄傳送至 Azure 儲存體、事件中樞和/或 Azure 監視器記錄。
若要了解如何設定以記錄至 Azure 儲存體、事件中樞或 Azure 監視器記錄,請造訪伺服器記錄文章的資源記錄小節。
安裝擴充功能
若要能夠使用 pgaudit
擴充功能,您必須在 打算使用它的資料庫中,允許清單、 載入和 建立 擴充功能。
進行延伸模組設定
pgaudit
可讓您設定工作階段或物件稽核記錄。 工作階段稽核記錄會發出已執行陳述式的詳細記錄。 物件稽核記錄是限定於特定關聯範圍的稽核。 您可以選擇設定一或兩種類型的記錄。
啟用 pgaudit
之後,您可以設定其參數以開始記錄。
若要設定 pgaudit
,您可以遵循下列指示:
使用 Azure 入口網站:
選取適用於 PostgreSQL 彈性伺服器的 Azure 資料庫實例。
從 [資源] 功能表的 [設定] 底下,選取 [伺服器參數]。
搜尋
pgaudit
參數。挑選要編輯的適當參數。 例如,若要開始記錄
INSERT
、、DELETE
UPDATE
、TRUNCATE
和COPY
語句,請將 設定pgaudit.log
為WRITE
。選取 [ 儲存] 按鈕以儲存變更。
的官方檔pgaudit
提供每個參數的定義。 先測試參數,並確認您獲得預期的行為。
例如,將 設定 pgaudit.log_client
為 ON 不僅會將稽核事件寫入伺服器記錄檔,也會將它們傳送至客戶端進程(例如 psql)。 此設定通常應保持停用狀態。
只有在 pgaudit.log_client
為開啟時才會啟用 pgaudit.log_level
。
在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中,pgaudit.log
無法使用檔中所述pgaudit
的 (減號) 符號快捷方式來設定-
。 所有必要的陳述式類別 (READ、WRITE 等) 都應該個別指定。
如果您將 log_statement
參數設定為 DDL
或並執行 CREATE ROLE/USER ... WITH PASSWORD ... ;
或 ALL
ALTER ROLE/USER ... WITH PASSWORD ... ;
命令,則 PostgreSQL 會在 PostgreSQL 記錄中建立專案,其中密碼會以純文本記錄,這可能會導致潛在的安全性風險。 這是 PostgreSQL 引擎設計的預期行為。
不過, pgaudit
您可以使用 擴充功能,並將 設定 pgaudit.log
為 DDL
,這不會記錄 CREATE/ALTER ROLE
Postgres 伺服器記錄檔中的任何語句,不像當您將 設定 log_statement
為 DDL
時所做的一樣。 如果您需要記錄這些語句,您也可以將 設定 pgaudit.log
為 ROLE
,這會在記錄 時從記錄 CREATE/ALTER ROLE
中修訂密碼。
稽核記錄檔格式
每個稽核專案都是以 AUDIT:
開頭。 項目的其餘部分格式詳述於的檔pgaudit
。
開始使用
若要快速啟動,請將 設定 pgaudit.log
為 ALL
,然後開啟您的伺服器記錄以檢閱輸出。
檢視稽核記錄
您存取記錄的方式取決於您選擇的端點。 如需 Azure 儲存體,請參閱記錄記憶體帳戶一文。 請參閱事件中樞的 串流 Azure 記錄 文章。
針對 Azure 監視器記錄,記錄會傳送至您選取的工作區。 Postgres 記錄會使用 AzureDiagnostics 收集模式,以便可從 AzureDiagnostics 資料表加以查詢。 在 Azure 監視器記錄查詢概觀中深入了解查詢和警示。
您可以透過此查詢開始使用。 您可以根據查詢來設定警示。
在 Postgres 記錄中搜尋最後一天特定伺服器的所有 pgaudit
專案
AzureDiagnostics
| where Resource =~ "<flexible-server-name>"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"