Vous êtes ici : Accueil / 2013 / Septembre / LBE ou comment gérer vos utilisateurs LDAP via interface web

LBE ou comment gérer vos utilisateurs LDAP via interface web

écrit le 13/09/2013 Par Croizet Pierre-Alexandre
Comme beaucoup d'entre nous, il nous est fréquent de rajouter, modifier, supprimer des utilisateurs dans le LDAP. Pour les inconditionnels de celui-ci, quelques lignes de commandes et le tour est joué, mais pour certains, LDAP résonne avec galères. Heureusement, un outil existe via une interface web afin de de faciliter les modifications des utilisateurs. LBE pour "LDAP Business Editor" permet de vulgariser l'administration d'un annuaire. Étant simple d'utilisation, il permettra aux RH, par exemple, de pouvoir rajouter des comptes dans la base du LDAP, avec quand même une nécessité de validation de la part de l'administrateur système.

Introduction


LBE utilise la technologie Django, MongoDB et est codé en Python. Afin de pouvoir utiliser LBE, il vous faudra donc:
  •  Python installé sur le serveur recevant le LBE,
  •  MongoDB
  •  Django 
  • Une pile Django, par exemple Apache+Gunicorn
  • Une base de données. LBE prend en compte les bases de données classiques (sqlite3, MySQL, PostgreSQL, Oracle, et plus généralement toutes celles supportées par Django)
  •  et bien-sur LDAP
Le LDAP devra déjà être configuré car LBE ne permet pas la configuration initial de votre annuaire. Nous ne parlerons pas de configuration de LDAP, MongoDB, Django, Gunicorn dans cet article. Il est possible d'installer LBE sur un serveur différent de celui de votre annuaire. Nous verrons un peu plus tard la configuration. Une fois les dépendances requises installées et configurées vous pourrez passer à l'installation.

LBE n'est pas un "phpldapadmin" donnant un accès bas niveau au LDAP, mais un outil de plus haut niveau, nécessitant un peu de configuration, mais permettant ensuite de manipuler les utilisateurs de manière plus simple, accessible à un non-technicien.

Installation et Configuration

Installation

L'installation est trivial. Il vous suffira de télécharger l'archive au format zip (ici) ou mettre en place un clone du dépôt git. Si vous choisissez de récupérer l'archive, décompressez la une fois téléchargée.
$ unzip master.zip && rm master.zip
$ cd lbe-master
Nous avons donc a ce stade plusieurs dossiers. Deux dossiers doivent retenir notre attention:
  •  lbe: qui contient les fichiers de configurations de LBE (settings.py, urls.py, wsgi.py)
  •  custom: qui contient les scripts d'import/export des utilisateurs LDAP. Nous avons a disposition un premier script d'exemple employee.py. Nous nous en servirons afin de faire nos premiers imports.

Configuration

Passons a la configuration de lbe. il nous faut renseigner les bons paramètres pour la base de donné dans le fichier lbe/settings.py. Dans un premier temps il faudra configurer la base de donné:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'ldap.db', # Or path to database file if using sqlite3.
        'USER': '', # Not used with sqlite3.
        'PASSWORD': '', # Not used with sqlite3.
        'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '', # Set to empty string for default. Not used with sqlite3.
    }
}

Explications:
  • Engine: On appel le module django.db pour notre base sql. Ici Sqlite3
  • Name: Le nom de la base SQL lors de la création
  • User: Ici il faut renseigner l'utilisateur pour la connexion a la base SQL si nécessaire (ce n'est pas le cas avec sqlite3).
  • Password: Idem qu pour le User
  • Host: Si la base SQL est sur un autre serveur, il faudra renseigner ici son adresse.
  • Port: Idem que pour Host, mais pour le port de connexion.

Ensuite viens la configuration pour le serveur LDAP:
LDAP_SERVER = {
'PROTOCOL': 'ldap://',
'HOST': 'NomServeurLdap.domain.com,
'PORT': 389,
'BASE_DN': 'dc=domain,dc=com',
'BIND_DN': 'cn=manager',
'BIND_PWD': 'root'
}

