Alfresco met à disposition, depuis sa version 1.4, un Framework permettant de gérer l’audit : le Framework AuditTrail. L’audit est activable et configurable via un fichier de configuration XML (à noter que par défaut il est désactivé). Le système d’audit est basé sur des intercepteurs. Ces intercepteurs se déclenchent lorsqu’une méthode d’un service Alfresco est appelée (suivant la configuration qui a été faite de l’audit). L’intercepteur stocke ensuite les informations sur ce qu’il s’est passé dans la base de données (par exemple : qui l’a appelée, sur quel fichier, identifiant du nœud, …).

Il faut savoir que suivant le service et/ou la méthode qui a été appelé, les informations d’audit stockées dans la base de données différentUn même service peut comporter plusieurs méthodes « auditables » et si on le désire, il est possible d’auditer seulement une partie d’entre elles. Par exemple, voici une liste (non-exhaustive) des méthodes « auditables » du FileFolderService : rename, move, copy, create, delete, makeFolders, getWriter, …

Vous pouvez retrouver la liste complète des services qui sont « auditables » sur le wiki Alfresco [en].

Plus d’informations sur l’Audit en général sont également disponibles sur le wiki Alfresco [en] : http://wiki.alfresco.com/wiki/Audit

L’audit, à quoi ça sert ?

L’audit peut notamment permettre de dresser des statistiques (ce qui est le cas de notre application AuditSurf), surveiller certaines actions, …


Ou sont stockées les données ?

Les informations d’audit sont stockées dans la base de données Alfresco et plus particulièrement dans les tables préfixées par « ALF_AUDIT ».

Les tables concernées sont : ALF_AUDIT_FACT, ALF_AUDIT_DATE et ALF_AUDIT_SOURCE.

tables_audit

La table ALF_AUDIT_FACT est le pilier du système d’audit d’Alfresco. C’est dans cette table que sont stockées les principales informations auditées.

A chaque action auditée correspond un service et une méthode ayant déclenché cette trace (informations stockées dans la table ALF_AUDIT_SOURCE) ainsi que la date à laquelle l’action s’est déclenchée (ALF_AUDIT_DATE).

La table ALF_AUDIT_DATE est utile seulement si l’on souhaite avoir le détail complet sur la date. Sinon, l’attribut « timestamp » de la table ALF_AUDIT_FACT est amplement suffisant.


Qu’est ce qui est audité et sous quelle forme ?

En dehors de la source (nom du service et nom de la méthode) et de la date de chaque audit, voici la liste des informations d’audit les plus pertinentes (stockées dans la table ALF_AUDIT_FACT) :

  • user_id: identifiant de l’utilisateur qui a déclenché la trace d’audit
  • timestamp: la date et l’heure à laquelle l’audit a eu lieu (pour avoir une date plus complète (numéro de la semaine, jour de l’année, …), il faut utiliser les champs de la table ALF_AUDIT_DATE).
  • return_val: c’est la valeur retourné par la méthode auditée.
  • fail: vaut 0 si l’action s’est correctement déroulée, 1 en cas d’échec.
  • arg_#: les informations les plus utiles sont stockées dans les arguments (arg_1, arg_2, arg_3, arg_4 et arg_5).

    Les valeurs de ces arguments dépendent des services et des méthodes qui ont été audités.

Voici deux exemples qui permettent d’illustrer et d’analyser ce qui est audité :

  • 1er exemple : auditer les connexions des utilisateurs

Voici ce qui est audité lors de l’appel de la méthode « authenticate » du service « AuthenticationService » :

timestamp return_val arg_1 arg_2 fail

2009-05-11 15:56:52

admin

********

0

2009-05-11 15:06:06

Bertrand

********

1

On remarque que peut de choses sont auditées dans ce cas, on peut seulement retrouver le login de l’utilisateur, l’heure à laquelle il a essayé de s’authentifier et s’il a réussi ou non.

Il n’est pas possible pour l’instant via l’audit de connaître le moyen de connexion utilisé par l’utilisateur pour se connecter à l’Alfresco (CIFS, WebDav, FTP, navigateur Web, …).

De plus certains types accès ne laissent pas de traces d’audit (cf. section Problèmes Rencontrés).

  • 2ème exemple : auditer l’ajout de contenu.

 

Lors de l’ajout (ou la création) de contenu, la méthode « create » du service « FileFolderService » est appelée. Voici les données qui sont auditées lors de l’appel de cette méthode :

user_id timestamp return_val arg_1 arg_2 arg_3 fail

admin

2009-05-12 09:31:08

