pg_hba.conf ファイルは PostgreSQL に接続するクライアントの認証に関する設定を記述するファイルです。PostgreSQLに接続できない、認証エラーなどの問題に遭うと、このファイルの調査は欠かせません。
pg_hba.confファイルの設定
og_hba.congの設定は次のいずれかの形式となります。
local database user auth-method [auth-options] host database user address auth-method [auth-options] hostssl database user address auth-method [auth-options] hostnossl database user address auth-method [auth-options]
TYPE(1列目)には local , host , hostssl , hostnossl のいずれか 1 つを設定します。
TYPE | 説明 |
local | Unix ドメインソケットを使用する場合に使用される。 |
host | SSL または非 SSL での接続 |
hostssl | SSL での接続 |
hostnossl | 非 SSL での接続 |
DATABASE には接続を許可するデータベース名を指定します。複数指定する場合はカンマ(,)で区切って記述してください。また特別な値として all を指定した場合はレプリケーションを除くすべてのデータベースを意味し、 sameuser を指定した場合はユーザー名と同じ名前のデータベースを意味します。
USER には接続を許可するロール名を指定します。複数指定する場合はカンマ(,)で区切って記述してください。また特別な値として all を指定した場合はすべてのロールを意味します。
ADDRESS には接続を許可するホスト名またはIPアドレスの範囲を指定します。IPアドレスは IPv4 で指定する場合は 172.20.143.0/24 のような形式、また IPv6 で指定する場合は fe80::7a31:c1ff:0000:0000/96 のような形式で指定します。また特別な値として all を指定した場合はすべてのIPアドレスを意味し、 samehost と指定した場合は PostgreSQL が動作しているサーバと同じ IP アドレスを意味します。 samenet と指定した場合はサーバと同じネットワークを意味します。
ADDRESS でホスト名を指定する場合、 hoge.example.com のように個別のホスト名を指定します。また .example.com のように指定した場合は example.com のすべてのホスト( hoge.example.com など)を意味します。
AUTH-METHOD には認証方式を指定します。主な設定する値と認証方式は次のようです。
AUTH-METHOD | 説明 |
trust | 任意のロール名でパスワードなしで接続可能 |
reject | 接続をすべて拒否 |
md5 | パスワード認証 |
password | パスワード認証、パスワードを平文で送信 |
scram-sha-256 | パスワード認証、最も安全だが一部クライアントで未サポート |
peer | Peer認証 |
ドメインソケットとpeer認証
peer認証とは:カーネルからクライアント上のオペレーティングシステムのユーザ名を取得し、 それをデータベースユーザ名(オプションのユーザ名マップとともに)として使用することにより動作します。この方法はローカル接続でのみ使用可能です。
例として、アカウント myuser で Linux システムにログインして psql コマンドを実行すると、ユーザー myuser はパスワード認証なしでデータベースに接続されます。postgresql データベースに myuser ユーザーが存在しない場合、ユーザーが見つからないというエラーが報告されます。
ドメインソケットとは:単一マシン上の高効率なプロセス間通信に用いられる機能・インタフェースの一種です。
Linux上、psql のデフォルトの接続方法は unix ドメイン ソケットを使用するもので、/var/run/postgresql/または/tmp/ ディレクトリでソケット .s.PGSQL.5432 を検索します。 psql -h /path/to/socket/directory/ -p port を使用して、他のディレクトリのソケット ファイルを切り替えることができます。
以下のコマンドでシステムがLISTENしているドメインソケットがわかります。
netstat -an | grep LISTEN
……
unix 2 [ ACC ] STREAM LISTENING 24815 /var/run/abrt/abrt.socket
コメント