F.23. passwordcheck

无论用户是否设置CREATE ROLEALTER ROLEpasswordcheck模块都会检查用户的密码。如果系统认为密码太弱, 那么将拒绝该密码,并且正在执行的命令会被终止,并带有错误信息。

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

你可以通过改变这个模块的源码使其调整为你所需要的样子。例如,你可以使用 CrackLib 检查密码—这只需要在Makefile文件中取消两行的注释, 并重新编译该模块。(因为许可证的原因,我们缺省不能包括CrackLib。) 没有CrackLib,该模块为密码强度强制制定一些简单的规则, 这些规则可以根据你认为合适的去修改或扩展。

小心

为了阻止未加密的口令通过网络发送出去,或被写到服务器日志,或被数据库管理员偷走, PostgreSQL允许用户提供预先加密的口令。 许多客户端程序使用这个功能,并在发送到服务器之前加密口令。

这会限制passwordcheck模块的有用性,因为那种情况下只能尝试猜测口令。 因为这个原因,如果你的安全需求比较高,那么不建议使用passwordcheck。 使用一个额外的认证方法(如GSSAPI)(参阅 第 19 章) 比依赖于数据库中的密码更安全。

或者,你可以修改passwordcheck来拒绝预先加密的口令, 但是强制用户以明文的方式设置他们的口令有其自身的安全风险。