皆さんこんにちは!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と同じように動作します。
詳しくはこちら
以上です!