ident
联系客户端的 ident 服务器以获取客户端的操作系统用户名,并检查其是否与请求的数据库用户名匹配。Ident 认证仅适用于 TCP/IP 连接;如果为本地连接指定 ident,则改用 peer 认证。详情参见第 20.8 节。
当前查看 PostgreSQL 18.6。
说明
联系客户端的 ident 服务器以获取客户端的操作系统用户名,并检查其是否与请求的数据库用户名匹配。Ident 认证仅适用于 TCP/IP 连接;如果为本地连接指定 ident,则改用 peer 认证。详情参见第 20.8 节。
- 方法
- ident
- 配置
- pg_hba.conf
- 清单
- 用户可见的源码认证方法
手册中的方法选项与替代方式
| 选项或术语 | 含义 |
|---|---|
| map | 允许在系统用户名和数据库用户名之间进行映射。详见 第 20.2 节 。 |
手册定义
20.8. Ident 认证
20.8. Ident 认证
ident 认证方法通过从一个 ident 服务器获得客户端的操作系统用户名并且用它作为被允许的数据库用户名(和可选的用户名映射)来工作。它只在 TCP/IP 连接上支持。
注意
当为一个本地(非 TCP/IP)连接指定 ident 时,将实际使用 peer 认证(见第 20.9 节)。
ident 支持以下配置选项:
map-
允许在系统用户名和数据库用户名之间进行映射。详见第 20.2 节。
“标识协议”(Identification Protocol)由 RFC 1413 描述。几乎每种类 Unix 操作系统都提供 ident 服务器,默认监听 TCP 113 端口。它的基本功能是回答“哪个用户发起了从你的端口 X 到我的端口 Y 的连接”这类问题。建立物理连接时,PostgreSQL 知道 X 和 Y,因此可以询问客户端主机上的 ident 服务器,理论上便能确定该连接的操作系统用户。
这个过程的缺点在于它依赖客户端本身的可信性:如果客户端机器不可信或者已被攻破,攻击者几乎可以在 113 端口上运行任何程序,并返回任意他们选择的用户名。因此,这种认证方法只适用于封闭网络,在这类网络中每台客户端机器都受到严格控制,而且数据库管理员与系统管理员之间保持密切协作。换句话说,你必须信任运行 ident 服务器的那台机器。请注意下面的警告:
|
标识协议的本意不是作为一种授权或访问控制协议。 |
|||||
| --RFC 1413 | |||||
有些 ident 服务器提供了一个非标准选项,会让返回的用户名被加密,而解密所需密钥只有发起连接机器的管理员才知道。将 ident 服务器与 PostgreSQL 配合使用时,绝不能启用这个选项,因为 PostgreSQL 无法解密返回的字符串,也就无法确定实际用户名。
文档与源码
来源构建
- 版本
- 18.6
- 构建
- https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
- 来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f
版本比较
PostgreSQL 17 → 18: 无变化。
比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。
相关条目
导出 JSON · 返回认证方法 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。