Comme tous les deux ans depuis 2007, la communauté LDAP se rassemble lors de la LDAPCon, conférence internationale autour du protocole LDAP et plus largement sur les technologies et protocoles liés à la gestion des identités et des accès.

Logo LdapCon

Cette année l’événement s’est tenu du 4 au 6 novembre à Sofia, en Bulgarie. J’ai eu le plaisir d’y représenter Worteks, l’un des sponsors de cette édition, et d’y donner plusieurs conférences. Je vous propose dans cet article un résumé des différentes interventions ainsi qu’une conclusion plus personnelle sur ce qu’il faut en retenir.

Jour 1 – Ateliers

Sofia

Le premier jour était consacré à deux ateliers techniques, le premier sur OpenLDAP, le second sur LemonLDAP::NG.

L’atelier OpenLDAP a été donné par Shawn McKinney, aidé de Maryanne Normann, et portait plus précisément sur la configuration d’une réplication mutli-maîtres. Les choix de configuration étaient les suivants :

  • configuration en mode fichier plat (slapd.conf),
  • utilisation du mode delta-syncrepl,
  • authentification mutuelle des serveurs par certificats clients X509.

Une particularité de l’atelier est la configuration de deux serveurs réplicats en lecture seule avec une synchronisation partielle des données, pour simuler la gestion de zone de droits : en fonction des habilitations d’un compte utilisateur, il était ou non synchronisé dans le réplicat correspondant. Les tests ont permis de montrer qu’à la modification de l’habilitation, le compte était immédiatement ajouté ou supprimé du réplicat.

Les éléments techniques de l’atelier sont disponibles ici : https://github.com/shawnmckinney/openldap-mmr-tutorial.

Je suis intervenu l’après-midi pour un atelier sur LemonLDAP::NG dont l’objectif était l’installation de la solution, l’activation d’un second facteur TOTP et la protection d’applications (Fusion Directory et Dokuwiki). L’image permettant de démarrer les travaux pratiques contient déjà un annuaire OpenLDAP (paquets LDAP Tool Box) et le logiciel Fusion Directory. À l’issue de l’atelier, les participants ont pu créer des comptes dans l’annuaire via Fusion Directory, gérer leurs droits d’accès et révoquer leur second facteur via l’interface d’administration. Ce déploiement donne un aperçu de la solution FusionIAM, que j’ai pu présenter le jour suivant.

Les éléments techniques de l’atelier sont disponibles ici : https://github.com/Worteks/ldapcon2019-llng-workshop

Jour 2 – Conférences

Sofia

My directory service lives in cloud-cuckoo-land!

Conférence de Ludovic Poitou, ForgeRock

ForgeRock a du adapter son annuaire OpenDJ pour qu’il puisse tourner dans Docker. L’utilisation de Kubernetes et Docker change en effet des serveurs traditionnels, en particulier le fait qu’un conteneur puisse s’éteindre et être redémarré à un autre endroit, sans que cela ne doive impacter le service. Dans ces conditions, certains choix techniques ont été faits :

  • Séparation en deux de la configuration, entre les paramètres relativement stables, et les autres concernant principalement la réplication, qui sont modifiés à chaque fois qu’un conteneur démarre ou s’arrête
  • Utilisation de volumes persistants pour les données
  • Association d’un volume persistant par conteneur

Cette organisation nécessite d’être très vigilant sur les montées de version, car le binaire et les données sont désormais à des endroits différents. Ludovic a ensuite procédé à une démonstration avec MiniKube installé sur sa machine. La démonstration utilise également Skaffold et Kustomize. On voit le déploiement de 3 noeuds, puis l’ajout et le retrait d’un noeud via l’interface de MiniKube. Il existe un déploiement en production avec 65 millions d’entrées. L’utilisation de conteneurs permet à ForgeRock de livrer des nouvelles versions environ toutes les 3 semaines.

OpenLDAP, syncrepl and multimaster replication

Conférence de Ondřej Kuzník, Symas

