wiki:LATMOS::Account

But initial

Le logiciel doit permettre une gestion centralisée de comptes informatiques du LATMOS :

  • création
  • modification
  • suppression
  • synchronisation avec les services d'authentification

Il nous faut pouvoir stocker diverses informations sur les utilisateurs:

  • les informations utilisées par les systèmes d'exploitation (login, mot de passe)
  • les informations d'annuaires (adresses, mail)
  • diverses autres informations que nous voulons centraliser

Ces information doivent ensuite être propagées vers les divers annuaires:

  • NIS - compatibilité pour les anciens UNIX
  • (open)LDAP - pour les unix
  • Active Directory (ldap) - pour les windows
  • ...

Le but étant de n'avoir à créer chaque compte utilisateur une seule fois pour l'ensemble des base.

Le logiciel doit pouvoir être utilisé par divers personnes avec des autorisations d'accès différentes. Il met en pratique la politique décidée pour les comptes informatiques

Un évolution par la suite envisageable est l'exploitation administrative de cette base, avec si besoin ajout de champs.

Problématique

Plusieurs problématiques se posent, la principal étant qu'aucune base ne fonctionne de manière similaire. On trouve des différences de:

  • contenu
  • structure
  • fonctionnalités

Hormis les annuaires LDAP conçu pour être partagés par des systèmes très variés, les bases ne contiennent en générale que les information qui leur sont directement utile.

De plus elle ne permettent pas forcément de stocker ce dont nous avons besoin.

Base de compte UNIX / NIS

Base UNIX

Une base de compte UNIX est formée de fichiers texte:

  • passwd
  • group

et éventuellement (mode shadow):

  • shadow
  • gshadow (inutilisé dans la pratique)

Chaque fichier contient une liste de champs séparés par des ':' dont le contenu est normalisé (POSIX).

Cette structure n'apporte aucune fonctionnalité en elle même (pas de logiciel mis en jeu) mais chaque composant logiciel sait quoi trouver où. Les champs n'ont pas de nom normalisés.

De plus l'introduction récente de pam-tcb dans certaines distributions linux modifie la signification et la gestion des mots de passe.

Base NIS

C'est une base centralisée et réseau construite à partir d'une base UNIX.

En interne elle utilise des fichiers DBM, donc sous la forme clef => valeur, la clef servant d'index et étant donc unique, la valeur n'est autre que la ligne du fichier UNIX d'origine. A noter que la longueur maximale d'une ligne est 1024 octets pour les anciens UNIX et que cette limitation est conservée sous linux pour compatibilité.

Les champs utilisés comme clef sont:

table d'origine champs
passwd login
passwd uid
group nom
group gid
shadow login

Cette base est à priori en lecture seule et ne fournit comme moyen d'entrée que la lecture d'une base UNIX. En revanche il doit être possible d'écrire dans les fichiers DBM directement en prenant soin d'incrémenter les compteurs internes de révision.

LDAP

LDAP - Lightweight Directpry Access Protocol - est à l'origine un protocole permettant l'interrogation et la modification des services d'annuaire. Un annuaire est un arbre d'entrées. Le contenu des entrées d'un annuaire LDAP est régi par des schémas. Les éléments d'un schéma ont un nom et un identifiant unique nommé Object identifier (OID). Beaucoup de serveurs exposent les schémas de l'annuaire comme des entrées LDAP accessibles à partir du DN cn=schema. Il est possible pour les administrateurs de définir leur propre schéma en plus des schémas standard.

Voir http://fr.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol et http://tools.ietf.org/html/rfc4510 Technical Specification Road Map

Une base de données LDAP est:

  • structurée
    • types d'objets identifiés
    • attributs identifiés et normalisés
  • arborescente
  • gérant les contraintes référentielles et unicitaires
  • distribuée et réseau
  • intégrant une gestion de droits et authentification

Un ldap, d'après la norme, se doit d'être transactionnel mais le client n'a aucun contrôle et chaque requête correspond à une transaction.

openLDAP

LDAP tout ce qu'il y a de plus classique, en sachant:

  • réplication maître => esclave
  • pas de modification dynamique des schéma (à ce jour)

Active Directory (ldap)

Il s'agit du LDAP de Microsoft, celui-ci sert de base pour Active Directory.

Il fonctionne en réplication maître à maître

Bien qu'il s'agisse d'un vrai LDAP, on notera:

  • les objets peuvent se voir affecter n'importe quel attribut bien qu'ils n'aient pas l'objectClass associé
  • certains champs sont placés en fixant d'autre champs, ceux-ci sont en général en lecture seule
  • les messages d'erreurs retournés sont souvent incompréhensibles et inutiles, donc rarement utilisables

Autres bases

Certaines applications peuvent avoir leur propres bases de comptes, tout les formats sont envisageables.

Solution proposée

La solution proposée est de fournir des modules d'abstraction d'accès aux bases de données, chaque module ayant les codes spécifiques pour:

  • charger/accéder à la base
  • lister les objets
  • récupérer les informations de chaque objet
  • créer, écrire, détruire les objets
  • sauvegarder/valider les informations modifiées

Implémentation

  • Interface Web gérée par Apache
  • Scripts PERL avec framework spécifique
  • ligne de commandes
  • Gestion de l'UTF-8

Fonctionnement des bases

Last modified 3 years ago Last modified on 09/24/14 17:54:21