ldap2pg 6.1:Postgres 16 非特权用户、钩子等

发布于 2024-06-10,作者:Dalibo
相关开源项目

巴黎,2024年6月3日。

自 2005 年以来,Dalibo 一直在法国为客户提供服务、培训和支持。

自 2017 年以来,ldap2pg 为 PostgreSQL 提供了最佳的自动角色和权限同步解决方案。在 pg_hba.conf 文件中使用 LDAP 配置 PostgreSQL 身份验证,然后使用 ldap2pg 从您的企业目录创建和配置角色。

今天,Dalibo 宣布推出 ldap2pg 6.1。此版本支持 PostgreSQL 16 及其新的非特权管理或角色。大量的兼容性和可配置性改进使其成为一个实用且稳定的版本。请按照文档安装此新版本。

非特权执行和 Postgres 16

PostgreSQL 16 在将角色管理委派给非特权用户方面引入了重大兼容性中断。此更改基于以下观察:之前的实现提供了安全性的假象,并且与 SQL 标准不一致。实际上,具有 CREATEROLE 选项的用户可以事实上授予自己不拥有的权利。

此外,ldap2pg 6.1 拒绝在 PostgreSQL 15 及更早版本上以非超级用户身份运行。ldap2pg 6.1 可以在 PostgreSQL 16 上使用 CREATEROLE 选项运行,而无需超级用户权限。

可配置性

ldap2pg 6.1 提供了新的配置功能。您现在可以将环境变量写入 ldap2pg.yml 文件旁边的 .env 文件中,或写入 ldap2pg 工作目录中。

makegit 命令相同,ldap2pg 接受 -C 参数,该参数确定命令的工作目录。此参数确定对 ldap2pg.ymlldaprc 配置文件的搜索。

最后,ldap2pg 现在接受一个命令行参数:要同步的 PostgreSQL 实例的连接字符串。此连接字符串可以是 URL 格式或键=值格式。

兼容性

ldap2pg 在连接到 LDAP 目录后不再执行 whoami LDAP 命令。此操作是 LDAP 协议的扩展,并非在所有地方都可用。删除此命令可以消除对该扩展可用性的依赖。

LDAPURI 参数可以包含多个以空格分隔的 URI。如果第一个 URI 失败,LDAP 客户端必须尝试第二个。ldap2pg 6.1 纠正了 6.0 版本中的一个回归,并恢复了此客户端 HA 实现。

LDAP 是一个不区分大小写的协议,仅适用于 ASCII 字符。ldap2pg 6.1 现在对 DN 和属性名称不区分大小写。

执行钩子

ldap2pg 中刚刚实现了一个非常古老的功能请求:定义在创建角色之前或之后执行的任意 SQL 命令。例如,为新用户创建一个特定的模式。role 规则现在接受 before_createafter_create 参数。这些请求可以从 LDAP 搜索接收动态值。

继续执行错误

一些错误不应阻止同步继续。例如,如果 ldap2pg 无法删除仍在基本对象中拥有的角色。ldap2pg 6.1 可以容忍最多 8 个此类同步错误,然后放弃。

其他更改

请参阅 更新日志 中有关更多更改、功能和修复的信息。

文档、程序和社区支持可在以下地址找到


Étienne Bersac 和 Pierre-Louis Gonon 开发了 ldap2pg,这是 Dalibo Labs 的一个项目。如有任何技术问题,该团队建议使用 GitHub 上的 ldap2pg 页面