Ondřej est l’un des développeurs les plus actifs sur OpenLDAP, il explique ce qui a été fait jusqu’ici au niveau des processus de réplication et les problèmes qu’il reste à régler. OpenLDAP supporte le protocole syncrepl en tant que client et serveur, mais il est également capable d’être serveur sur d’autres protocoles (cette partie sera abordée par Howard Chu dans une autre conférence). Un point important relevé par Ondřej concernant le protocole syncrepl, c’est que le standard ne prévoit pas que le client syncrepl puisse également être un serveur : pour résumer, le cas du multi-maître n’a pas été envisagé dans le protocole. Cela implique donc de s’adapter pour gérer ce type d’architecture, par exemple lors de la diffusion d’une modification dans un cluster, il faut bloquer la modification si elle revient au serveur ayant initié cette modification. Il y a également un sujet sur les overlays (des plugins dans OpenLDAP) qui sont chargés dans le serveur mais qui ne savent pas s’ils sont dans un contexte de réplication. Typiquement l’overlay memberof fonctionne très mal dans une architecture avec de la réplication.

Ondřej indque que de nombreux bugs sont ouverts et que certains sont corrigés pour la version 2.5. En bref : la réplication multi-maîtres c’est compliqué…

Towards an Attribute-Based Role-Based Access Control System

Conférence de Shawn McKinney, Symas

Shawn rapelle les origines de RBAC, créé en 1992 par le NIST. Les spécifications RBAC définissent plusieurs niveaux (de RBAC-0 à RBAC-3). Le premier niveau est celui qui est le plus simple, il définit la notion de session et de rôle pour l’utilisateur. Dans les niveaux plus avancés, RBAC indique par exemple comment gérer la séparation des privilèges. Mais l’utilisation de rôles peut vite devenir complexe : si on souhaite définir 3 rôles (utilisateurs, gestionnaire, administrateur) pour 5 applications, on devra créer au final 15 rôles. Dans des organisations avec de nombreuses applications, gérer l’association des rôles aux utilisateurs peut vite devenir fastidieuse. Pour cela un autre modèle a été imaginé : ABAC (Attributes Based Access Control). Plusieurs logiciels Open Source permettent de mettre en place RBAC et ABAC : Apache Fortress et AuthzForce. Shawn fait des démonstrations avec Fortress, logiciel dont il est le principal développeur :

aehostd — A custom NSS/PAM service for Æ-DIR

Conférence de Michael Ströder, Indépendant

Michael est le développeur du logiciel Æ-DIR, un système de gestion d’identités basé sur OpenLDAP et écrit majoritairement en python (Michael est par ailleurs le mainteneur d’un fork de python-ldap nommé ldap0). Il nous présente ici aehostd, un service NSS/PAM qui sert donc aux serveurs Linux à authentifier les utilisateurs et gérer les droits associés. Ce service permet également de fournir les informations à sudo, par un export d’un fichier sur chaque serveur, pour des raisons de performances. En effet, l’utilisation de sudo-ldap peut être très consommatrce pour l’annuaire, même si l’utilisation de sssd permet de faire du cache. Michael a suivi le même principe pour la gestion des clés SSH : celles qui sont autorisées sont synchronisées sur les serveurs, il n’y a pas d’appel à l’annuaire lors de l’authentification SSH.

Un des intérêts de son produit : par défaut aucun compte ne peut se connecter à une nouvelle machine. Une connexion SSH avec un compte applicatif particulier initialise le démon qui utilise le mot de passe fourni pour se connecter à l’annuaire LDAP, et récupère ensuite les comptes et clés SSH.

Le service aehostd peut être découvert plus en détail ici : https://www.ae-dir.com/aehostd.html

The FusionIAM initiative

Conférence de Clément Oudot, Worteks

J’ai la lourde charge de démarrer l’après-midi de cette seconde journée avec une conférence sur le projet FusionIAM. J’y présente les motivations qui ont poussé les communautés Fusion Directory et LemonLDAP::NG a créer cette initiative afin de proposer une solution de gestion des identités et des accès complète, et uniquement basée sur des composants libres.

En plus des logiciels Fusion Directory et LemonLDAP::NG, cette solution s’appuie également sur OpenLDAP, les “White Pages” du projet LDAP Tool Box et LDAP Synchronization Connector.

