credcheck v2.0.0 发布

由 Gilles Darold 于 2023-06-12 发布
相关开源

摩洛哥卡萨布兰卡 - 2023 年 6 月 10 日

PostgreSQL credcheck 扩展

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 配置指令设置为 true 到 postgresql.conf 文件中,并向 PostgreSQL 进程 pid 发送 SIGHUP 信号,以便重新读取配置。下次超级用户尝试连接时,其身份验证失败缓存条目将被删除。

完整的更改列表可在此处获取:此处

链接 & 致谢

credcheck 是一个在 PostgreSQL 许可证下发布的开源项目,最初由 MigOps Inc 创建,由 Gilles Darold 开发和维护。欢迎任何贡献来构建更好的工具。您可以使用 GitHub 工具发送您的想法、功能请求或补丁。

链接

关于 credcheck

credcheck 扩展是 MigOps Inc 的原创作品,由于 MigOPs 已关闭,Gilles Darold 是官方维护者。如果您需要更多信息,请 联系我

文档位于:https://github.com/MigOpsRepos/credcheck#readme