Paris, le 1er septembre 2023

Dalibo est fier de vous annoncer la disponibilité de ldap2pg 6.0. Cette nouvelle version majeure apporte des performances inégalées, de nouvelles fonctionnalités mais aussi des ruptures de compatibilité. Suivez la documentation pour installer cette nouvelle version.

ldap2pg

Depuis 2017, ldap2pg propose la meilleure solution de synchronisation automatique de rôles et de privilèges pour PostgreSQL. ldap2pg 6.0 casse la compatibilité après des années de stabilité. Le gain en terme de performance, de fiabilité et de portabilité justifie ce choix.

Réécriture en Go

ldap2pg a subit une réécriture complète dans le langage de programmation Go 1.20. Cette réécriture apporte un gain de performance considérable au prix d’un changement important dans le livrable ldap2pg. Désormais, ldap2pg est un binaire lié statiquement d’une petite dizaine de mégaoctets. Les options en ligne de commande ont légèrement changé, faites attention à mettre à jour vos lignes de crontab.

Côté performances, ldap2pg 6.0 consomme rarement plus de 1,5Mo de mémoire, y compris dans les situations les plus complexes. À comparer aux 40Mo de mémoire minimum consommés par ldap2pg 5.0, pouvant atteindre des centaines de mégaoctets selon les configurations. La taille de l’image Docker passe de 126Mo à 17Mo. Cela donne une idée de l’économie de place que vous pouvez obtenir sur votre installation de ldap2pg même dans une machine classique.

Synchronisation des paramètres de rôles

PostgreSQL permet de configurer certains paramètres par rôles. Ainsi, un DBA peut décider d’ajuster le niveau de log d’un utilisateur, de manière permanente. Avec le paramètre config, le DBA peut déclarer à ldap2pg des paramètres PostgreSQL à définir. Cette fonctionnalité est une contribution de Randolph Voorhies d’inVia Robotics.

rules:
- role:
    name: alice
    config:
      log_statement: mod

Hériter d’un rôle local

Un cas courant de synchronisation suppose l’existence de groupes prédéfinis par le DBA dont seuls les membres seront synchronisés par ldap2pg. ldap2pg 5.0 gérait mal cette situation à cause d’une erreur de conception à propos de la gestion de l’héritage. Désormais le DBA définit les parents d’un rôle et non ses membres. Cela signifie concrètement que ldap2pg gère des membres de groupes et non des groupes explicites. Les parents d’un rôle ne sont pas nécessairement synchronisés par ldap2pg.

Nouvelle stratégie de synchronisation des privilèges

La synchronisation des privilèges est l’opération la plus coûteuse dans l’exécution de ldap2pg. ldap2pg 6.0 apporte une nouvelle stratégie plus performante et plus fiable. Les privilèges sont synchronisés indépendamment et séquentiellement. Ainsi la liste des accords de privilèges est découpée en plusieurs listes par privilèges, traitées individuellement. Cette nouvelle stratégie est très économe en mémoire.

Désormais, la synchronisation s’effectue base par base. Plutôt que de garder une connexion ouverte à chaque base, ldap2pg ne consomme qu’une connexion à la fois. Les requêtes sont regroupées par base pour limiter au maximum les aller-retours entre deux bases. Lors de synchronisation multi-base, la connexion à une base peut-être ouverte jusqu’à trois fois au cours de la synchronisation.

Enfin, un nouveau paramètre --skip-privileges permet d’ignorer la synchronisation des privilèges. Ce comportement permet d’utiliser un fichier de configuration pour synchroniser uniquement les rôles, plus fréquemment.

Nouvelle définition des créateurs d’objets

Pour configurer les privilèges par défaut, ldap2pg doit connaître les créateurs d’objets. Désormais, ldap2pg a deux manières de configurer les créateurs d’objets. La première est simplement de définir explicitement le nom du ou des rôles dans la règle grant grâce au nouveau champ owner. La seconde est de laisser la valeur owner à __auto__ pour laisser ldap2pg déterminer les créateurs. Dans la seconde option, ldap2pg répertorie par schémas les rôles synchronisés ayant le droit CREATE sur le schéma et l’option LOGIN. Cette nouvelle stratégie est implicite mais plus cohérente.

Autres changements

ldap2pg 6.0 apporte beaucoup d’autres changements de comportement, de format de fichier, de paramétrage. Reportez-vous à la documentation des changements pour un inventaire plus exhaustif. Le format de configuration passe en version 6. ldap2pg 6.0 refusera de s’exécuter avec un fichier en version 5. Dans tout les cas, tester la synchronisation dans un environnement de test avant de déployer cette mise-à-jour.

Si une fonctionnalité de ldap2pg 5 vous manque, n’hésitez pas à le remonter sur GitHub pour la réintégrer dans une prochaine version mineure.

Retrouvez la documentation en anglais, des procédures et le support communautaire à ces adresses :


Étienne BERSAC est le mainteneur de ldap2pg, un projet du Dalibo Labs. Pour toutes questions techniques, l’équipe recommande d’utiliser la page de ldap2pg sur GitHub.


DALIBO

DALIBO est le spécialiste français de PostgreSQL®. Nous proposons du support, de la formation et du conseil depuis 2005.