Ce projet est hébergé par OW2 (code et listes de diffusion), il n’est pour le moment pas très avancé, les efforts étant portés sur l’amélioration des API des principaux logiciels afin de simplifier leur future intégration.

La présentation peut être retrouvée ici : https://www.slideshare.net/wortekscom/ldapcon-2019-the-fusioniam-initiative

What’s up with ForgeRock Directory Services

Conférence de Ludovic Poitou, ForgeRock

Ludovic fait une présentation des dernières nouveautés de ForgeRock Directory Services (ex OpenDJ, ex OpenDS). En dehors des adaptations pour le cloud, présentées dans sa première conférence, le produit est activement développé pour fournir de nouvelles fonctionnalités. Il cite par exemple la supervision via Prometheus et Graphite, la gestion du chiffrement du mot de passe par SCRAM, ce qui fait porter une grosse partie du calcul côté client et pas côté serveur, l’utilisation du contrôle LDAP “relax” pour les imports en masse afin de préserver les dates de création et modification.

An OpenLDAP backend for Samba – a new way forward

Conférence de Nadezhda Ivanova, Symas

Nadezhda développe depuis plusieurs années des extensions dans OpenLDAP dans le but de l’utiliser dans Samba 4. Les échanges avec la communauté Samba sont nombreux, le projet Samba est très actif et il est difficile de s’adapter aux nombreux changements.

Nouvelle approche : avoir un serveur OpenLDAP séparé, plutôt qu’un OpenLDAP en backend de Samba. Le serveur Samba ne gèrerait plus que les appels RPC, tous les appels LDAP iraient directement à OpenLDAP. Pour cela, de nouveaux overlays (plugins dans OpenLDAP) ont été développés : ad_schema et objectguid.

Les choses avancent mais il reste beaucoup de travail avec que cela ne soit stabilisé.

Sparrow Identity Server – From Fluttering to Flying

Conférence de Kiran Ayyagari, Indépendant

Sparrow est un fournisseur d’identité avec les fonctionnalités suivantes : provisionning avec SCIM, support de OpenIDConnect, SAMLv2. 2FA TOTP, WebAuthn, réplication mutli-maître via HTTPS.

Kiran avait présenté son projet il y a 2 ans à Bruxelles, il a depuis continué de travailler sur le logiciel. Sparrow ne repose pas sur OpenLDAP ni sur un autre serveur LDAP connu, il implémente son propre serveur LDAP. L’intérêt de Sparrow est plutôt du côté de SCIM qui est assez largement implémenté dans le produit. On peut par exemple faire des recherches dans les logs d’audit via SCIM.

Discovering the Library That Drives 389 Directory Server’s CLI, Web UI, and much more

Conférence de Simon Pichugin, Red Hat

Simon travaille chez Red Hat sur l’annuaire 389DS. Avant dans 389DS, il y avait la console en java, des scripts en Perl et en Bash. Ils ont décidé de partir sur du python, à la fois pour les tests (pytest), la CLI et la WebUI.

Simon fait une démonstration : il active la réplication multi-maître via la commande dsconf, les agréments de réplication apparaissent sur la WebUI. Il utilise enfin un script python qui appelle la bibliothèque de tests pour vérifier qu’une entrée créée sur le premier noeud arrive bien sur le deuxième noeud… Les bibliothèques et les clients devraient être disponibles sur CentOS 7 dans les prochaines semaines.

Apache Directory Project : a state of the (current) art

Conférence de Emmanuel Lécharny, Apache

Emmanuel fait une rétrospective du projet Apache Directory et nous livre les dernières informations. Projet incubé en 2003, promu en 2005. Plusieurs projets sont issus de Apache DS : le studio, l’API mais aussi Kerby, un serveur Kerberos indépendant.

Sur ApacheDS, il reste du travail, certaines choses ne fonctionnent plus (Stored Procedures), système d’ACL à remplacer (par Fortress ?). La version actuelle du studio est la 2.0.0-M14, des extensions sont en attente de publication : openldap config, user/group management / templating Apache LDAP API a deux versions maintenues :1.0 et 2.0.0. La 2.0.0 apporte le support de nouveaux contrôles et opérations étendues (transactions, incrément). Le projet SCIMple est une implémentation de SCIM, mais il pas encore sorti. Il doit remplacer escimo (le précédent projet de Kiran Ayyagari). Les prochaines releases prévues : LDAP API, Apache DS, Studio et Fortress.

