摩洛哥卡萨布兰卡 - 2023年6月10日
credcheck PostgreSQL 扩展提供了几个通用的凭据检查,这些检查将在用户创建、密码更改和用户重命名期间进行评估。通过使用此扩展,我们可以定义一套规则来
v2.0.0 版本增加了一项主要功能,并兼容 PostgreSQL 16。升级需要重启 PostgreSQL 以重新加载 credcheck 库。
新增“认证失败封禁”功能
PostgreSQL 没有机制来限制用户在被封禁前的认证失败次数。通过 credcheck 扩展,在达到由配置指令 credcheck.max_auth_failure
定义的认证失败次数后,用户将被封禁,即使之后输入了正确的密码也无法再连接。此功能要求 credcheck 扩展被添加到 shared_preload_libraries
配置选项中。
所有用户的认证失败都记录在共享内存中,并带有用户被封禁的时间戳。认证失败历史记录仅保存在内存中,这意味着在 PostgreSQL 重启时历史记录会丢失。目前我还没有看到在启动时恢复缓存的必要性。
认证失败缓存的大小默认为 1024 条记录,可以通过 credcheck.auth_failure_cache_size
配置指令进行调整。更改此 GUC 需要重启 PostgreSQL。
有两个设置可以控制此功能
credcheck.max_auth_failure
:用户被封禁前允许的认证失败次数。credcheck.reset_superuser
:设置为 true 时,强制超级用户不被封禁或重置已封禁的超级用户。第一个设置的默认值是 0
,表示认证失败封禁功能已禁用。第二个设置的默认值是 false
,表示 postgres
超级用户可以被封禁。
如果 postgres
超级用户被封禁,他将无法再登录。如果没有任何其他超级用户账户可以用来重置被封禁超级用户的记录,请将 credcheck.reset_superuser
配置指令在 postgresql.conf 文件中设置为 true
,然后向 PostgreSQL 进程 PID 发送 SIGHUP 信号,使其重新读取配置。下次超级用户尝试连接时,其认证失败缓存条目将被删除。
完整的更改列表可在 此处查阅
credcheck 是一个遵循 PostgreSQL 许可的开源项目,最初由 MigOps Inc 创建,由 Gilles Darold 开发和维护。欢迎任何为改进该工具做出的贡献。您可以使用 GitHub 工具发送您的想法、功能请求或补丁。
链接
credcheck 扩展是 MigOps Inc 的原创作品。由于 MigOps 已关闭,Gilles Darold 是官方维护者。如果您需要更多信息,请 与我联系