適用於 PostgreSQL 的 Azure 資料庫 的資料庫活動稽核記錄可透過 pgaudit 擴充功能使用。
pgaudit 提供詳細的工作階段和/或物件稽核記錄。
如果您需要 Azure 資源層級的記錄來進行計算和儲存體調整等作業,請參閱 Azure 活動記錄。
使用方式的考量
預設情況下,pgaudit 會記錄日誌,而您的一般日誌訊息會透過 Postgres 的標準日誌功能輸出。 在適用於 PostgreSQL 的 Azure 資料庫中,您可以設定要傳送至 Azure 監視器記錄存放區的所有記錄,以便稍後在 Log Analytics 中進行分析。 如果您啟用 Azure 監視器資源記錄,您的記錄會自動傳送至 (以 JSON 格式) 至 Azure 儲存體、事件中樞和/或 Azure 監視器記錄,視您的選擇而定。
若要了解如何設定 Azure 儲存體、事件中樞或 Azure 監視器記錄的記錄功能,請造訪伺服器記錄文章的資源記錄章節。
安裝延伸模組
若要能夠使用 pgaudit 延伸模組,您必須在計畫使用它的資料庫中加入 允許清單、 載入及 建立 延伸模組。
設定擴充功能設定
pgaudit 可讓您設定工作階段或物件稽核記錄。
工作階段稽核記錄會發出已執行陳述式的詳細記錄。
物件稽核記錄是限定於特定關聯範圍的稽核。 您可以選擇設定一或兩種類型的記錄。
啟用 pgaudit之後,您可以設定其引數以開始記錄。
若要設定 pgaudit,您可以遵循下列指示:
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 資料庫執行個體。
在資源選單中,在 設定中選擇 參數。
搜尋
pgaudit參數。選擇適當的參數進行編輯。 例如,若要開始記載
INSERT、UPDATE、DELETETRUNCATE和COPY陳述式,請設為pgaudit.logWRITE。選取 [儲存] 按鈕以儲存變更。
pgaudit 的官方文件提供了每個參數的定義。 先測試參數,並確認您獲得預期的行為。
例如,設定 pgaudit.log_client 為 ON 不僅會將稽核事件寫入伺服器日誌,還會將它們傳送至用戶端進程 (例如 psql)。 此設定通常應保持停用狀態。
只有在 pgaudit.log_level 為開啟時才會啟用 pgaudit.log_client。
在適用於 PostgreSQL 的 Azure 資料庫中,pgaudit.log 無法使用 -(減號)符號捷徑來設定,如 pgaudit 文件中所述。 所有必要的陳述式類別 (READ 、 WRITE 等) 都應個別指定。
如果您將 log_statement 參數設定為 DDL or 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 儲存體,請參閱記錄儲存體帳戶文章。 請參閱 Event Hubs 的 串流處理 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:"
已安裝 pgaudit 擴充功能時的主要版本升級
在主要版本升級期間,pgaudit 擴充功能會自動捨棄,然後在升級完成後重新建立。 雖然已還原延伸模組,但在 pgaudit.log 中設定的任何自訂組態或其他相關參數都不會自動保留。