Bon(soi|jou)r la liste,

Je pose ici mes réflexions sur un problème qui, j'espère, parlera à
certains (qui l'auront résolu), pourra en aider d'autres (qui
l'ont/l'auront un jour).

TL;DR :

Quels sont les services à utiliser pour pouvoir authentifier des
utilisateurs lors d'accès à des dossiers partagés CIFS, des serveurs SSH
Linux et des applications Web avec un référentiel unique/centralisé.

CONTEXTE :

J'ai actuellement l'infrastructure suivante :

* Annuaire LDAP sous OpenLDAP : c'est le référentiel unique, il contient
  utilisateurs/machines (PosixAccount) et groupes (PosixGroup).
* Application (web) maison pour alimenter l'annuaire en fonction des
  embauches/départs (pas de base de données SQL ou autre, tout est dans
  le LDAP).
* Serveur OpenID pour certaines applications web : utilise le LDAP comme
  source.
* Les utilisateurs ont des comptes locaux sur leur stations de travail
  Windows/Linux (aucune interaction avec le LDAP).

Ainsi, les utilisateurs peuvent s'identifier sur :

* des application Web qui gèrent nativement LDAP (eg. Moodle, GitLab,
  GLPI, etc.).
* des applications Web sous Apache/Nginx (via mod_authnz_ldap ou
  nginx-ldap-auth).
* des applications Web qui gèrent OpenID.
* des serveurs Linux en SSH via nslcd, libnss-ldapd et libpam-ldapd.

(Et avoir un carnet d'adresse des collègues dans leur client de messagerie)

Chaque application est responsable de qui elle accepte (utilisateur
et/ou groupe) et de ce qu'elle lui autorise de faire (l'annuaire LDAP ne
contient pas de permissions).

PROBLÈMES/LIMITES :

Cela fonctionne (bien) depuis des années, mais ne réponds pas aux
besoins suivants (arrivés plus tard) :

* (Le plus important): le partage de fichiers via CIFS/Samba (car
  nécessite des attributs spécifiques dans le LDAP).
* stocker *facilement* des données complexes dans OpenLDAP (eg.
  variantes d'avatars/photo, jours de présence sur x semaines)

Bonus facultatif : gestion "domaine" des comptes utilisateurs des
stations de travail pour qu'ils utilisent les même identifiants lors de
l'ouverture de leur session, que je puisse les gérer de manière
centralisée, et qu'ils soient même pré-authentifiés sur les serveurs de
fichiers.

ÉBAUCHE DE SOLUTION :

Je pense donc qu'il est temps de tout reprendre à zéro et c'est là que
je découvre (car je suis néophyte sur ces questions) :

* FreeIPA qui créer un "AD-like" pour machines Linux.
* Samba v4 qui intègre désormais son annuaire LDAP et se comporte comme
  un Active Directory.
* D'autres dont j'avais déjà entendu parler sans jamais les utiliser :
  Kerberos et RADIUS/DIAMETER.

J'envisage donc l'architecture suivante :

* Application maison pour stocker (dans une base SQL quelconque) les
  utilisateurs/groupes (+ des infos spécifiques complexes) ET qui
  alimente l'annuaire avec seulement les infos pertinentes/standardisées
  (le schéma LDAP sera plus simple et une API REST pourra exposer les
  autres infos aux applications si besoin).
* Serveur d'annuaire LDAP (OpenLDAP, 389DS, le 389DS de FreeIPA, le LDAP
  de Samba4 ?).
* Serveur(s) de fichiers (TrueNAS, OpenMediaVault, etc.) : qui se
  connectent à l'annuaire LDAP (ou autre forme de confiance/délégation).

Si je prends le bonus "domaine" : que me faudrait-il ? Samba4 seul
suffirait pour les stations de travail Windows ET Ubuntu ou bien il
faudrait Samba4+FreeIPA pour tout couvrir ?

L'idée d'avoir un AD Samba4 qui tourne sur Internet ne me plait guère.
Et comme les serveurs de fichiers seront de toutes façons dans le LAN,
je pense plutôt installer Samba4 en LAN et mettre en place, juste pour
les applications web, une copie (synchro à sens unique) vers un OpenLDAP
ouvert sur Internet (sans les attributs samba/domaine).

Je suis ouvert à :

* toute correction si j'ai dit une énormité sans nom
* et surtout à toute suggestion d'outil que je n'aurais pas trouvé qui
m'aide dans ma quête.

Merci
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/

Répondre à