PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

F.24. passwordcheck — 检查密码强度 #

F.24.1. 配置参数

当用户通过 CREATE ROLE 或 ALTER ROLE 设置密码时,passwordcheck 模块会对其进行检查。如果密码被认为过于脆弱,它将被拒绝,命令会以错误终止。

要启用该模块,请在 postgresql.conf 的 shared_preload_libraries 中加入 '$libdir/passwordcheck',然后重启服务器。

你可以通过修改源代码来按需调整该模块。例如,你可以使用 CrackLib 来检查密码 — 这只需要取消 Makefile 中两行代码的注释并重新编译模块即可。(出于许可原因,我们不能默认包含 CrackLib。) 在没有 CrackLib 的情况下,该模块强制执行几条简单的密码强度规则,你可以按需修改或扩展这些规则。

Caution

为防止未加密密码通过网络传输、写入服务器日志或被数据库管理员以其他方式窃取,PostgreSQL 允许用户提交预先加密的密码。许多客户端程序利用了这一功能,在将密码发送到服务器之前对其进行加密。

这限制了 passwordcheck 模块的作用,因为在这种情况下它只能尝试猜测密码。因此,如果你的安全要求较高,不建议使用 passwordcheck。与依赖数据库内部的密码相比,使用 GSSAPI 等外部认证方式(参见 Chapter 20)更为安全。

另一种做法是修改 passwordcheck 使其拒绝预先加密的密码,但强制用户以明文设置密码本身也带有安全风险。

F.24.1. 配置参数 #

passwordcheck.min_password_length (integer)

可接受的最小密码长度(以字节为单位)。默认值为 8。只有超级用户可以更改此设置。

Note

如果用户提交了预先加密的密码,该参数不会生效。

通常,该参数在 postgresql.conf 中设置,但超级用户也可以在自己的会话中即时修改它。典型用法如下:

# postgresql.conf
passwordcheck.min_password_length = 12