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