wiki:LATMOS::Account

Version 9 (modified by vivat, 15 years ago) (diff)

--

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.

Il a été décidé en CL du 23/09/2009 :

  • la gestion administrative par cette base n'était pas à l'ordre du jour et donc uniquement les informations nécessaires à la gestion des comptes informatiques et de l'annuaire seront saisies.
  • la gestion des congés est découplée de cette base pour des raisons de complexité des règles administratives.
  • les utilisateurs pourront changer uniquement leur mot de passe, leur adresse et leur téléphone.
  • le service administratif pourra prolonger un compte
  • toute autre opération ne sera accessible qu'aux administrateurs de la base (informaticiens)
  • pour la fermeture d'un compte, les mails seront envoyés automatiquement à l'utilisateur, à son responsable et éventuellement au service administratif et/ou informatique, un mois avant, une semaine avant et un jour avant.
  • la prolongation ne peut être demandée que par l'administration ou le responsable, mais pas par l'utilisateur seul.
  • la demande de prolongation sera adressée à la fois à l'informatique et à l'administration. La charge revient à l'informatique de prolonger le compte, mais l'administration peut palier à un manque de réponse ponctuel.
  • la modification du département suit la même voie que la demande de prolongation.

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

Un ldap est une base de données:

  • 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