你可以透過擴充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 入口網站:
選取您的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。
在資源選單中, 設定區塊 中,選擇 參數。
搜尋
pgaudit參數。選擇適當的參數進行編輯。 例如,要開始記錄
INSERT、UPDATE、DELETE、TRUNCATE和COPY語句,請設pgaudit.log為WRITE。選取 [儲存] 以儲存變更。
的官方pgaudit提供了每個參數的定義。 先測試參數,並確認您獲得預期的行為。
例如,設定 pgaudit.log_client 為 ON 不僅會將稽核事件寫入伺服器日誌,還會將它們傳送至用戶端進程 (例如 psql)。 一般來說,關閉這個設定。
只有在 pgaudit.log_level 為開啟時才會啟用 pgaudit.log_client。
在 適用於 PostgreSQL 的 Azure 資料庫 flexible server 中,您無法如 pgaudit 文件中所述,使用 -(減號)捷徑來設定 pgaudit.log。 逐一指定所有必用的語句類別(READ、 WRITE、 等等)。
如果你將參數設 log_statement 為 DDL 或 ALL ,並執行 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.log 為 ROLE,這樣在記錄 CREATE/ALTER ROLE時會刪除密碼。
稽核記錄檔格式
每一個審核項目都以 開 AUDIT:頭。 條目其餘部分的格式詳載於 的pgaudit中。
入門指南
若要快速啟動,請設定 pgaudit.log 為 ALL,然後開啟伺服器日誌以檢閱輸出。
檢視稽核記錄
存取日誌的方法取決於你選擇的端點。 針對 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 設定或其他相關參數。