Enfin Emmanuel indique que bien que le projet ait 15 ans, ils ne sont que 4 développeurs, et que les choses vont forcément lentement. En bref, ils sont preneurs d’un petit coup de main !

Jour 3 – Conférences

Sofia

Conférences éclair – session 1

Cette dernière journée démarre sur quelques conférences éclair, chacune durant entre 5 et 15 minutes.

La première est intitulée “Password policy considered harmful” et est donnée par Andrew Findlay. Son propos est de questionner l’utilité d’une politique des mots de passe (par exemple qui contrôle les majuscules, minuscules, …) alors qu’une liste noire des 100 mots de passe les plus utilisés serait déjà assez efficace. Il note également que la détection d’authentifications ratées sur l’annuaire génère des écritures, ce qui peut impacter les performances. Il préconise plutôt une détection d’attaque indépendante du serveur LDAP.

Les deux suivantes sont données par un intervenant Danois. Il présente la fédération des identités des Universités au Danemark, et en particulier le bouton RA21. L’idée est d’avoir une apparence identique partout où les utilisateurs doivent utiliser la fédération. Le code utilisé est disponible sur GitHub : https://github.com/TheIdentitySelector/. C’est assez proche de ce qui est fait par Renater en France.

La dernière conférence éclair de cette matinée est donnée par Howard Chu, sur le sujet “New Replication Features in OpenLDAP”. Le sujet a été abordé rapidement la veille dans la présentation de la réplication. Ici Howard revient sur les nouveautés développées dans OpenLDAP, en particulier la compatibilité avec la réplication de deux autres systèmes d’annuaires LDAP : SunDS (utilisation du changelog) et Active Directory (en mode batch, pas de connexion persistante). Pour AD, OpenLDAP livre un schéma (msuser.schema) contenant environ 1000 attributs spécifiques à cet annuaire. Ces fonctionnalités seront disponibles dans OpenLDAP 2.5.

LemonLDAP::NG 2.0: Mutli-factor authentication, Identity Federation, WebService and API protection

Conférence de Clément Oudot, Worteks

J’ai la chance d’intervenir de nouveau, cette fois-ci pour présenter plus en détail LemonLDAP::NG et un certain nombre de nouvelles fonctionnalités sorties dans la version 2.0. Elles ont été entrevues par les participants lors de l’atelier du lundi, en particulier la gestion des seconds facteurs.

Après avoir présenté le principe du SSO et l’historique du projet, j’explique les algorithmes derrière différentes méthodes de second facteurs : TOTP et U2F (FIDO). Enfin on aborde le sujet de la protection des API/WebServices. LemonLDAP::NG offre désormais plusieurs possibilités :

  • Un Handler Service Token, qui génère un jeton spécifique qui est retransmis par l’application frontale au WebService, lui-même protégé par un Handler sachant consommer le jeton
  • L’utilisation de l’access token fourni lors d’une authentification OpenID Connect, ce jeton pouvant être vérifié par le WebService en appelant le point d’accès “userinfo” ou bien le point d’accès d’introspection, un des standards OAuth2.
  • Enfin, une solution hybrique qui repose elle aussi sur l’access token OAuth2 émis lors de l’authentification OpenID Connect, mais qui est consommé par un Handler OAuth2 situé entre l’applicaton frontale et le WebService

La présentation peut être retrouvée ici : https://www.slideshare.net/wortekscom/ldapcon-2019-lemonldapng-20-mutlifactor-authentication-identity-federation-webservice-and-api-protection

Voir aussi la documentation associée sur le site de LemonLDAP::NG : https://lemonldap-ng.org/documentation/latest/webserviceprotection

OpenLDAP History – A Retrospective on 20 years

Conférence de Howard Chu, Symas

