Architecture pour un référentiel d'annuaire et d'authentification Single Sign On interopérable en environnement hétérogène

Pascal Levy

Centre de Ressources informatiques reseaux Université Paris 1 Panthéon-Sorbonne

Centre Pierre Mendès France
90, rue de Tolbiac
75634 Paris cedex 13


Résumé

ARCHANN est un modèle de socle capable d'assurer une unification complète des authentifications dans un contexte d'interopérabilité le plus ouvert possible. Elle repose uniquement sur les fonctionnalités natives des systèmes d'exploitation et l'utilisation de protocoles standards.

En outre, ARCHANN fournit la base d'une généralisation du SSO dès l'ouverture de session utilisateur vers l'ensemble des services du SI, notamment avec la mise en place d'une passerelle Kerberos/CAS.

ARCHANN est au cœur du projet « réorganisation générale de la gestion du parc informatique et des environnements utilisateurs », actuellement en cours de préparation au Centre de Ressources Informatiques et Réseaux de l'université Paris 1.

Mots clefs

authentification, annuaire, ldap, kerberos, domaine, Active Directory, interopérabilité, sso, CAS

1contexte et objectifs

1.1L'ouverture de session sur le poste utilisateur, parent pauvre du SI ?

Dans beaucoup d'établissements, la question de l'authentification et de l'ouverture des sessions sur les postes clients n'a pas encore reçue de réponse satisfaisante ou les solutions en place touchent à leurs limites. La centralisation des authentifications est pourtant un élément clé dans le système d'information. Elle conditionne tout projet de centralisation des données et des environnements et donc leur itinérance et la possibilité de sauvegardes uniformes. Elle est le premier moment de l'expérience utilisateur et à ce titre devrait bénéficier d'une attention particulière. Enfin, les implications sécuritaires des outils et des protocoles utilisés sont évidemment très importants.

L'unification des authentifications et la mise en place de Single Sign On (SSO) pour les environnements web a fait l'objet de chantiers souvent importants et a beaucoup progressé. Il s'agit ici d'étudier une piste de socle d'authentification permettant de mettre l'ouverture de sessions sur le poste client à un niveau de fonctionnalité et de sécurité uniforme avec ce que la solution de SSO CAS1 nous permet de faire pour les environnements web.

1.2Des solutions peu satisfaisantes...

Un tour d'horizon rapide des solutions habituellement déployées dans les universités françaises permet de cerner les problèmes et les limites de cet existant.

1.3...et qui ne communiquent pas.

Il est tentant de mixer ces solutions pour tirer de chacune le meilleur et ce mélange est parfois obligatoire quand on a dans les même organisations ou dans des organisations liées des solutions basées sur Active Directory de Microsoft et des annuaires de référence sous OpenLDAP. Çe peut-être le cas par exemple d'une composante faisant tourner un domaine AD dans une université dont l'annuaire est un annuaire LDAP normé Supann. Dans ce contexte, le développement des services aux différents niveaux multiplie les identifiants utilisateurs, surtout si on ajoute à cela les éventuelles applications qui gèrent leurs propres bases de comptes. C'est une situation de ce type qui est à l'origine de ce travail.

Or, la synchronisation de ces applications n'est pas possible ou n'est que partiellement possible en utilisant les schémas habituels, en particulier pour ce qui concerne le mot de passe. Les méta-annuaires qui consolident dans un annuaire supplémentaire les données nécessaires aux différentes applications ou les interfaces de modification synchronisées qui permettent à l'utilisateur de modifier son mot de passe dans les diverses bases de manière simultanée et transparente permettent de réaliser cette synchronisation de manière généralement fonctionnellement satisfaisante. Le principal inconvénient de ces solutions est la multiplication des bases de comptes et donc un affaiblissement global de la sécurité. De plus, elles ne proposent pas de mécanisme d'authentification central.

1.4Finalement, que voulons nous ?

ARCHANN4 propose un schéma permettant de lever ces limitations. Elle repose sur l'unification des identifiants utilisateurs dans une base unique et sur des standards ouverts permettant l'interopérabilité. Elle constitue un socle solide et pérenne d'authentification pour un système d'information urbanisé. Le cahier des charges de départ imposait un certain nombre de contraintes auxquels aucune des solutions habituellement déployées ne satisfont complètement :

