WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:ldap:replication

Réplication du LDAP

On réplique le LDAP en utilisant ldap-master et ldap-slave. Pour cela nous utilisons d'une part le module de réplication de LDAP : Syncrepl et Keepalived (déjà utilisé pour les Passerelle wifi)

Ldap-master est en lecture/écriture, ldap-slave est en lecture seule.

On doit d'abord configurer le master (le seul qui peut modifier le contenu du LDAP), pour ajouter un User qui permettra de faire la synchronisation et le module qui sert à synchroniser.

On ajoute l'utilisateur :

dn: cn=synchro,dc=minet,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: synchro
description: replication user
userPassword: changeme

On ajoute le module :

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: syncprov.la

Ensuite nous devons accorder les droits suffisants à l'utilisateur synchro pour qu'il puisse lire l'arborescence complète :

  • Sur le contenu :
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=minet,dc=net" write by dn="cn=inspector,dc=minet,dc=net" read by dn="cn=synchro,dc=minet,dc=net" read by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by * read
  • Sur le schéma :
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
  by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
  by dn.exact="cn=synchro,dc=minet,dc=net" read
  by * break

Enfin on utilise le module Syncprov pour exposer l'arborescence :

  • du schéma :
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov
olcSpCheckpoint: 100 10
olcSpSessionlog: 100
  • du contenu :
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov
olcSpCheckpoint: 100 10
olcSpSessionlog: 100

Enfin on configure ldap-slave :

Une fois la dernière réplication configurée, il n'est plus possible de modifier le contenu de ldap-slave, y compris la configuration TLS. Pensez donc bien à configurer cela avant. L'ordre des modifications suivantes est donc à respecter.

On ajoute les droits (et oui ils ne sont pas synchronisés)

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=minet,dc=net" write by dn="cn=inspector,dc=minet,dc=net" read by dn="cn=synchro,dc=minet,dc=net" read by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by * read

On configure la réplication pour le contenu :

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=003
  provider=ldaps://ldap-master.minet.net/
  bindmethod=simple
  binddn="cn=synchro,dc=minet,dc=net"
  credentials=changeme
  searchbase="dc=minet,dc=net"
  schemachecking=on
  type=refreshAndPersist
  retry="60 +"
  tls_cacert=/etc/ssl/certs/MiNET_private_CA.pem

Puis on configure celle du schéma (qui empêchera toutes les autres modifications):

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldaps://ldap-master.minet.net/
  bindmethod=simple
  binddn="cn=synchro,dc=minet,dc=net"
  credentials=changeme
  searchbase="cn=schema,cn=config"
  schemachecking=on
  type=refreshAndPersist
  retry="60 +"
  tls_cacert=/etc/ssl/certs/MiNET_private_CA.pem
-
add: olcSyncRepl
olcSyncRepl: rid=002
  provider=ldaps://ldap-master.minet.net/
  bindmethod=simple
  binddn="cn=synchro,dc=minet,dc=net"
  credentials=changeme
  searchbase="cn=config"
  filter="(| (objectClass=olcModuleList) (objectClass=olcMemberOf))"
  schemachecking=on
  type=refreshAndPersist
  retry="60 +"
  tls_cacert=/etc/ssl/certs/MiNET_private_CA.pem

Le filtre de la dernière synchro permet de ne pas synchro tout sous cn=config mais seulement ce qui nous intéresse.

wiki/services/ldap/replication.txt · Dernière modification: 2020/06/27 18:16 (modification externe)