巴黎,2024 年 6 月 3 日。
自 2005 年以来,Dalibo 一直为其在法国的客户提供服务、培训和支持。
自 2017 年以来,ldap2pg 为 PostgreSQL 提供了最佳的自动角色和权限同步解决方案。在 pg_hba.conf 文件中配置 PostgreSQL 使用 LDAP 进行身份验证,然后使用 ldap2pg 从您的企业目录创建和配置角色。
今天,Dalibo 发布了 ldap2pg 6.1。此版本增加了对 PostgreSQL 16 及其新的非特权用户管理或角色的支持。众多兼容性和可配置性改进使其成为一个实用且稳定的版本。请访问文档进行安装此新版本。
PostgreSQL 16 在将角色管理委托给非特权用户方面引入了重大的兼容性中断。此更改基于以下观察:之前的实现提供了虚假的安全性,并且与 SQL 标准不符。事实上,具有 CREATEROLE 选项的用户实际上可以授予自己不拥有的权限。
因此,在 PostgreSQL 15 及更早版本上,ldap2pg 6.1 拒绝在没有超级用户权限的情况下运行。在 PostgreSQL 16 上,ldap2pg 6.1 可以在拥有 CREATEROLE 选项的情况下运行,而无需超级用户权限。
ldap2pg 6.1 提供了新的配置工具。您现在可以将环境变量写在与 ldap2pg.yml 文件同级的 .env 文件中,或者写在 ldap2pg 工作目录中。
与 make 和 git 命令类似,ldap2pg 接受一个 -C 参数,该参数决定了命令的工作目录。此参数决定了对 ldap2pg.yml 和 ldaprc 配置文件搜索的位置。
最后,ldap2pg 现在接受一个命令行参数:要同步的 PostgreSQL 实例的连接字符串。此连接字符串可以是 URL 格式或 key=value 格式。
ldap2pg 在连接到 LDAP 目录后不再执行 whoami LDAP 命令。此操作是 LDAP 协议的扩展,并非在所有地方都可用。删除此命令消除了对该扩展可用性的依赖。
LDAPURI 参数可以包含多个用空格分隔的 URI。如果第一个 URI 失败,LDAP 客户端必须尝试第二个。ldap2pg 6.1 纠正了 6.0 版本中的一个回归,并恢复了此客户端侧的高可用性实现。
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 页面。