次の方法で共有


Azure Database for PostgreSQL での監査ログ

Azure Database for PostgreSQL のデータベース アクティビティの監査ログは、 pgaudit 拡張機能を通じて使用できます。 pgaudit は、詳細なセッションやオブジェクト監査ログを提供します。

コンピューティングやストレージのスケーリングなどの操作に Azure リソース レベルのログが必要な場合は、 Azure アクティビティ ログを参照してください。

使用に関する考慮事項

既定では、 pgaudit ログ ステートメントと通常のログ ステートメントは、Postgres の標準ログ機能を使用して出力されます。 Azure Database for PostgreSQL では、Log Analytics で後で分析できるように、すべてのログを Azure Monitor ログ ストアに送信するように構成できます。 Azure Monitor リソース ログを有効にした場合、選択内容に応じて、ログが Azure Storage、Event Hubs、または Azure Monitor ログに (JSON 形式で) 自動的に送信されます。

Azure Storage、Event Hubs、または Azure Monitor ログへのログ記録を設定する方法については、 サーバー ログに関する記事のリソース ログセクションを参照してください。

拡張機能のインストール

pgaudit拡張機能を使用できるようにするには、拡張機能を使用する予定のデータベースで拡張機能を許可リスト読み込み作成する必要があります。

拡張機能の設定を構成する

pgaudit では、セッションまたはオブジェクト監査ログを構成できます。 セッション監査ログ は、実行されたステートメントの詳細なログを出力します。 オブジェクト監査ログ は、特定の関係をスコープとする監査です。 1 つまたは両方の種類のログ記録を設定できます。

pgauditを有効にすると、そのパラメーターを構成してログ記録を開始できます。

pgauditを構成するには、次の手順に従います。

Azure portal を使用して以下を実行します。

  1. PostgreSQL 用の Azure Database のインスタンスを選択します。

  2. リソース メニューの [設定] で、[ サーバー パラメーター] を選択します。

  3. pgaudit パラメーターを検索します。

  4. 編集する適切なパラメーターを選択します。 たとえば、 INSERTUPDATEDELETETRUNCATE、および COPY ステートメントのログ記録を開始するには、 pgaudit.logWRITE に設定します。

  5. [ 保存] ボタンを選択して変更を保存します。

pgauditの公式ドキュメントには、各パラメーターの定義が記載されています。 最初にパラメーターをテストし、期待される動作が得られます。

たとえば、 pgaudit.log_clientON に設定すると、監査イベントがサーバー ログに書き込まれるだけでなく、クライアント プロセス (psql など) にも送信されます。 通常、この設定は無効のままにする必要があります。

pgaudit.log_level は、 pgaudit.log_client がオンの場合にのみ有効になります。

Azure Database for PostgreSQL では、pgaudit.logpgauditドキュメントで説明されているように、- (負符号) のショートカットを使用して設定することはできません。 必要なすべてのステートメント クラス (READ、WRITE など) を個別に指定する必要があります。

log_statement パラメーターをDDLまたはALLに設定し、CREATE ROLE/USER ... WITH PASSWORD ... ;またはALTER ROLE/USER ... WITH PASSWORD ... ;コマンドを実行すると、PostgreSQL ログにエントリが作成され、パスワードがクリア テキストでログに記録されるため、セキュリティ リスクが発生する可能性があります。 これは、PostgreSQL エンジンの設計に従って想定される動作です。

ただし、pgaudit拡張機能を使用し、pgaudit.logDDL に設定すると、log_statementDDL に設定する場合とは異なり、Postgres サーバー ログにCREATE/ALTER ROLEステートメントは記録されません。 これらのステートメントをログに記録する必要がある場合は、pgaudit.logROLEを設定することもできます。これにより、CREATE/ALTER ROLEのログ記録中にログからパスワードが編集されます。

監査ログの形式

各監査エントリは、 AUDIT:で始まります。 エントリの残りの部分の形式は、pgauditドキュメントで詳しく説明されています。

作業の開始

すぐに開始するには、 pgaudit.logALL に設定し、サーバー ログを開いて出力を確認します。

監査ログの表示

ログにアクセスする方法は、選択したエンドポイントによって異なります。 Azure Storage の ログ ストレージ アカウント に関する記事を参照してください。 Event Hubs の ストリーム Azure ログ に関する記事を参照してください。

Azure Monitor ログの場合、選択したワークスペースにログが送信されます。 Postgres ログでは AzureDiagnostics コレクション モードが使用されるため、AzureDiagnostics テーブルからクエリを実行できます。 クエリとアラートの詳細については、 Azure Monitor ログ クエリの概要を参照してください。

このクエリを使用して開始できます。 クエリに基づいてアラートを構成できます。

最後の日に特定のサーバーの Postgres ログ内のすべての pgaudit エントリを検索します

AzureDiagnostics
| where Resource =~ "<flexible-server-name>"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"

pgaudit 拡張機能がインストールされたメジャー バージョンのアップグレード

メジャー バージョンのアップグレード中、pgaudit 拡張機能は自動的に削除され、アップグレードの完了後に再作成されます。 拡張機能が復元されている間、 pgaudit.log またはその他の関連パラメーターで設定されたカスタム構成は自動的に保持されません。