wiki:LATMOS::Account

Version 3 (modified by nanardon, 15 years ago) (diff)

--

But initial

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 centralisés

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.

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 fichier texte:

  • passwd
  • group

et éventuellement (mode shadow):

  • shadow
  • gshadow (inutilisé dans la pratique)

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

Cette 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 certains distribution 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 les 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é 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 fourni 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

Un ldap est une base de donnée:

  • structurée
    • type d'objets identifiées
    • 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 droit 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'il n'ait 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 incompréhensibles et inutiles

Autres bases

Certaines applications peuvent avoir leur propres base 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

Fonctionnement des bases