Si le point de départ était l'extension d'existants incompatibles, l'intérêt de la solution est bien au delà. ARCHANN permet de faire coopérer des systèmes et des applications qui ne sont à priori pas faites pour cela, mais dont chacune est incomplète et/ou insatisfaisante à elle seule. Last but not least, il s'appuie sur Kerberos, le principal mécanisme de Single Sign On, supporté par de très nombreuses applications, libres comme propriétaires. Il est donc possible d'ajouter de très nombreux services au système en offrant aux utilisateurs un mécanisme d'authentification tout à la fois transparent, très fiable et très sécurisé.

2Architecture

2.1S

Illustration 1: Architecture générale d'authentification ARCHANN


chéma général d'authentification

Le système repose sur deux annuaires utilisés comme bases de référence :

Toutes les authentifications reposent sur l'acquisition de tickets Kerberos :

2.2Accès aux services tiers

Deux modes d'authentification sont disponibles pour les services du SI, le simple bind LDAP ou l'utilisation de GSSAPI/Kerberos. En mode Kerberos, une seule authentification est nécessaire pour l'utilisateur (TGS, Ticket Granting Session), soit à l'ouverture de session, soit manuellement avec un outil client Kerberos (kinit sous Linux). Les acquisitions de tickets ultérieures (TGT, Ticket Granting Ticket) sont transparentes, c'est le mécanisme SSO. Il est notable que les mots de passe de l'utilisateur ne transitent jamais par aucun autre service que le KDC lui-même. La compromission d'un service particulier n'affecte pas la sécurité de l'ensemble du système.

L'utilisation du simple bind LDAP est un contournement du fonctionnement SSO de Kerberos. Il oblige au transfert sur le réseau et à travers les applications serveurs des logins/mot de passe des utilisateurs, ce qu'on veut précisément éviter. À ce titre, il représente un affaiblissement réel de la sécurité globale du système.

Il est probable que le recourt au simple bind LDAP ne puisse pas être complètement évité, à moins que toutes les applications supportent directement Kerberos. Il doit cependant rester une exception mûrement réfléchie et, de toute façon, s'appuyer sur une couche TLS pour assurer une certaine sécurité.

2.3Connexion d'un utilisateur au domaine Windows et accès aux ressources du domaine

Dans un contexte de parc clients large et très majoritairement Windows, l'utilisation d'un domaine Active Directory présente un avantage non négligeable pour la gestion des ouvertures de sessions utilisateurs (connexions à des profils centralisés et à des ressources partagées) et pour les fonctions de gestion de parc (configurations centralisées des postes, installations automatiques, etc...). Avec ARCHANN, le domaine Active Directory est strictement confiné dans ces fonctions. Il ne joue aucun rôle dans les authentifications qui sont entièrement gérées sur le KDC central et ne contient aucun mot de passe valide pour les utilisateurs. Du point de vue du système d'authentification, il n'est qu'un client parmi d'autres, en aucun cas un point central. Cela signifie qu'en cas de migration sur un autre outil pour la gestion du parc client Windows, il peut sans dommage être retiré du système.

Une fois la sélection du realm Kerberos dans l'invite de connexion Windows effectuée, toutes les étapes suivantes de l'ouverture de session sont entièrement transparentes pour l'utilisateur. L'accès aux ressources du domaine est basé sur l'échange de ticket, GSSAPI et la confiance inter-domaine. À aucun moment le mot de passe de l'utilisateur, initialement utilisé pour l'authentifier sur le realm DOMAIN.DEMO ne doit être rejoué : il n'est connu d'aucun service du domaine et n'a pas à l'être.

Illustration 2: Mécanismes d'accès aux ressources du domaine Windows




La connexion présentée ici est celle d'un poste windows membre du domaine AD. Le mécanisme d'ouverture de session d'un poste Unix/Linux serait parfaitement similaire en utilisant pam_krb5 pour l'authentification sur le realm DOMAIN.DEMO et le support GSSAPI de smbclient pour l'accès aux fichiers. Le navigateur de fichier Konqueror de KDE (par exemple) permet l'utilisation transparente de GSSAPI pour l'accès aux fichiers distants, pour peu que libsmbclient soit compilé avec les bonnes options (par défaut sur la plupart des distributions Linux).

2.4Et CAS dans tout ça ?

Le mécanisme de SSO le plus répandu dans les universités françaises, au moins depuis le développement des projets ENT est CAS. Il commence à être éventuellement complété par la mise en place d'une fédération d'identités reposant sur Shibboleth.

