次の方法で共有


Azure Database for PostgreSQL - フレキシブル サーバーでの監査ログ

適用対象: Azure Database for PostgreSQL - フレキシブル サーバー

Azure Database for PostgreSQL フレキシブル サーバーでのデータベース アクティビティの監査ログは、pgaudit 拡張機能を使って入手できます。 pgaudit は、セッションおよび/またはオブジェクトの詳細な監査ログを提供します。

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

使用に関する考慮事項

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

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

拡張機能をインストールする

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

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

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

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

pgaudit を構成するには、以下の手順のようにします。

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

  1. Azure Database for PostgreSQL フレキシブル サーバーのインスタンスを選びます。

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

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

  4. 適切なパラメーターを選んで編集します。 たとえば、INSERTUPDATEDELETETRUNCATECOPY ステートメントのログを始めるには、pgaudit.logWRITE に設定します。

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

pgaudit の公式のドキュメントには、各パラメーターの定義が記載されています。 まずパラメーターをテストし、期待どおりに動作することを確認します。

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

pgaudit.log_level が有効になるのは、pgaudit.log_client がオンになっている場合のみです。

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

log_statement パラメーターを DDL または ALL に設定して、CREATE ROLE/USER ... WITH PASSWORD ... ; または ALTER ROLE/USER ... WITH PASSWORD ... ; コマンドを実行した場合、PostgreSQL は 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 のログ クエリの概要に関する記事を参照してください。

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

過去 1 日の特定のサーバーに関するすべての pgaudit エントリを Postgres ログで検索する

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