Explications:
  • Protocol: Mettre ldap:// (ou éventuellement ldaps)
  • Host: Souvenez vous plus tôt dans l'article, j'avais fait remarquer qu'il était possible de mettre LBE sur un serveur différent du LDAP. C'est donc ici que l'on renseigne l'adresse du serveur possédant le ldap.
  • Port: Le port de connexion
  • BASE_DN: renseigner ici le "DN" sous lequel chercher
  • BIND_DN: il s'agit d'un login admnistrateur dans le LDAP
  • BIND_PWD: Le mot de passe du LDAP

Et la configuration Mongo DB:
MONGODB_SERVER = {
'HOST': 'localhost',
'PORT': 27017,
'DATABASE': 'lbe',
'USER': '', # In order to not use the auth service, just put the USER value to blank.
'PASSWORD': '',
}

Vous pouvez la laisser par défaut.

Une fois les configurations crées, il faut créer la base de données :
$ python manage.py syncdb

Finaliser la création de la base de données :

$ python migrate

Importer les données initiales SQL:

$ python loaddata directory/fixtures/sample_data.yaml

Il se peut que pendant la création du SuperUser qu'une erreur survienne :

TypeError: decode() argument 1 must be string, not None

Il s'agit d'un soucis de locales. Pour la corriger, un simple export suffit, du type :

$ export LANG="en_US.UTF-8"
$ rm DataBaseName

Et relancez les étapes.

Ensuite il faut importer le ldap. Tout d'abord vous devez modifier la configuration de custom/employee.py. Il vous faut modifier cette ligne-ci :

def base_dn(cls):
    return 'ou=Employees,ou=People,dc=opencsi,dc=com'

et celle-ci :

def object_classes(cls):
    return ['top', 'person', 'organizationalPerson', 'inetOrgPerson']

afin d'avoir les bons attributs lors de l'import depuis le ldap. 

Ensuite il ne reste plus qu'a importer le ldap:

$ python manage.py --import-target

Si tout se passe bien, à ce stade nous avons donc:

  • une base de données créé ;
  • un super utilisateur (pour l'administration de LBE) ;
  • notre ldap importé.

 

 Nous sommes prêt a nous connecter sur LBE. Pour cela il est possible de lancer LBE en mode test :

$ python manage.py runserver 0.0.0.0:<port>

Ouvrez votre navigateur web et rendez-vous sur l'adresse du server.

Nous arrivons sur la page de login. Saisissez les login/pass précédemment enregistrés (SuperUser).

Si tout c'est bien passé, sur la page d’accueil se trouvent les utilisateur que notre script employee.py nous a synchronisé.

Il donc maintenant possible de rajouter des utilisateurs dans le groupe employé, donc toute personne de l'entreprise possédant un compte sur LBE (comme les RH par exemple) peuvent rajouter/supprimer/modifier  des employés.

Après tout changement (rajout/suppression/modification) depuis l'interface LBE, il faut impérativement resynchroniser LBE et le LDAP avec la commande suivante:

$ python manage.py --reconciliation

Le fait d'avoir a saisir une commande pour la réconciliation entre LBE et LDAP peu paraître contraignant, mais ceci-permet de valider les saisies par l'administrateur système et de pouvoir garder la main sur le LDAP. Une fois le processus rôdé, et si vous avez toute confiance dans le système (et dans vos backups...) il possible d'exécuter cette opération via un cron.

Conclusion

Nous n'avons fait qu'un bref tour de LBE dans cet article. Nous n'avons pas poussé les configurations. Le rajout d'autres scripts dans le custom, la création de groupes supplémentaires est possible. Son interface web facilite l'utilisation du LDAP et permet de déléguer les taches de rajouts/suppressions tout en gardant une surveillance sur les changements à effectuer.

 

Liens:

Git:

https://github.com/OpenCSI/lbe

Documentation officiel:

https://github.com/OpenCSI/lbe/wiki

Actions sur le document