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