巴黎,2024年6月3日。
自 2005 年以来,Dalibo 一直在法国为客户提供服务、培训和支持。
自 2017 年以来,ldap2pg 为 PostgreSQL 提供了最佳的自动角色和权限同步解决方案。在 pg_hba.conf
文件中使用 LDAP 配置 PostgreSQL 身份验证,然后使用 ldap2pg 从您的企业目录创建和配置角色。
今天,Dalibo 宣布推出 ldap2pg 6.1。此版本支持 PostgreSQL 16 及其新的非特权管理或角色。大量的兼容性和可配置性改进使其成为一个实用且稳定的版本。请按照文档安装此新版本。
PostgreSQL 16 在将角色管理委派给非特权用户方面引入了重大兼容性中断。此更改基于以下观察:之前的实现提供了安全性的假象,并且与 SQL 标准不一致。实际上,具有 CREATEROLE
选项的用户可以事实上授予自己不拥有的权利。
此外,ldap2pg 6.1 拒绝在 PostgreSQL 15 及更早版本上以非超级用户身份运行。ldap2pg 6.1 可以在 PostgreSQL 16 上使用 CREATEROLE
选项运行,而无需超级用户权限。
ldap2pg 6.1 提供了新的配置功能。您现在可以将环境变量写入 ldap2pg.yml
文件旁边的 .env
文件中,或写入 ldap2pg 工作目录中。
与 make
和 git
命令相同,ldap2pg 接受 -C
参数,该参数确定命令的工作目录。此参数确定对 ldap2pg.yml
和 ldaprc
配置文件的搜索。
最后,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_create
和 after_create
参数。这些请求可以从 LDAP 搜索接收动态值。
一些错误不应阻止同步继续。例如,如果 ldap2pg 无法删除仍在基本对象中拥有的角色。ldap2pg 6.1 可以容忍最多 8 个此类同步错误,然后放弃。
请参阅 更新日志 中有关更多更改、功能和修复的信息。
文档、程序和社区支持可在以下地址找到
Étienne Bersac 和 Pierre-Louis Gonon 开发了 ldap2pg,这是 Dalibo Labs 的一个项目。如有任何技术问题,该团队建议使用 GitHub 上的 ldap2pg 页面。