La question se pose donc de l'utilité de notre architecture face à la mise en place de CAS. La principale différence entre Kerberos et CAS (de toute façon largement inspiré de Kerberos au moins sur le principe de fonctionnement) est que le premier est un SSO orienté « clients lourds » tandis que CAS est purement web. Il est possible d'utiliser GSSAPI pour gérer un SSO web avec le module Apache mod_auth_kerb. Internet Explorer comme Firefox ou Konqueror sont capables, sous réserve d'un peu de configuration, de passer les tickets pour l'accès à un service. Il s'agit cependant d'un usage un peu aux limites du périmètre de compétences de l'application. Pour cette raison et parce qu'il nécessite dans la plupart des cas (sans jeux de mots) une configuration client, ce n'est pas un usage généralisable au delà de quelques services professionnels à accès strictement Intranet.

CAS, par contre, est strictement web. Son mécanisme de fonctionnement est de faire passer des tickets dans les entêtes HTTP. Cela signifie qu'il n'a rien à dire pour gérer les ouvertures de sessions sur les postes clients, accéder à un serveur de fichier, à un serveur mail avec un client IMAP local, etc. En fait de manière générale, tout ce qui passe par autre chose qu'un navigateur web.

En réalité, Kerberos et CAS devraient être complémentaires dans la plupart des organisations, fournissant l'un l'authentification pour les ouvertures de session et les applications utilisées depuis les postes internes, l'autre pour les applications utilisables en extranet, mode web et pour un public plus large. Cerise sur le gâteau, CAS propose un module d'authentification GSSAPI qui permet d'établir simplement une passerelle Kerberos-GSSAPI vers CAS. L'utilisateur dispose alors d'un SSO complet de l'ouverture de session jusqu'à l'accès à l'ensemble des applications du SI, en mode « lourd » comme en mode web avec un niveau de confort et de sécurité élevé et un coût d'administration relativement faible puisque toutes les applications cassifiées sont éligibles à ce SSO sans modifications.

3Mise en œuvre

Concrètement, ARCHANN est un modèle de socle d'authentification, pas une application. Sa mise en œuvre consiste donc essentiellement en choix de configuration des différentes applications impliquées d'une part et quelques scripts de synchronisation auxquels il faut ajouter un nombre limité d'interfaces utilisateurs d'autre part. Un How-To détaillé de la mise en place d'ARCHANN n'entre pas dans le périmètre de cet article et n'aurait de toute façon pas grand sens. ARCHANN est au coeur d'un projet de réorganisation de la gestion de parc et des environnements utilisateurs au CRIR de l'université Paris 1. C'est donc un « work in progress » qui évolue vite et des informations trop précises risqueraient d'être vite dépassées. Nous passerons donc en revue les grands étapes de la mise en place, mais nous invitons les lecteurs intéressés à consulter les documentations mises à jour sur la page du projet ARCHANN sourcesup8 pour plus de précisions.

3.1LDAP/SASL/Heimdal

Il y a un double lien établi entre le serveur LDAP et le KDC. D'une part, le serveur LDAP permet l'authentification par GSSAPI pour les utilisateurs disposant d'un ticket Kerberos9. Cela nécessite la création d'un principal pour le service ldap et la configuration du mappage des identités SASL dans sldapd.conf. D'autre part, slapd utilise le KDC pour résoudre les mots de passe des utilisateurs effectuant un simple bind LDAP. Pour cela, il s'appuie sur les librairies SASL et le démon saslauthd. Il utilise le schéma de stockage de mot de passe SASL10.

3.2la confiance Heimdal/AD

Le lien entre le contrôleur de domaine Windows AD et le realm DOMAIN.DEMO est une relation de confiance entre les deux realms Kerberos. L'établissement de cette relation de confiance est (mal) documenté dans la base de connaissance de Microsoft11 et dans la documentation de Heimdal12. Elle repose sur un principal partagé avec une clef commune dans les deux realms.

Toute la difficulté consiste dans la gestion catastrophique des types de clefs par Windows. Le plus simple consiste à laisser Heimdal créer ses clefs avec les types par défaut et à supprimer ensuite celles qui sont en trop pour ne laisser que le minimum. Ce que supporte les différentes versions successives de Windows 2000 à 2008 n'est pas très clair. Une solution raisonnable pourrait être de ne laisser que le type des-cbc-crc. C'est bien sûr un affaiblissement – quand même très relatif – de la sécurité, à vous de voir si cela correspond aux besoins et à la politique de votre organisation.

3.3configuration des postes clients

Pour qu'une authentification puisse avoir lieu sur le poste client, il doit être configuré pour utiliser le realm Kerberos DOMAIN.DEMO. Pour Linux cela est réalisé avec krb5.conf et pam_krb5, pour Windows avec l'outil ksetup. Dans les deux cas, l'essentiel des informations concernant le realm peux être retrouvé automatiquement en utilisant des enregistrements DNS, la configuration client est donc minimale.

