PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

20.3. 认证方法概览 #

20.3.1. 信任认证(trust)
20.3.2. 口令认证(scram-sha-256 与 md5)
20.3.3. GSSAPI 认证
20.3.4. SSPI 认证
20.3.5. Ident 认证
20.3.6. Peer 认证
20.3.7. LDAP 认证
20.3.8. RADIUS 认证
20.3.9. 证书认证(cert)
20.3.10. PAM 认证
20.3.11. BSD 认证
20.3.12. OAuth 2.0 认证

PostgreSQL 提供了丰富的认证机制,覆盖了从极简本地测试到严苛企业内网集成的各类场景。

20.3.1. 信任认证(trust) #

无条件无密码放行所有命中该规则的连接。在该模式下,数据库完全信任客户端自行声称的任何用户名。严禁在可被未受信任网络直接访问的生产环境中对网络 TCP 连接配置 trust,否则任何人均可以超级用户身份长驱直入。

20.3.2. 口令认证(scram-sha-256 与 md5) #

基于密码哈希挑战的经典认证模式:

  • scram-sha-256:基于 RFC 5802/7677 标准的高级加密挑战响应机制(SCRAM),是官方强烈推荐的现代密码认证标准。密码在传输全过程中绝不以明文暴露,即便网络流量被全量旁路监听,攻击者也无法实施中间人重放或离线字典暴力破解,安全性远高于传统哈希算法。

  • md5:基于 MD5 加盐哈希的历史兼容认证方式。由于 MD5 算法本身已被学术界攻破,官方已将该方式标记为废弃淘汰,新系统应全部升级至 scram-sha-256。

  • password:以明文形式直接传输密码,除非在受保护的 TLS 加密通道内,否则严禁在生产网络中使用。

20.3.3. GSSAPI 认证 #

面向企业内网 Kerberos 域环境的安全认证协议,能够实现跨操作系统的企业级单点登录(SSO)以及链路流量原生强加密。

20.3.4. SSPI 认证 #

专用于 Windows 操作系统环境的安全服务提供者接口(SSPI),支持无缝集成 Active Directory 域控制器账号体系。

20.3.5. Ident 认证 #

通过连接客户端机器上的 Ident 守护进程(基于 RFC 1413 协议)来获取发起该 TCP 连接的操作系统用户名。仅适用于受完全控制的专用封闭内网环境。

20.3.6. Peer 认证 #

专用于本地 Unix 域套接字(local 连接)的操作系统身份直通认证。服务端在接收连接时,直接调用操作系统内核接口读取发起连接客户端进程的真实物理有效用户 ID(UID),只要该 UID 对应的系统用户名与请求的数据库用户名严格一致,即可安全放行登录。这是各主流 Linux 发行版预设的开箱即用默认认证方式。

20.3.7. LDAP 认证 #

允许数据库服务器将用户的账号口令校验工作,委托给企业集中维护的 OpenLDAP 或微软 Active Directory 目录服务统一核验。

20.3.8. RADIUS 认证 #

将用户认证请求转发至外部的 RADIUS 认证服务器,常用于集成企业双因子认证(2FA/MFA)以及硬件动态令牌。

20.3.9. 证书认证(cert) #

基于 SSL/TLS 双向证书(mTLS)的纯证书认证。客户端在建立加密握手时必须向服务端出示由受信任根 CA 机构签发的数字证书,服务端从客户端证书中解析验证 Common Name(CN)是否匹配数据库用户身份,完全省去口令输入,安全性最高。

20.3.10. PAM 认证 #

利用 Linux/Unix 系统原生的可插拔认证模块(Pluggable Authentication Modules)框架执行用户校验。

20.3.11. BSD 认证 #

使用在 OpenBSD 等系统上原生提供的 BSD Authentication 机制进行安全核验。

20.3.12. OAuth 2.0 认证 #

现代云原生环境支持的基于 OpenID Connect / OAuth 2.0 Bearer Token 规范的令牌认证,支持与外部云端身份提供商(IdP)无缝联动。相关关键选项包括指定令牌颁发者的 issuer 以及启用用户映射委派的 <term>delegate_ident_mapping</term> 选项。