1. 導入:なぜpg_hba.confの理解が必要なのか
PostgreSQLの運用において、データベースへのアクセス制御はセキュリティの根幹です。「どのIPアドレスから」「どのユーザーが」「どのデータベースへ」接続できるかを制御するファイルがpg_hba.confです。この設定を誤ると、意図しない外部からの接続を許してしまったり、逆に必要なアプリケーションの接続まで遮断してしまったりするリスクがあります。本稿では、実務で安全にこの設定を管理するためのポイントを解説します。
2. 基礎知識:認証設定ファイルの構造
pg_hba.confは「Host-Based Authentication」の略で、クライアントの接続元情報に基づいた認証方式を定義します。設定は上から順に評価され、最初に合致した行が適用されます。
主な構成要素は以下の通りです。
TYPE:接続形式(local:ソケット通信, host:TCP/IP通信など)
DATABASE:対象DB名(allを指定するとレプリケーションを除く全DB)
USER:接続ユーザー名(allを指定すると全ユーザー)
ADDRESS:許可するIPアドレスまたはネットワーク範囲(CIDR形式)
METHOD:認証方式(md5やscram-sha-256など)
3. 実装:現場で使える設定例
実務では、Webアプリケーションサーバーからの接続を許可し、それ以外を拒否する構成が一般的です。以下は、特定のネットワーク(192.168.1.0/24)からの接続のみを許可する設定例です。
サンプルプログラム:pg_hba.confの設定例
———————————————————
Webアプリからの接続を許可(scram-sha-256で強固に認証)
———————————————————
TYPE DATABASE USER ADDRESS METHOD
host app_db app_user 192.168.1.10/32 scram-sha-256
———————————————————
管理用端末からの接続を許可
———————————————————
host all admin 192.168.1.50/32 scram-sha-256
———————————————————
上記以外からの接続はすべて拒否(明示的に記述しなくても
デフォルトでは拒否されるが、可読性のため考慮が必要)
———————————————————
4. 応用・注意点:現場のDBAが知るべき回避策
設定変更後の適用方法
設定を反映するには、PostgreSQLの再起動が確実ですが、サービス停止が難しい場合は設定の再読み込みを行います。
コマンド例:SELECT pg_reload_conf(); を実行することで、再起動なしで設定を反映できます。
陥りやすい罠:postgresql.confとの併用
pg_hba.confで許可を出しても、postgresql.conf内のlisten_addresses設定で該当するネットワークインターフェースが待ち受け状態になっていなければ接続できません。接続エラーが発生した際は、必ず両方の設定を確認してください。
推奨される認証方式
古いシステムでは「md5」が使われていますが、最新の環境ではより安全性の高いscram-sha-256の使用を強く推奨します。
編集前のバックアップ
pg_hba.confは設定ミスが即座に接続不可を招くファイルです。編集前には必ず cp pg_hba.conf pg_hba.conf.bak のようにバックアップを取得し、万が一の際に即座に切り戻せる体制を整えておくことが、現場における鉄則です。

コメント