Le système doit ensuite être capable de mapper l'identité kerberos acquise avec un utilisateur existant sur le système, qu'il soit distant (avec nss_ldap pour linux par exemple ou un domaine AD pour windows) ou local. Le mappage peut être global (de type * vers *@realm) ou explicite (uid vers principal@realm) défini sur le poste où (dans le cas d'un domaine AD) sur le contrôleur de domaine... voire une combinaison de tout cela ce qui laisse une grande souplesse d'adaptation à tous les cas imaginables (gestion des portables, par exemple).

3.4synchronisation des utilisateurs

La création des principals Kerberos peut être gérée soit par un script de synchronisation, soit par une fonctionnalité d'une interface web de changement de mot de passe. Dans le cas de l'utilisation d'un domaine AD, les comptes de l'AD sont gérés par le même script perl, l'objectif étant que le ldap soit la source de toute l'information utilisateurs, aucune intervention manuelle n'étant nécessaire sur les comptes utilisateurs de l'AD.

4Conclusion et quelques perspectives

ARCHANN nécessite une évolution profonde du référentiel d'authentification qui n'est pas triviale et l'étude de faisabilité dans chaque contexte ne doit pas être prise à la légère. En particulier, plusieurs sujets qui ne sont pas abordés ici méritent une attention particulière avant d'envisager toute mise en production. Dans la mesure ou l'ensemble des environnements de travail deviennent dépendants du réseau, la robustesse de ce dernier est une exigence préalable à tout déploiement. La redondance des services ne pose pas de problème particulier, chacun des services critiques d'ARCHANN proposant son propre protocole pour cela. Une stratégie doit néanmoins être mise en place. Enfin, les scénarios de déploiement et de migration doivent être soigneusement étudiés, l'impact étant fort sur les environnements de travail utilisateurs.

La principale faiblesse d'ARCHANN aujourd'hui est l'absence d'une communauté qui en assure la pérennité indépendamment de son initiateur. Pour passer ce stade, il faudra d'abord qu'ARCHANN cesse d'être un projet technique interne à un service informatique pour devenir un véritable projet d'établissement avec implication des utilisateurs et des décideurs. Après plusieurs mois de maturation interne au sein du CRIR de Paris 1, c'est le stade que nous abordons aujourd'hui.

Nous faisons le pari que le jeu en vaut largement la chandelle. ARCHANN représente un progrès significatif dans l'urbanisation de notre système d'information. Elle permet une augmentation et une homogénéisation du niveau global de sécurité tout en assurant une simplification et une plus grande fluidité dans l'accès aux ressources du SI. Elle est, enfin, le socle sur lequel nous appuyons l'industrialisation de notre gestion de parc.

Les perspectives d'évolution de la solution tournent autour de la généralisation de l'usage du SSO Kerberos et de l'élargissement de ses fonctionnalités. Outre bien sûr la connexion progressive de l'ensemble des applications et services éligibles, il est tout à fait envisageable par exemple de s'appuyer sur les fonctionnalités de PKI du KDC pour sécuriser l'accès à certaines zones sensibles du SI, fournir des services authentifiés à des utilisateurs nomades, etc...



1 Central Authentication Service http://www.jasig.org/cas

2 Samba 4 est disponible en version Alpha depuis septembre 2007 (alpha1), la dernière version en date étant alpha8 (juin 2009). A la question « when will Samba 4.0.0 be released? », le wiki répond « When it's ready. It's very hard to say when that will be. It depends on a lot of things and people's spare time. » http://wiki.samba.org/index.php/Samba4/FAQ

3 Kerberos Domain Controler

4 ARCHitecture pour un référentiel d'ANNUaire intéropérable

5 Generic Security Services Application Program Interface

6 Principal : identité d'utilisateur ou de service unique dans le realm (domaine) Kerberos

7 Simple Authentication and Security Layer

8 http://sourcesup.cru.fr/projects/ARCHANN/ fourni une version à jour des documentations du projet, des scripts de synchronisation utilisés et (bientôt) des interfaces associées, notamment pour l'intégration dans un ENT esup.

9 http://www.openldap.org/doc/admin24/sasl.html#GSSAPI

10 http://www.openldap.org/doc/admin24/security.html#Pass-Through authentication

11http://technet.microsoft.com/en-us/library/bb742433.aspx

12http://www.h5l.org/manual/heimdal-1-1-branch/info/heimdal.html#Windows-2000-compatability

8/8 JRES2009