Redrock Postgres 搜索 英文
版本: 11 / 12 / 13 / 14 / 15 / 16 / 17

20.8. Ident 身份验证 #

ident 身份验证方法通过从 ident 服务器获取客户端的操作系统用户名并使用该用户名(并附有可选的用户名映射)作为允许的数据库用户名,从而工作。这仅在 TCP/IP 连接上受支持。

注意

针对本地(非 TCP/IP)连接指定 ident 时,将改为使用对等身份验证(请参阅第 20.9 节)。

对于 ident,支持以下配置选项

map

允许在系统用户名和数据库用户名之间进行映射。有关详细信息,请参阅第 20.2 节

识别协议RFC 1413 中进行描述。几乎所有 Unix 类操作系统都附带默认侦听 TCP 端口 113 的身份识别服务器。身份识别服务器的基本功能是回答诸如 是哪个用户发起的连接,从您的端口 X 出来并连接到我的端口 Y 这样的问题。由于 PostgreSQL 知道在建立物理连接时的 XY,因而它可以查询连接客户端主机的身份识别服务器,并且从理论上可以确定任何给定连接的操作系统用户。

此过程的缺点在于它依赖于客户端的完整性:如果客户端机器不可信或遭到入侵,攻击者几乎可以在端口 113 上运行任何程序并返回他们选择的任何用户名。因此,此身份验证方法仅适合每个客户端机器都处于严格控制之下的封闭网络,其中数据库和系统管理员紧密协作。换句话说,您必须信任运行身份识别服务器的机器。请注意以下警告

 

识别协议并非旨在用作授权或访问控制协议。

 
  --RFC 1413

一些身份识别服务器采用非标准选项,使用仅始发机器的管理员知道的密钥加密返回的用户名。使用身份识别服务器和 PostgreSQL 时,不得 使用此选项,因为 PostgreSQL 没有任何方法解密返回的字符串来确定实际用户名。