Comme à son habitude, Howard démarre son intervention pour un morceau de violon, qu’il emmène à chaque conférence. Rien de tel pour capter l’attention. Howard enchaîne ensuite sa présentation sur les 20 ans du projet OpenLDAP.

Howard retrace les différentes versions d’OpenLDAP et ce qu’elles ont apporté. Par exemple l’apparition des overlays en version 2.2, cn=config et delta syncrepl dans OpenLDAP 2.3, LMDB dans OpenLDAP 2.4.

Chaque version vient également avec une amélioration des performances et plus de stabilité. La version 2.5 est toujours en développement et aucune date de sortie n’est annoncée. Mais Howard affirme que les challenges pour OpenLDAP ne sont plus techniques, mais plutôt marketing…

Modelling and evaluating complex user entitlements in directory services using JSON and REST

Conférence de Mark Perry, Ping Identity

Mark travaille depuis de nombreuses années sur LDAP, il a écrit LDAPsql, un outil en ligne de commande permettant d’utiliser le langage SQL pour interroger un annuaire. Il travaille chez Ping Identity en particulier sur le produit PingDirectory qui est un data store LDAP et REST/JSON.

Une des particularités de ce produit est que la gestion des habilitations n’est pas faite par des groupes ou des rôles, mais modélisée au format JSON dans des attributs spécifiques. Ils ont créé dans l’annuaire LDAP une syntaxe JSON avec des règles de comparaison associées, ce qui permet de faire des recherches LDAP sur des composants de la valeur JSON, donnant des filtres de recherches LDAP très similaire à ce qu’on peut retrouver dans du noSQL.

Open-Source LDAP training material

Conférence de Andrew Findlay, Skills 1st

Andrew présente ici les supports de cours qu’il utilise pour ses formations et indique qu’il va les publier prochainement pour les rendre disponibles au plus grand monde.

Extending OpenLDAP password policy module with ppm

Conférence de David Coutadeur, Linagora

David est l’un des contributeurs du projet LDAP Tool Box, il travaille sur les paquets Debian OpenLDAP LTB et également sur le module ppm (password policy module) qu’il présente aujourd’hui.

Le module ppm sous licence publique OpenLDAP. Il possède de nombreuses fonctionnalités :

  • Gestion des classes de caractères (majuscules/minuscules/chiffres/caractères spéciaux)
  • Taille maximale
  • checkRDN : vérifie que le mot de passe ne contient pas la valeur du RDN de l’entrée
  • cracklib : recherche dans un dictionnaire
  • Caractères interdits

Ce module peut être téléchargé directement, il est également disponible par défaut dans les paquets OpenLDAP LTB : https://ltb-project.org/download.

Using LDAP directory for FIDO 2.0

Conférence de Tsukasa Hamano, OSSTech

FIDO 2.0 (WebAuthn) repose sur l’utilisation d’une clé publique pour authentifier l’utilisateur. Tsukasa explique comment stocker les informations liées à FIDO 2.0 dans l’annuaire.

FIDO 2.0 impose d’utiliser un id “anonyme”, donc pas le login de l’utilisateur. Ils utilisent donc l’entryUUID pour relier l’entrée LDAP de l’utilisateur à la clé FIDO 2.0 située dans une entrée dédiée.

Tsukasa nous montre une démonstration en ligne, disponible ici : https://demo.osstech.co.jp/. Voir aussi le projet sur GitHub : https://github.com/osstech-jp/fido2-ldap-demo.

Comprehensive LDAP Monitoring with “Bell Tower”

Conférence de Christopher Paul, Rex Consulting

Christopher vient présenter le logiciel Bell Tower, un outil spécialisé dans la supervision des annuaires LDAP. L’architecture du produit est assez complexe, basée sur elastic search, mongodb, telegraph, logstash et d’autres composants encore.

Christopher fait une démonstration assez convaincante. Il est dommage que le logiciel ne soit pas encore publié.

Identity management in University POLITEHNICA of Bucharest

Conférence de Mihai Carabas, Université Polytechnique de Bucarest

