Cette documentation est obsolète, le LDAP est désormais géré via Re2o. [[:admin|< retour à la page de l'administration technique]] ===== Indexation ===== Pour améliorer l'efficacité de la base HDB, il est important de lui dire quels attributs indexer. Ce sont ceux qui sont utilisés pour des recherches et à chaque fois qu'un attribut non indexé est utilisé, une ligne de log comme la suivante est produite : Aug 5 20:21:56 hexagon slapd[17833]: <= bdb_equality_candidates: (uid) not indexed Les attributs suivants sont indexés (extrait de ''olcDatabase={1}hdb,cn=config''): olcDbIndex: cn eq olcDbIndex: entryCSN eq olcDbIndex: entryUUID eq olcDbIndex: gidNumber eq olcDbIndex: netFederezUID eq olcDbIndex: objectClass eq olcDbIndex: uid eq olcDbIndex: uidNumber eq olcDbIndex: memberOf eq olcDbIndex: memberUid eq ===== Réplication ===== OpenLDAP permet d'être synchronisé entre un //producer// et un ou plusieurs //consumers// grâce à l'overlay **syncrepl** qui succède au désormais obsolète démon slurpd. Voir la documentation officielle pour plus d'informations sur les options choisies : [[http://www.openldap.org/doc/admin24/replication.html|OpenLDAP/replication]]. ==== Provider (master) ==== [[https://github.com/FedeRez/webldap-deploy/blob/master/conf/sync/provider.ldif|provider.ldif]] Les consumers se connectent au provider avec un compte qui à l'accès complet à l'arbre en lecture seule ([[https://github.com/FedeRez/webldap-deploy/blob/master/conf/sync/syncuser.ldif|syncuser.ldif]]) ==== Consumer (slave) ==== [[https://github.com/FedeRez/webldap-deploy/blob/master/conf/sync/consumer.ldif|consumer.ldif]] Avec le paramètre ''type=refreshAndPersist'', les entrées sont récupérées du provider en temps réel. Cela est fait en TLS pour rendre le transfert confidentiel, d'où l'utilisation des noms de domaine dans la configuration. Le mot de passe du RootDN est supprimé pour empêcher toute modification d'être faite à l'arbre et ne pas perturber la synchronisation. ===== ACL ===== Le ''break'' de la première ACL permet de passer aux suivantes pour les utilisateurs non concernés. olcAccess: to * by dn="cn=sync,ou=service-users,dc=federez,dc=net" read by group/organizationalRole/roleOccupant="cn=admin,ou=roles,dc=federez,dc=net" write by * break olcAccess: to attrs=userPassword,shadowLastChange by self write by anonymous auth by group="cn=usermgmt,ou=services,ou=groups,dc=federez,dc=net" write olcAccess: to dn.base="" by * read olcAccess: to dn.sub="ou=users,dc=federez,dc=net" by self write by group="cn=usermgmt,ou=services,ou=groups,dc=federez,dc=net" write by users read olcAccess: to dn.sub="ou=associations,dc=federez,dc=net" by dnattr=owner write by group="cn=usermgmt,ou=services,ou=groups,dc=federez,dc=net" write by group/organizationalRole/roleOccupant="cn=member,ou=roles,dc=federez,dc=net" read by group="cn=readonly,ou=services,ou=groups,dc=federez,dc=net" read olcAccess: to dn.sub="ou=service-users,dc=federez,dc=net" by self write by group="cn=auth,ou=services,ou=groups,dc=federez,dc=net" read olcAccess: to dn.sub="ou=groups,dc=federez,dc=net" by group/organizationalRole/roleOccupant="cn=member,ou=roles,dc=federez,dc=net" read by group="cn=auth,ou=services,ou=groups,dc=federez,dc=net" read olcAccess: to dn.sub="ou=roles,dc=federez,dc=net" by group="cn=usermgmt,ou=services,ou=groups,dc=federez,dc=net" write by group/organizationalRole/roleOccupant="cn=member,ou=roles,dc=federez,dc=net" read by group="cn=auth,ou=services,ou=groups,dc=federez,dc=net" read olcAccess: to * by self write by group/organizationalRole/roleOccupant="cn=member,ou=roles,dc=federez,dc=net" read Les références au RootDN ''cn=admin,dc=federez,dc=net'' ajoutées par Debian à l'installation sont retirées des ACLs car inutiles. La ligne de log suivante le confirme : slapd[14401]: slapd: line 0: rootdn is always granted unlimited privileges. ===== TLS ===== Ajouter ''openldap'' au groupe ''ssl-cert''. Pour créer la chaîne : cd /etc/ssl/federez cat federez.crt sub.class2.server.ca.pem > chain.pem Puis dans slapd (''cn=config'') : olcTLSCACertificateFile: /etc/ssl/certs/StartCom_Certification_Authority.pem olcTLSCertificateFile: /etc/ssl/federez/chain.pem olcTLSCertificateKeyFile: /etc/ssl/private/federez.key ===== SSH ===== L'accès aux serveurs est géré par [[admin:services:NSS]] qui utilise le serveur LDAP. Pour donner l'accès aux serveurs à un utilisateur déjà inscrit avec [[admin:services:webldap|webldap]], suivre les étapes suivantes. ==== Ajouter des attributs au compte ==== Dans ''uid=prenom.nom,ou=users,dc=federez,dc=net'', ajouter les attributs : objectClass: netFederezUser objectClass: posixAccount objectClass: shadowAccount homeDirectory: /home/ loginShell: /bin/bash netFederezUID: uidNumber: gidNumber: shadowMax: 99999 shadowMin: 0 shadowWarning: 7 * '''' et '''' doivent être supérieurs à 10000 et pas déjà utilisés (vérifier avec ''getent passwd'' et ''getent group''). De préférence, utiliser le même numéro pour les deux. * '''' est le nom d'utilisateur ==== Créer un groupe POSIX ==== Créer ''cn=,ou=posix,ou=groups,dc=federez,dc=net'' avec les attributs suivants : dn: cn=,ou=posix,ou=groups,dc=federez,dc=net objectClass: posixGroup cn: gidNumber: memberUid: username * '''' doit être de préférence identique à '''' ==== Autoriser l'accès SSH ==== Dans ''cn=ssh,ou=accesses,ou=groups,dc=federez,dc=net'', ajouter le membre : uniqueMember: uid=prenom.nom,ou=users,dc=federez,dc=net