AccessLog
1. Présentation
Cette fonctionnalité est appliquée au niveau d’une base de données de l’annuaire et permet de collecter les opérations (selon des critères ou pas) qui ont été effectuées sur celle-ci puis de les enregistrer dans une autre base de données. Les opérations peuvent être sélectionnées de manière très sélective, car elle s’appuie sur les filtres de recherche du protocole LDAP et permet donc de réaliser une supervision de l’activité désirée. Un exemple serait de tracer l’activité de certains utilisateurs ou bien de certaines entrées de l’annuaire. Cet overlay permet également de consulter et d’examiner l’activité LDAP d’une base de données dans un format LDAP au lieu de visionner des fichiers plats à l’aide du mode "debug" du processus "slapd".
¬
Cette fonctionnalité est d’ailleurs requise pour l’utilisation de la réplication "Delta-syncrepl" (voir chapitre La réplication).
Pour obtenir plus d’informations, entrer la commande :
man slapo-accesslog
2. Exemple de configuration
1.	Le module "accesslog.la" doit tout d’abord être chargé dans l’entrée : dn: cn=module{0},cn=config	
2.	Il faut ensuite créer une nouvelle entrée pour déclarer et configurer une nouvelle base de données, laquelle sera utilisée par la fonctionnalité "AccessLog" :	
dn: olcDatabase=hdb,cn=config 
objectClass: olcDatabaseConfig 
objectClass: olcHdbConfig 
olcDatabase: hdb 
olcDbDirectory: /var/lib/ldap/accesslog 
olcSuffix: cn=accesslog 
olcRootDN: cn=admin,cn=accesslog 
olcRootPW: xxxx 
olcDbIndex: default eq 
olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart 
. . .
3.	Puis il faudra configurer les paramètres de l’overlay "accesslog" dans l’entrée de la base de données désirée, sur laquelle on veut collecter les différents types d’opérations, afin de l’associer à la base précédemment créée.	
dn: olcOverlay=accesslog,olcDatabase={1}bdb,cn=config 
objectClass: olcOverlayConfig 
objectClass: olcAccessLogConfig 
olcOverlay: accesslog 
olcAccessLogDB: cn=accesslog 
olcAccessLogOps: writes 
olcAccessLogSuccess: TRUE 
olcAccessLogPurge: 07+00:00 01+00:0
La configuration ci-dessus permet ainsi de collecter toutes les écritures réussies dans le DIT ciblé et de les enregistrer dans une autre base de données (cn=accesslog) sous la forme d’un DIT qui aura pour base : cn=accesslog. Le paramètre logpurge permet également de contenir le volume de données de cette base, l’empêchant ainsi de devenir trop volumineuse en fonction de l’activité de l’annuaire. Et ainsi, pour consulter les événements désirés, il faudra se connecter avec un navigateur LDAP sur le DIT cn=accesslog.
¬
L’activation de cet overlay peut avoir des impacts sur les performances de l’annuaire. Dans notre exemple ci-dessus, à chaque opération d’écriture effectuée sur l’annuaire ciblé, il y aura une opération d’écriture dans le DIT cn=accesslog.
Ci-dessous, voici un exemple d’entrée dans le DIT cn=accesslog suite à la modification de l’attribut uidNumber d’un utilisateur.
[root@ldap01 tmp]# ldapsearch -h localhost -D 
"cn=admin,cn=accesslog" -w -b cn=accesslog 
# extended LDIF 
# 
# LDAPv3 
# base <cn=accesslog> with scope subtree 
# filter: (objectclass=*) 
# requesting: ALL 
# 
# accesslog 
dn: cn=accesslog 
objectClass: auditContainer 
cn: accesslog 
# 200170310193929.000004Z, accesslog 
dn: reqStart=20080110163829.000004Z,cn=accesslog 
objectClass: auditModify 
reqStart: 200170310193929.000004Z 
reqEnd: 200170310193929.000005Z 
reqType: modify 
reqSession: 538639 
reqAuthzID: cn=root,dc=exemple,dc=com 
reqDN: uid=userA,ou=Users,dc=exemple,dc=com 
reqResult: 0 
reqMod: uidNumber:- 60001 
reqMod: uidNumber:+ 60002 
reqMod: entryCSN:= 200170310193929.095157Z#000000#000#000000 
reqMod: modifiersName:= cn=root,dc=exemple,dc=com 
reqMod: modifyTimestamp:= 200170310193929 
# search result 
search: 2 
result: 0 Success 
# numResponses: 3 
# numEntries: 2