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