trust
認証が指定されるとPostgreSQLは、サーバに接続できる全ての人に対して
(データベーススーパーユーザさえも)その人が指定する任意のデータベースユーザ名としてのアクセス権限が付与されていると想定します。
当然ながらdatabase
とuser
列にある制限は適用されます。
この方式はサーバに接続する際に適切なオペレーティングシステムレベルの保護が掛けられている場合にのみ使用すべきです。
trust
認証はユーザが1人のみのワークステーション上でローカル接続を行う場合は適切であると同時に非常に便利です。
複数ユーザが存在するマシン上では一般的に適切ではありません。
とは言っても、ファイルシステムの許可属性を使ってサーバのUnixドメインソケットファイルへのアクセスを制限すればtrust
認証を複数ユーザのマシン上で使用することも可能です。
その方法は、19.3に記載されているようにunix_socket_permissions
(およびunix_socket_group
パラメータの可能性もあります)パラメータを設定します。
もしくは、unix_socket_directories
設定パラメータでソケットファイルをそれに相応しく制限されているディレクトリにします。
Unixソケット接続を行うただ1つの方法は、ファイルシステムの許可を設定することです。
ローカルのTCP/IP接続は、ファイルシステムにより制限はされていません。
よってローカルでファイルシステムの許可を使用したい場合はpg_hba.conf
から
host ... 127.0.0.1 ...
の行を削除するか、trust
認証とは異なる方法に変更する必要があります。
TCP/IP接続におけるtrust
認証は、trust
を指定するpg_hba.conf
の行によってサーバに接続を許可される全てのマシン上の全てのユーザを信用(trust)できる場合にのみ相応しいものです。
localhost(127.0.0.1)以外からのTCP/IP接続にtrust
認証を用いる理由はほとんど見当たりません。