DBAtlas · データベース運用アトラス

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ユーザーが読み取れないとリロードは失敗する。

DBAtlas で開く →

関連項目