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

pgaudit拡張機能を使用して、Azure Database for PostgreSQLのデータベース アクティビティを監査できます。 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. 編集する適切なパラメーターを選択します。 たとえば、 INSERTUPDATEDELETETRUNCATE、および COPY ステートメントのログ記録を開始するには、 pgaudit.logWRITE に設定します。

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

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

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

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

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

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

ただし、pgaudit拡張機能を使用し、pgaudit.logDDL に設定すると、CREATE/ALTER ROLElog_statement に設定する場合とは異なり、Postgres サーバー ログにDDLステートメントは記録されません。 これらのステートメントをログに記録する必要がある場合は、 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 またはその他の関連パラメーターに設定されたカスタム構成は自動的に保持されません。