dblink_connect_u#
dblink_connect_u
dblink_connect_u — открывает постоянное соединение с удаленной базой данных, небезопасно
Синтаксис
dblink_connect_u(text connstr) returns text dblink_connect_u(text connname, text connstr) returns text
Описание
Функция dblink_connect_u()
идентична функции dblink_connect()
, за исключением того, что она позволяет не суперпользователям подключаться с использованием любого метода аутентификации.
Если удаленный сервер выбирает метод аутентификации, не требующий пароля, то может произойти подмена личности и последующее повышение привилегий, поскольку сессия будет выглядеть, как будто он начался от имени пользователя, от имени которого работает локальный сервер Tantor BE. Кроме того, даже если удаленный сервер требует пароль, возможно, что пароль будет предоставлен из окружения сервера, например, из файла ~/.pgpass
, принадлежащего пользователю сервера. Это открывает риск не только подмены личности, но и возможность передачи пароля ненадежному удаленному серверу. Поэтому функция dblink_connect_u()
изначально устанавливается с отзывом всех привилегий у PUBLIC
, что делает ее невызываемой, кроме как суперпользователями. В некоторых ситуациях может быть целесообразно предоставить разрешение EXECUTE
для функции dblink_connect_u()
конкретным пользователям, которые считаются надежными, но это следует делать осторожно. Также рекомендуется, чтобы любой файл ~/.pgpass
, принадлежащий пользователю сервера, не содержал записей, указывающих на имя хоста с использованием шаблона.
Для получения дополнительной информации см. dblink_connect()
.