LoginSignup
3
3

More than 1 year has passed since last update.

pg_hba.confファイルについて

Last updated at Posted at 2022-10-28

皆さんこんにちは!haruです。

PostgreSQL でクライアント接続を行う際に、pg_hba.confファイルを編集して接続可能なIPアドレスを許可します。
pg_hba.confファイルは設定方法が多岐にわたるため、マニュアルの中から要点のみを抜粋してまとめていきたいと思います。

詳細が気になる方は、以下をご参照ください。
詳細はこちら

[postgres@postgreSQL ~]$ find / -name pg_hba.conf 2> /dev/null
/var/lib/pgsql/15/data/pg_hba.conf
[postgres@postgreSQL ~]$ vi /var/lib/pgsql/15/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
・・・
host    all             all             0.0.0.0/0               trust

キーワード

UNIXドメインソケット
LinuxなどのUNIX系OS(オペレーティングシステム)で実行されるプロセス間通信の終点に使われるインターフェースのこと。

TCP/IP
Transmission Control Protocol/Internet Protocol の略で、インターネット上で通信する仕組みの一つ。
まずIPがネットワーク経由でデータを細かく分割したパケットを受け取り、その後TCPがパケットの内容をチェックしながら正しい順番にデータを組み立て直す仕組みのこと。

SSL
Secure Sockets Layer の略で、インターネット上の通信を暗号化する仕組みのこと。

ハッシュ
特定の計算手法に基づいて、元のデータを不規則な文字列に置換する処理のこと。

pg_hba.conf ファイル

クライアントからの認証は、pg_hba.confファイルという設定ファイルで管理されており、このファイルに記述されているIPアドレスのみ許可します。
このファイルのデフォルトは、PostgreSQLインストール工程のうち initdb コマンドで初期化される際に自動で作成されます。

各設定項目

TYPE

  • local
    UNIXドメインソケットを使用する接続に対応します。

  • host
    TCP/IPを使用した接続に対応します。

  • hostssl
    SSLで暗号化されている場合にのみTCP/IPネットワークを使用する接続に対応します。

  • hostnossl
    hostsslと反対の動作で、SSLを使用していないTCP/IPの接続のみに対応します。

  • hostgssenc
    TCP/IPを使用した接続に対応するが、GSSAPI暗号化を使用する場合に限ります。

  • hostnogssenc
    hostgssencとは反対の動作で、GSSAPI暗号化を使用していないTCP/IPの接続のみに対応します。

DATABASE

この項目はデータベース名を指定します。

  • all
    すべてのデータベースを対応します。

  • sameuser
    要求されたデータベースとユーザー名が同じ場合に対応します。

  • samerole
    要求されたデータベースとロールメンバーが同じ場合に対応します。
    スーパーユーザーにおいても、明示的に指定しないと該当しません。

  • erplication
    ストリーミングレプリケーション接続が要求された場合に対応します。
    ロジカルレプリケーション接続には対応しません。

USER

  • all
    全てのユーザが対応します。
    それ以外の場合には特定のデータベースユーザの名前もしくは+で始まるグループ名のどちらかになります。

ADDRESS

こちらはその名の通り、IPアドレスを指定します。
詳細はかなり細かいため、気になる場合は公式マニュアルをご参照ください。

METHOD

  • trust
    接続を無条件で許可します

  • reject
    接続を無条件に拒否します。

  • scram-sha-256
    SCRAM-SHA-256認証を実行します。
    SCRAM-SHA-256認証とは、セキュリティ面で堅牢性が高い認証方法です。
    詳しくはこちら

  • md5
    SCRAM-SHA-256あるいはMD5認証を実行します。
    MD5認証は、パスワードの漏洩を防ぐ認証方法ですが、パスワードハッシュの漏洩は防げません。
    詳しくはこちら

  • password
    クライアントに対して認証時に平文のパスワードを要求します。

  • ges
    TCP/IP接続を使用するときのみ、ユーザの認証にGSSAPIを使用します。

  • sspi
    Windowsを使用するときのみ、ユーザの認証にSSPIを使用します。
    SSPI認証は、シングルサインオンで安全な認証行うWindowsの技術です。
    詳しくはこちら

  • ident
    クライアントOSのユーザー名と要求されたデータベースユーザ名をidentサーバに尋ねて一致するかを検査します。
    詳しくはこちら

  • peer
    クライアントOSのユーザー名と要求されたデータベースユーザ名が一致するかを検査します。

  • ldap
    LDAPサーバを使用して認証します。
    詳しくはこちら

  • radius
    RADIUSサーバを使用して認証します。
    詳しくはこちら

  • cert
    SSLクライアント証明書を使用して認証します。
    詳しくはこちら

  • pam
    オペレーティングシステムによって提供されるPAM(Pluggable Authentication Modules)サービスを使用した認証です。
    PAMはユーザ名/パスワードの組の確認と接続されたリモートホスト名またはIPアドレスを任意に確認するためだけに使用されます。
    詳しくはこちら

  • bsd
    オペレーティングシステムによって提供されたBSD認証サービスを使用して認証します。
    BSD認証は、パスワードを照合するためにBSD認証を使用すること以外はpasswordと同じように動作します。
    詳しくはこちら

以上です!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3