Ident 认证方法通过从 ident 服务器获取客户端的操作系统用户名,并将其用作允许的数据库用户名(可选的用户映射)。这仅在 TCP/IP 连接上受支持。
当为本地(非 TCP/IP)连接指定 ident 时,将改用 peer 认证(参见 第 20.9 节)。
为 ident
支持以下配置选项
map
允许系统用户和数据库用户之间的映射。有关详细信息,请参阅 20.2 节。
“身份协议”在 RFC 1413 中进行了描述。几乎所有的类 Unix 操作系统都附带一个 ident 服务器,该服务器默认监听 TCP 端口 113。ident 服务器的基本功能是回答诸如“哪个用户发起了从您的端口 X
发出并连接到我的端口 Y
的连接?”这样的问题。由于 PostgreSQL 在建立物理连接时知道 X
和 Y
,它可以查询连接客户端主机上的 ident 服务器,并理论上确定任何给定连接的操作系统用户。
此过程的缺点是它依赖于客户端的完整性:如果客户端机器不可信或受到攻击,攻击者可以在端口 113 上运行几乎任何程序并返回他们选择的任何用户名。因此,此认证方法仅适用于每个客户端机器都受到严格控制,并且数据库和系统管理员密切合作的封闭网络。换句话说,您必须信任运行 ident 服务器的机器。请注意警告:
身份协议并非作为授权或访问控制协议。 |
||
--RFC 1413 |
某些 ident 服务器有一个非标准选项,它会导致返回的用户名被加密,使用的是只有原始机器管理员知道的密钥。当与 PostgreSQL 一起使用 ident 服务器时,不得 使用此选项,因为 PostgreSQL 无法解密返回的字符串来确定实际用户名。
如果您在文档中看到任何不正确、与您对特定功能的体验不符或需要进一步澄清的内容,请使用 此表格 报告文档问题。