只要通过CREATE ROLE或ALTER ROLE设置用户,
passwordcheck
模块会检查用户的口令。如果一个口令被认为太弱,它将被拒绝并且该命令将带着一个错误终止。
要启用这个模块,把'$libdir/passwordcheck'
加入到postgresql.conf
中的shared_preload_libraries,然后重启服务器。
你可以通过修改源代码来按你的需要修改这个模块。例如,你可以使用CrackLib来检查口令 — 这只需要在Makefile
中取消两行的注释并且重新编译该模块(由于授权原因,我们不能默认包括CrackLib)。如果没有CrackLib,该模块会对口令强度强制一些简单的规则,你可以自行修改和扩充。
要阻止未加密的口令被通过网络传送、写入到服务器日志或者被一个数据库管理员窃取,PostgreSQL允许用户提供预加密的口令。很多客户端程序利用这种功能并且在把口令发送给服务器之前加密它。
这限制了passwordcheck
模块的有用性,因为这种情况下它只能尝试猜测口令。由于这个原因,如果你的安全性需求很高,我们不推荐passwordcheck
。使用一个诸如 GSSAPI (见第 21 章)的外部认证方法比依赖数据库内的口令更加安全。
此外,你可以修改passwordcheck
来拒绝预加密的口令,但是强制用户将口令设置为明文带来了它的安全风险。