Перейти к основному содержимому

dblink_connect_u

примечание

Эта страница переведена при помощи нейросети GigaChat.

dblink_connect_u – открывает постоянное соединение с удаленной базой данных, небезопасно.

Синтаксис

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, делая его невызываемым, кроме как суперпользователями. В некоторых ситуациях может быть уместным предоставить разрешение EXECUTE для dblink_connect_u() конкретным пользователям, которые считаются надежными, но это следует делать осторожно. Также рекомендуется, чтобы любой файл ~/.pgpass принадлежащий пользователю сервера не содержал никаких записей, указывающих имя хоста-заглушки.

Для получения дополнительной информации см. dblink_connect().