dblink_connect_u(text connstr) returns text dblink_connect_u(text connname, text connstr) returns text
dblink_connect_u()
は、非スーパーユーザが任意の認証方式を使用して接続することができる点を除き、dblink_connect()
と同じです。
リモートサーバがパスワードを含まない認証方式を選択していた場合、セッションがローカルなPostgreSQLサーバを実行するユーザから構成されたものとなりますので、なりすましやその後の権限昇格が起こり得ます。
また、リモートサーバがパスワードを要求したとしても、サーバ側のユーザに属する~/.pgpassファイルなどサーバの環境から提供されるパスワードになる可能性があります。
これはなりすましの危険性だけでなく、信頼できないリモートサーバへのパスワードが漏れる可能性を引き起こします。
このためdblink_connect_u()
はまず、スーパーユーザ以外から呼び出すことができないように、PUBLICからすべての権限を取り除いた形でインストールされます。
状況によっては、信頼できるとみなされた特定のユーザにdblink_connect_u()
のEXECUTE権限を与えることが適切となる場合があります。
しかしこれは注意して行わなければなりません。
また、サーバのユーザに属する~/.pgpassファイルにはすべて、ホスト名としてワイルドカードを指定した項目をまったく含めないことを推奨します。
この他の情報はdblink_connect()
を参照してください。