每当通过 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
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。