dblink_connect_u <refpurpose>opens a persistent connection to a remote database, insecurely</refpurpose> — リモートデータベースへの永続的な危険な接続を開きます
dblink_connect_u(text connstr) returns text dblink_connect_u(text connname, text connstr) returns text
<function>dblink_connect_u()</function> is identical to
<function>dblink_connect()</function>, except that it will allow non-superusers
to connect using any authentication method.
dblink_connect_u()
は、非スーパーユーザが任意の認証方式を使用して接続することができる点を除き、dblink_connect()
と同じです。
If the remote server selects an authentication method that does not
involve a password, then impersonation and subsequent escalation of
privileges can occur, because the session will appear to have
originated from the user as which the local <productname>PostgreSQL</productname>
server runs. Also, even if the remote server does demand a password,
it is possible for the password to be supplied from the server
environment, such as a <filename>~/.pgpass</filename> file belonging to the
server's user. This opens not only a risk of impersonation, but the
possibility of exposing a password to an untrustworthy remote server.
Therefore, <function>dblink_connect_u()</function> is initially
installed with all privileges revoked from <literal>PUBLIC</literal>,
making it un-callable except by superusers. In some situations
it may be appropriate to grant <literal>EXECUTE</literal> permission for
<function>dblink_connect_u()</function> to specific users who are considered
trustworthy, but this should be done with care. It is also recommended
that any <filename>~/.pgpass</filename> file belonging to the server's user
<emphasis>not</emphasis> contain any records specifying a wildcard host name.
リモートサーバがパスワードを含まない認証方式を選択していた場合、セッションがローカルなPostgreSQLサーバを実行するユーザから構成されたものとなりますので、なりすましやその後の権限昇格が起こり得ます。
また、リモートサーバがパスワードを要求したとしても、サーバ側のユーザに属する~/.pgpass
ファイルなどサーバの環境から提供されるパスワードになる可能性があります。
これはなりすましの危険性だけでなく、信頼できないリモートサーバへのパスワードが漏れる可能性を引き起こします。
このためdblink_connect_u()
はまず、スーパーユーザ以外から呼び出すことができないように、PUBLIC
からすべての権限を取り除いた形でインストールされます。
状況によっては、信頼できるとみなされた特定のユーザにdblink_connect_u()
のEXECUTE
権限を与えることが適切となる場合があります。
しかしこれは注意して行わなければなりません。
また、サーバのユーザに属する~/.pgpass
ファイルにはすべて、ホスト名としてワイルドカードを指定した項目をまったく含めないことを推奨します。
For further details see <function>dblink_connect()</function>.
この他の情報はdblink_connect()
を参照してください。