pgauditのセットアップ方法を説明します。
pgaudit設定ファイルの作成
pgauditの動作に必要な情報を記述するpgaudit設定ファイルを任意のファイル名で作成します。pgaudit設定ファイルは、データベースの符号化方式と同じエンコードで作成してください。
また、監査ログに関するポリシーを意図しないユーザーに参照されないようにするために、pgaudit設定ファイルにはデータベース管理者にのみ読み込み権限を設定してください。
pgaudit設定ファイルの詳細については、“6.3 pgaudit設定ファイル”を参照してください。
注意
この時点では、pgaudit設定ファイルのruleセクションは定義しないでください。
pgaudit設定ファイルの例
[output] logger = 'auditlog'
postgresql.confの設定
postgresql.confに、監査ログを利用するための以下のパラメータを設定します。
“pgaudit”を指定します。
pgaudit設定ファイルの配置先パス名を指定します。
相対パスで指定した場合は、データ格納先のディレクトリからの相対パスとなります。
“on”を指定します。
ERROR以上が指定されていることを確認します。
監査ログをサーバログに出力する場合(pgaudit設定ファイルのloggerパラメータに“serverlog”を指定)は、サーバログに関する以下のパラメータを確認します。
“on”が指定されていることを確認します。
“stderr”が指定されていることを確認します。
許可された人物だけにサーバログへのアクセスを許可するために、サーバログのパーミッションが適切であることを確認します。
参考
log_file_modeパラメータのデフォルトは0600であり、データベース管理者のみアクセス可能です。
たとえば、データベース管理者のグループにも参照を許可する場合は、log_file_modeに0640を指定します。
例
log_file_mode = 0640
0000を指定することで、データベース管理者も参照不可にすることができます。ただし、ログ出力を行うため、書き込み権限は付与された状態となります。
監査ログを専用ログファイルに出力する場合(pgaudit設定ファイルのloggerパラメータに“auditlog”を指定)は、以下のパラメータを確認します。
max_worker_processesパラメータを設定している場合は、指定されている値に1を追加します。
参照
サーバログの詳細は“PostgreSQL文書”の“エラー報告とログ取得”を参照してください。
データベース多重化運用を使用する場合は、“6.6 データベース多重化運用の場合”を参照してください。
postgresql.confの例
下記の例では、監査ログ機能利用時に設定が必要なパラメータのみ記載しています。
shared_preload_libraries = 'pgaudit' pgaudit.config_file = 'pgaudit.conf' log_replication_commands = on log_min_messages = WARNING
インスタンスの起動
インスタンスを起動し、以下のメッセージが出力されることを確認してください。
LOG: pgaudit extension initialized
pgauditエクステンションの作成
CREATE EXTENSIONを使用し、pgauditエクステンションを作成します。
$ psql =# CREATE EXTENSION pgaudit; =# \dx List of installed extensions Name | Version | Schema | Description --------+---------+------------+--------------------------------- pgaudit | 1.0 | public | provides auditing functionality plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (2 rows)
pgaudit設定ファイルのパラメータ設定
pgaudit設定ファイルのパラメータを追加/変更します。
pgaudit設定ファイルの詳細は“6.3 pgaudit設定ファイル”を参照してください。
インスタンスの再起動
pgaudit設定ファイルの変更を適用するため、インスタンスを再起動します。再起動後、変更内容が正しく反映されていることを確認してください。
Linuxの場合
LOG: log_catalog = 1 LOG: log_level_string = LOG: log_level = 15 LOG: log_parameter = 0 LOG: log_statement_once = 0 LOG: role = LOG: logger = auditlog LOG: log_directory = pgaudit_log LOG: log_filename = pgaudit-%Y-%m-%d_%H%M%S.log LOG: log_file_mode = 0600 LOG: log_rotation_age = 1440 LOG: log_rotation_size = 10240 LOG: log_truncate_on_rotation = 0 LOG: fifo_directory = /tmp LOG: Rule 0 LOG: pgaudit extension initialized
Windowsの場合
LOG: log_catalog = 1 LOG: log_level_string = LOG: log_level = 15 LOG: log_parameter = 0 LOG: log_statement_once = 0 LOG: role = LOG: logger = auditlog LOG: log_directory = pgaudit_log LOG: log_filename = pgaudit-%Y-%m-%d_%H%M%S.log LOG: log_file_mode = 0600 LOG: log_rotation_age = 1440 LOG: log_rotation_size = 10240 LOG: log_truncate_on_rotation = 0 LOG: Rule 0 LOG: pgaudit extension initialized