Il s’agit ici d’un retour d’expérience sur l’implémentation d’une gestion des identités dans une grande université à Bucarest. Mihai explique ses choix techniques : application de gestion en Perl (langage choisi pour sa bonne gestion de l’UTH-8, indispensable pour l’alphabet roumain), annuaire 389DS synchronisé avec AD, base de données intermédiaire pour récupération des informations du système RH. Applications connectées : Moodle, Zimbra, SSSD, OpenStack, Office 365, authentification Wifi.

La prochaine étape est la mise en place d’un SSO.

Conférences éclair – session 2

On conclut cette journée par quelques conférences éclair. La première parle d’images Docker pour serveur LDAP mais surtout propose de tenir la prochaine édition de la LDAPCon en Corée du Sud, le public semble approuver.

Shawn McKinney vient présenter son API RBAC en python : https://github.com/shawnmckinney/py-fortress

Michael Ströder parle de son projet EKCA : https://ekca.stroeder.com/ekca.html. C’est une autorité de certification qui permet de délivrer des certificats SSH d’une durée limitée dans le temps. Il est donc nécessaire de faire une demande de certificat avant de pouvoir se connecter.

Enfin Peter Gietz vient aborder un sujet beaucoup moins technique : les modèles économiques des sociétés faisant de la gestion des identités et des accès Open Source. Son propos est que la plupart des sociétés dans ce secteur sont relativement petites et ne peuvent pas couvrir toutes les expertises, et qu’il faut donc s’organiser en réseau et collaborer.

C’est sur ces belles paroles que se conclue la 7e édition de la LDAPCon.

Alors, quoi de neuf docteur ?

Sofia

Je commencerai tout d’abord par remercier les organisateurs et les sponsors qui ont permis la tenue de cet événement. Dans nos métiers, il est important de pouvoir se réunir et d’échanger sur les avancées techniques sur lesquelles nous travaillons chacun de notre côté. Qui plus est, c’est toujours un plaisir de retrouver les participants de la LDAPCon qui sont pour beaucoup des habitués, présents depuis la première rencontre en 2007.

Si je devais résumer cette édition, je dirai “non non, rien n’a changé, tout tout a continué”. Yeah… Yeah… En effet, ne venez pas à la LDAPCon pour vous émerveiller devant de la blockchain, de l’IA, du machine learning, du DevOps, ou d’autres termes à la mode que je ne dois pas connaître. Ici on parle de technologies qui existent depuis plusieurs dizaines d’années et qui évoluent finalement très peu. Ce n’est pas très vendeur et cela se voit au nombre de participants à la conférence.

Toutefois il ne faut évidemment par confondre qualité et quantité, et même si l’événement n’a rassemblé qu’une quarantaine de personnes, celles-ci venaient d’Europe (Royaume-Uni, France, Roumanie, Bulgarie, République Tchèque, Allemagne, Espagne) , Etats-Unis, Corée, Japon, Australie… Plusieurs sociétés importantes étaient réprésentées, dont Red Hat et Ping Identity. Cela me conforte dans l’idée que cette conférence est très importante et mérite l’investissement que chaque participant y a consacré.

Et même s’il n’y a pas de grande annonce, je note tout de même que notre écosystème reste à l’écoute des dernières avancées techniques : Forgerock a montré comment déployer des annuaires à plusieurs millions d’entrées avec Kubernetes, Sparrow et Apache Directory s’intéressent de près à SCIM, la gestion des seconds facteurs (TOTP, FIDO U2F / WebAutn) est une formalité pour la plupart des produits présentés. Comme l’a indiqué Howard Chu dans l’un de ses tweets :

OpenLDAP with LMDB can run on your phone and serve you a local addressbook, or run on large server with 2048 CPUs serving millions of queries per second at 0.4ms/query. (As fast as a network ping takes.) No other data management system on earth is as efficient and scalable.

Au final, ces trois jours ont confirmé l’importance du travail de fond réalisé par les ingénieurs travaillant sur ces technologies, sur lequelles reposent la grande majorité de système d’authentification dans le monde. Et en parallèle des efforts nécessaires à la maintenance de ces solutions, l’amélioration de leur résilience et de leurs performances, certaines nouveautés techniques sont importées, non pas parce qu’elles ont le vent en poupe, mais parce qu’elles apportent une réelle valeur ajoutée.