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()
.