passwordcheck
模块在每次使用 CREATE ROLE 或 ALTER ROLE 设置用户密码时都会检查用户的密码。如果密码被认为太弱,则会被拒绝,并且命令将以错误终止。
要启用此模块,请在 postgresql.conf
中将 '$libdir/passwordcheck'
添加到 shared_preload_libraries,然后重新启动服务器。
您可以通过更改源代码来调整此模块以满足您的需求。例如,您可以使用 CrackLib 来检查密码——这只需要在 Makefile
中取消注释两行并重新构建模块。(由于许可证原因,我们无法默认包含 CrackLib。)如果没有 CrackLib,则该模块会对密码强度强制执行一些简单的规则,您可以根据需要修改或扩展这些规则。
为了防止未加密的密码通过网络发送、写入服务器日志或以其他方式被数据库管理员窃取,PostgreSQL 允许用户提供预加密的密码。许多客户端程序利用此功能并在发送到服务器之前加密密码。
这限制了 passwordcheck
模块的实用性,因为在这种情况下,它只能尝试猜测密码。因此,如果您的安全要求很高,则不建议使用 passwordcheck
。使用外部身份验证方法(例如 GSSAPI(参见 第 20 章))比依赖于数据库中的密码更安全。
或者,您可以修改 passwordcheck
以拒绝预加密的密码,但是强制用户以明文设置密码会带来自身的安全风险。
如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符或需要进一步说明的内容,请使用 此表单 报告文档问题。