Postgresql 中文操作指南

21.8. Ident Authentication #

ident 验证方法的作用是从 ident 服务器获取客户端的操作系统用户名,并将其用作允许的数据库用户名(带可选的用户名映射)。这仅受 TCP/IP 连接支持。

Note

当为本地(非 TCP/IP)连接指定 id 时,将使用对等身份验证(参见 Section 21.9)来代替。

支持 ident 的以下配置选项:

  • map

    • 允许系统与数据库用户名之间进行映射。有关详细信息,请参阅 Section 21.2

“识别协议”在 RFC 1413中进行了描述。实际上,每个类似 Unix 的操作系统都带有 ident 服务器,它在默认情况下监听 TCP 端口 113。ident 服务器的基本功能是回答“哪个用户发起了从端口 X_发出并连接到我的端口 _Y_的连接?”这样的问题。由于 PostgreSQL 在建立物理连接时同时知道 _X_和 _Y,因此它可以在连接客户端的主机上询问 ident 服务器,并且理论上可以确定任意给定连接的操作系统用户。

此过程的缺点是,它依赖于客户端的完整性:如果客户端机器不受信任或遭到入侵,攻击者可以在端口 113 上运行任何程序并返回他们选择的任何用户名。因此,此验证方法仅适合受严格控制的封闭网络,其中数据库和系统管理员密切配合。换句话说,您必须信任运行 ident 服务器的机器。遵循警告:

某些 ident 服务器具有一个非常规选项,该选项会导致使用仅源计算机管理员知道的密钥来加密返回的用户名。与 PostgreSQL 结合使用 ident 服务器时 must not 可使用此选项,因为 PostgreSQL 没有任何方法可以解密返回的字符串以确定实际用户名。