ページの先頭行へ戻る
Enterprise Postgres 16 SP1 セキュリティ運用ガイド

6.3 スケーラブルな監査ログ機能のセットアップ

通常の監査ログ機能では、loggerプロセスも専用ログファイルも1つだけであり、すべてのバックエンドプロセスを含めたインスタンス内のすべての監査ログの出力負荷が集中します。
スケーラブルな監査ログ機能では、下図のように専用ログファイルが複数に分散し、それらのファイルと1対1の関係で出力プロセス(loggerプロセス)も複数実行されます。いくつに分散させるかは、パラメータ設定によって変更することができます。

参考

専用ログファイルとloggerプロセスは1対1で紐づくため、loggerプロセスも専用ログファイルの数だけ動作します。以下のように、psあるいはProcess Explorerによって報告されるコマンドタイトル部分の末尾に番号が付与されています。プロセスの状態を監視するときに参考にしてください。

pgaudit logger 0
pgaudit logger 1
pgaudit logger 2

pgaudit設定ファイルのパラメータ

以下のパラメータを“outputセクション”に設定してください。
パラメータの詳細は“6.4 pgaudit設定ファイル”を参照してください。

enable_parallel_logger

“on”を設定します。デフォルトは“off”です。
pgaudit設定ファイルのloggerパラメータが“auditlog”(デフォルト)でなければ、“on”にしても無視されます。

parallel_loggers

loggerプロセスの数を設定します。“2”以上の数値を設定してください。
設定する値の見積りについては、“6.4 pgaudit設定ファイル”を参照してください。

log_rotation_age

本パラメータを設定することを強く推奨します。設定しなくてもスケーラブルな監査ログ機能は動作しますが、出力された監査ログを分析するときに、誤った分析を避けることが容易になります。“スケーラブルな監査ログ機能利用時の注意点”を参照してください。

[output]
enable_parallel_logger = on
parallel_loggers = 5
log_rotation_age = 1h

postgresql.confのパラメータ

max_worker_processes

max_worker_processesパラメータに設定されている値に、parallel_loggersに設定した値を加算します。これは、loggerプロセスがバックグラウンドワーカ―として動作するためです。

max_worker_processesに8が設定されていて、新たにparallel_loggersに3を設定するときは、以下のように設定します。

max_worker_processes = 11

専用ログファイルの格納先

専用ログファイルは以下のパスと名前で出力されます。
log_directoryパラメータとlog_filenameパラメータの詳細は、“6.4 pgaudit設定ファイル”を参照してください。

log_directoryパラメータの設定値/番号/番号-log_filenameパラメータの設定値

番号は0からparallel_loggersで指定した個数までの範囲の数値です。parallel_loggersが3ならば、0~2までの値になります。これらの複数のファイルの分析方法は、“6.9 SQLでの監査ログの分析”を参照してください。

parallel_loggers=3を設定した場合、以下のように専用ログファイルが生成されます。

pgaudit_log/0/0-pgaudit-2024-02-02_153000.log
pgaudit_log/1/1-pgaudit-2024-02-02_153000.log
pgaudit_log/2/2-pgaudit-2024-02-02_153000.log

複数のディスクを用いた運用が可能な場合は、以下のように専用ログファイルの格納先ディレクトリを別のディスクへのシンボリックリンクに設定することで、ディスクのI/O負荷を分散させることも可能です。

Windowsの場合にはシンボリックリンクではなくジャンクションを使用してください。

pgaudit_log/2を別のディスクに配置する場合

Linuxln -s /other_disk/2  pgaudit_log/2
Windowsmklink /J pgaudit_log\2 E:\other_disk\2

状況に応じて、以下のようにシンボリックリンクを作成してください。スケーラブルな監査ログ機能のログ出力先に指定したディレクトリ(あるいはシンボリックリンク)が存在しなければ自動的にディレクトリが作成されます。ディレクトリが既に存在する場合はログ出力先として利用します。