F.23. passwordcheck

passwordcheck模块会在用户设置为CREATE ROLEALTER ROLE时检查用户的密码。如果认为密码太弱,它将被拒绝并且命令将以错误终止。

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

您可以通过更改源代码使此模块适应您的需求。例如,您可以使用CrackLib来检查密码-这仅需要取消 CommentsMakefile中的两行并重新构建模块。 (出于许可原因,默认情况下我们默认不包含 CrackLib.)如果没有 CrackLib,该模块将强制执行一些简单的密码强度规则,您可以根据需要修改或扩展它们。

Caution

为了防止未加密的密码通过网络发送,写入服务器日志或以其他方式被数据库 Management 员盗用,PostgreSQL 允许用户提供预加密的密码。许多 Client 端程序使用此功能并在将密码发送到服务器之前对其进行加密。

这限制了passwordcheck模块的用途,因为在这种情况下,它只能尝试猜测密码。因此,如果您的安全要求很高,则不建议使用passwordcheck。使用外部认证方法(例如 GSSAPI(请参见Chapter 20))比依赖数据库中的密码更安全。

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