pg_hba.confのルール順序を検証し、安全にリロード
PostgreSQLセキュリティコマンド
-- File location
SHOW hba_file;
# Rules are read top to bottom and the FIRST matching rule wins;
# specific rules must come BEFORE general ones:
# hostssl appdb web_app 10.10.0.0/16 scram-sha-256
# host all all 10.10.0.0/16 reject
# host all all 0.0.0.0/0 scram-sha-256
-- Validate BEFORE reloading: pg_hba_file_rules reads the file on disk
SELECT line_number, type, database, user_name, address, netmask, auth_method, error
FROM pg_hba_file_rules
ORDER BY line_number;
-- Apply if the error column is empty
SELECT pg_reload_conf();概要
pg_hba.confの場所、PostgreSQLによる解釈(行、種類、データベース、ユーザー、アドレス、方式)、リロード前の構文エラーを表示し、その後構成をリロードする。
使用する場面
新しいクライアントネットワーク/アプリケーションの追加時、md5からscram-sha-256への移行時、'no pg_hba.conf entry for host'エラーの調査時に。
注意
pg_hba_file_rulesは有効なルールではなく現在のファイルの内容を示す。いずれかの行のerrorが空でない場合、リロードはpg_hba.confをまったく読み込まず、古いルールが有効なままとなる(ログには'pg_hba.conf was not reloaded'と出力される)。変更は新しい接続にのみ影響する。先頭近くに置いた広範なルール(例: host all all 0.0.0.0/0 trust)は、その後のすべての制限を無効にする。SSLがoffの場合、hostsslの行は一致せず、error列にメッセージが表示される。デフォルトではスーパーユーザーのみがこのビューを読み取れる。rootでファイルを編集するツールが所有権を変更しないようにする。postgresユーザーが読み取れないとリロードは失敗する。