Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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

每当使用 CREATE ROLEALTER ROLE 设置用户的密码时,passwordcheck 模块会检查其密码。如果密码过于简单,它将被拒绝,且命令会因错误而终止。

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

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

警告

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

此功能限制了 passwordcheck 模块的用途,因为它在这种情况下只能尝试猜测密码。因此,如果您的安全要求较高,则不建议使用 passwordcheck。与依赖数据库中的密码相比,使用 GSSAPI 等外部身份验证方法更为安全(见 第 20 章)。

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