支持的版本:当前 (17) / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0

F.24. passwordcheck — 验证密码强度 #

passwordcheck 模块会在用户使用 CREATE ROLEALTER ROLE 设置密码时检查用户的密码。如果密码被认为太弱,它将被拒绝,并且命令将以错误终止。

要启用此模块,请将 '$libdir/passwordcheck' 添加到 postgresql.conf 中的 shared_preload_libraries,然后重启服务器。

您可以通过更改源代码来调整此模块以满足您的需求。例如,您可以使用 CrackLib 来检查密码 — 这只需要取消注释 Makefile 中的两行并重新构建模块即可。(由于许可原因,我们不能默认包含 CrackLib。)如果没有 CrackLib,该模块会强制执行一些简单的密码强度规则,您可以根据需要修改或扩展这些规则。

注意

为了防止未加密的密码通过网络发送,写入服务器日志或被数据库管理员以其他方式盗取,PostgreSQL 允许用户提供预加密的密码。许多客户端程序利用此功能并在将其发送到服务器之前加密密码。

这限制了 passwordcheck 模块的有用性,因为在这种情况下,它只能尝试猜测密码。因此,如果您的安全要求很高,则不建议使用 passwordcheck。使用诸如 GSSAPI 之类的外部身份验证方法(请参阅 第 20 章)比依赖数据库中的密码更安全。

或者,您可以修改 passwordcheck 以拒绝预加密的密码,但是强制用户以明文设置密码会带来自身的安全风险。

提交更正

如果您发现文档中有任何不正确的地方,与您使用特定功能的经验不符或需要进一步澄清,请使用此表单报告文档问题。