FileInfo[name=test.odt, isFolder=false, nodeRef=workspace://SpacesStore/5d4d4e7d-fb25-4c49-bbba-fb7aa172e321]

workspace://SpacesStore/b091c7d6-e2de-4cd4-8b02-e6316e351cb8 test.odt {http://www.alfresco.org/model/content/1.0}content

0

admin

2009-05-12 09:37:17

FileInfo[name=Photos, isFolder=true, nodeRef=workspace://SpacesStore/066ea37e-a140-4fd8-bf09-edca4da73728]

workspace://SpacesStore/b091c7d6-e2de-4cd4-8b02-e6316e351cb8

Photos

{http://www.alfresco.org/model/content/1.0}folder

0

Ces deux enregistrements sont le résultat d’un ajout de fichier (1ère ligne) et de la création d’un espace (2ème ligne).

L’audit, pour cette méthode (create), est assez complet : grâce au champ « return_val« , on peut récupérer plusieurs informations sur le nœud qui vient d’être créé :

  • son nom
  • le fait de savoir si c’est un espace ou non
  • son NodeRef

Dans le cas présent, l’attribut « arg_1 » stocke le NodeRef de l’espace parent ou a été créé le fichier (ou l’espace), « arg_2 » stocke quand à lui le nom du fichier (ou de l’espace) et « arg_3 » stocke le type du contenu (QName) :

 


importantCet exemple n’est plus d’actualité dans Alfresco 3.2 Entreprise. En effet, dans la dernière monture d’Alfresco, il faut s’intéresser au service « ContentService » et à sa méthode « getWriter » pour avoir des informations sur la création de contenu.


Comment activer l’audit ?

Pour activer ce service, il faut modifier le fichier XML : auditConfig.xml, qui se trouve dans le dossier : /tomcat/webapps/alfresco/WEB-INF/classes/alfresco/.

Dans ce fichier, il faut passer l’attribut « enabled » à « true » :

<Auditxmlns=« http://www.alfresco.org/model/audit/1.0 »
xmlns:xsi=« http://www.w3.org/2001/XMLSchema-instance » enabled=« true »auditInternal=« false »mode=« all »>

 


importantPour que l’audit fonctionne dans Alfresco 3.2 Entreprise (dans Alfresco 3.2r et 3.2r2 Community également), il faut rajouter ces deux lignes au fichier « alfresco-global.properties » :

  • audit.enabled=true
  • audit.useNewConfig=false

 

Il est ensuite possible de configurer plus précisément ce que l’on désire auditer ou non.

 


Configuration de l’audit :

Pour activer l’audit, sur un service ou une méthode, il suffit de passer son attribut mode à « all » ou de le passer à « none » pour le désactiver.

Exemples :

  • Activer l’audit sur toutes les méthodes « auditables » du FileFolderService :

<Servicename=« FileFolderService »mode=« all »>

</Service>

  • Activer l’audit seulement sur certaines méthodes :

<!– The File/Folder Service –>

<Servicename=« FileFolderService »mode=« none »>

<Methodname=« create »mode=« all »/> <!– Audit Activé –>

<Methodname=« delete »mode=« none »/> <!—- Audit Désactivé –>

</Service>

  • Désactiver l’audit sur le FileFolderService :

<Servicename=« FileFolderService »mode=« none »>

</Service>

La liste des services/méthodes présentes dans le fichier de configuration n’est pas exhaustive.

Par exemple, pour pouvoir compter le nombre de workflows il faut rajouter la méthode startWorkflow dans le service WorkflowService :

<Servicename=« WorkflowService »auditInternal=« true »>

<Methodname=« startWorkflow »mode=« all »/>

</Service>

De même, pour pouvoir compter les lectures de document, il faut rajouter la méthode getReader sur les services FileFolderService et ContentService :

<Servicename=« FileFolderService »mode=« none »>

<Methodname=« getReader »mode=« all »/>

</Service>

<Servicename=« ContentService »mode=« none »>

<Methodname=« getReader »mode=« all »/>

</Service>

http://wiki.alfresco.com/wiki/Audit_Configuration

 


Bon à savoir :

  • Volumétrie

Si vous activez beaucoup de services et que l’utilisation de votre Alfresco est conséquente, le nombre d’informations stockées en base risque de croitre très rapidement.


  • Problèmes rencontrés

L’audit ne permet pas d’auditer certaines actions suivant le type d’accès à Alfresco.

Suivant l’accès utilisé pour accéder à Alfresco, l’authentification (Service : AuthenticationService / Méthode : authenticate) peut ne pas être auditée, voici un tableau récapitulatif :

Type d’accès

Traces d’audit

Explorer Alfresco

Oui

Share

Oui

WebDAV

Oui

FTP

Non

CIFS

Non


  • Certaines données « à prendre avec des pincettes » :

Il semblerait que suivant le type de fichier, les audits concernant les lectures ne se fassent pas de la même manière.

Nous avons eu des problèmes, notamment avec des fichiers pdf, qui laissent en moyenne deux fois plus de traces dans les tables d’audit. Ce problème est visible sur les lectures dans le navigateur, et semble être lié au poids du fichier lu.