↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11

21.8. Ident 认证 #

ident 认证方法通过从一个 ident 服务器获得客户端的操作系统用户名并且用它作为被允许的数据库用户名(和可选的用户名映射)来工作。它只在 TCP/IP 连接上支持。

注意

当为一个本地(非 TCP/IP)连接指定 ident 时,将实际使用 peer 认证(见第 21.9 节)。

ident 支持下列配置选项:

map

允许在系统用户名和数据库用户名之间进行映射。详见第 21.2 节。

“标识协议”在 RFC 1413 中有描述。几乎每个类 Unix 的操作系统都默认安装了一个 ident 服务器,监听 TCP 端口 113。ident 服务器的基本功能是回答类似于“哪个用户发起了从你的端口 X 到我的端口 Y 的连接?”这样的问题。由于 PostgreSQL 在建立物理连接时知道 X 和 Y,它可以查询连接客户端主机上的 ident 服务器,理论上可以确定任何给定连接的操作系统用户。

这个过程的缺点在于它依赖客户端本身的可信性:如果客户端机器不可信或者已被攻破,攻击者几乎可以在 113 端口上运行任何程序,并返回任意他们选择的用户名。因此,这种认证方法只适用于封闭网络,在这类网络中每台客户端机器都受到严格控制,而且数据库管理员与系统管理员之间保持密切协作。换句话说,你必须信任运行 ident 服务器的那台机器。请注意下面的警告:

 

标识协议的本意不是作为一种授权或访问控制协议。

 
 --RFC 1413

有些 ident 服务器提供了一个非标准选项,会让返回的用户名被加密,而解密所需密钥只有发起连接机器的管理员才知道。将 ident 服务器与 PostgreSQL 配合使用时,绝不能启用这个选项,因为 PostgreSQL 无法解密返回的字符串,也就无法确定实际用户名。

报告文档问题

阅读 上游文档. 通过 PostgreSQL 文档反馈表单.