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
的所有权限,使其只能由超级用户调用。在某些情况下,可能适合向被认为是可信任的特定用户授予 dblink_connect_u()
的 EXECUTE
权限,但这应该谨慎行事。还建议服务器用户的任何 ~/.pgpass
文件 不 包含任何指定通配符主机名的记录。
更多详细信息请参阅 dblink_connect()
。
如果您发现文档中有任何不正确的内容,与您使用特定功能的体验不符或需要进一步澄清的内容,请使用 此表单 来报告文档问题。