$PGDATA/pg_hba.conf
ホストベースのアクセス制御 どのクライアントがデータベースシステムにアクセスすることができるか、またそのクライアントのユーザがどのように認証されるかを調べるPostgres の基本的な制御の名前です。
各データベースシステムは pg_hba.conf というファイルを $PGDATA ディレクトリに持っています。それが各データベースに誰が接続できるかを制御するものです。
データベースにアクセスしようとするクライアントはすべてpg_hba.conf のエントリでカバーされてなくてはなりません。そうでなければ、そのクライアントからの接続要求はUser authentication failed というエラーメッセジとともに拒否されます。
pg_hba.conf ファイルの一般的なフォーマットは各行にひとつのレコードで、その集合となります。空行と '#' で始まる行は無視されます。レコードは空白またはタブで区切られたフィールドから成ります。
クライアントからの接続は UNIX ドメインソケットあるいはインターネットドメインソケット (すなわち TCP/IP です)を使って確立されます。UNIX ドメインソケットを使う接続は次のフォーマットのレコードで制御されます。
local <データベース> <認証方法>
<データベース> はこのレコードが適用されるデータベースを指定します。allという値はすべてのデータベースに適用されることを指定します。<認証方法> は、UNIX ドメインソケットを使ってそのデータベースに接続する時に、ユーザが行わなくてはならない認証の方法を指定します。方法は下に説明します。
インターネットドメインソケットを使う接続は次のフォーマットのレコードで制御されます。
host <データベース> <TCP/IP アドレス> <TCP/IP マスク> <認証方法>
<TCP/IP マスク> は <TCP/IP アドレス> と接続するクライアントの TCP/IP アドレスとの両方ともに論理和を取ります。もしその2つの値が同じなら、そのレコードがこの接続に使われます。もしある接続が2つ以上のレコードにマッチしたなら、ファイルの最初の方にあるものが使われます。<TCP/IP アドレス> と <TCP/IP マスク> は両方ともドット区切りの10進数記法で指定します。
もし接続がどのレコードともマッチしなければ、reject認証方法が適用されます。(下記を参照してください)
次の認証方法が UNIX と TCP/IP のドメインソケット両方にサポートされています。
trust- 接続は無条件で許可されます。
reject- 接続は無条件に拒否されます。
crypt- クライアントはそのユーザに対するパスワードを問われます。crypt(3) を使います)送られ、pg_shadow 表にあるパスワードと比較されます。パスワードがマッチすると、接続が許可されます。
password- クライアントはそのユーザに対するパスワードを問われます。生のままで送られ、pg_shadow 表にあるパスワードと比較されます。パスワードがマッチすると、接続が許可されます。オプションで pg_shadow 表以外にパスワードを比較するパスワードファイルをpasswordキーワードの後に指定することができます。passwd(1) を参照してください。
次の認証方法が TCP/IP ドメインソケットのみにサポートされています。
krb4- ケルベロス V4 をユーザ認証に使います。
krb5- ケルベロス V5 をユーザ認証に使います。
ident- クライアント側の ident サーバをユーザ認証に使います。(RFC 1413)オプションで、ident のユーザ名を PostgreSQL のユーザ名にマップするマップ名をidentキーワードの後に指定することができます。マップは $PGDATA/pg_ident.conf に保存されています。
# UNIX ドメインソケットからの接続はすべて信用します。
local trust
# このマシンからの TCP/IP 接続はすべて信用します。
host all 127.0.0.1 255.255.255.255 trust
# このマシンは嫌い
host all 192.168.0.10 255.255.255.0 reject
# このマシンは暗号化できないので、生のままでパスワードを訊きます。
host all 192.168.0.3 255.255.255.0 password
# このマシンのグループの残りは暗号化したパスワードを提供します。
host all 192.168.0.0 255.255.255.0 crypt