dblink_connect_u(text connstr) returns text dblink_connect_u(text connname, text connstr) returns text
dblink_connect_u()
is identical
to dblink_connect()
, except that it
will allow non-superusers to connect using any authentication
method.
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
PostgreSQL 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 ~/.pgpass 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, dblink_connect_u()
is initially installed with
all privileges revoked from PUBLIC,
making it un-callable except by superusers. In some situations it
may be appropriate to grant EXECUTE
permission for dblink_connect_u()
to specific users who are considered trustworthy, but this should
be done with care. It is also recommended that any ~/.pgpass file belonging to the server's user
not contain any records
specifying a wildcard host name.
For further details see dblink_connect()
.