每当通过CREATE ROLE或ALTER ROLE设置用户密码时, passwordcheck模块都会检查密码强度。如果密码被认为过弱,就会被拒绝, 该命令也会因错误而终止。
要启用该模块,请将'$libdir/passwordcheck'加入 postgresql.conf中的shared_preload_libraries, 然后重启服务器。
可以通过修改源代码使该模块适应实际需求。例如,可以使用 CrackLib来检查密码, 这只需要在Makefile中取消两行注释并重新构建该模块。 (由于许可原因,我们不能默认包含CrackLib。) 如果不使用CrackLib,该模块会对密码强度施加一些简单规则, 而这些规则也可以按需修改或扩展。
为了防止未加密的密码通过网络传输、被写入服务器日志,或以其他方式被数据库管理员窃取, PostgreSQL允许用户提供预加密密码。 很多客户端程序都会利用这一能力,在将密码发送给服务器之前先行加密。
这就限制了passwordcheck模块的作用,因为在这种情况下, 它只能尝试猜测密码。因此,如果安全要求很高,并不建议使用 passwordcheck。与其依赖数据库内部的密码,不如使用 GSSAPI 之类的外部认证方法(见Chapter 20), 那样更安全。
另外,也可以修改passwordcheck以拒绝预加密密码, 但强迫用户以明文设置密码本身也会带来安全风险。
在通常使用时,该参数设置在postgresql.conf中,但超级用户也可以在自己的会话中动态修改它。典型用法如下:
# postgresql.conf passwordcheck.min_password_length = 12
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。