Le journal d’audit enregistre les actions sensibles de votre organisation : connexions et échecs de connexion, changements de membres et de rôles, changements d’identifiants et de clés, commandes à fort impact, actions sur le firmware, suppressions, changements de paramètres, et plus encore. Les lignes ne sont jamais modifiées par l’application. Utilisez le journal pour répondre à « qui a modifié ceci, et quand ? », pour appuyer une investigation et comme preuve lors d’un audit. La liste des actions enregistrées se trouve dans Ce qui est audité.
Ouvrir le journal
Ouvrez Audit Logs à l’adresse /admin/audit-logs de votre organisation. Il affiche « Journal inviolable des actions effectuées dans cette organisation ». Vous devez disposer du rôle Admin ou supérieur.
Les événements les plus récents apparaissent en premier. Sélectionnez une ligne pour ouvrir Audit Log Detail.
Contenu d’une ligne
| Colonne ou champ | Signification |
|---|---|
| Time | Moment où l’événement s’est produit. |
| Actor | Auteur de l’action : un membre, le système, une clé API ou un service. Le détail ajoute Actor type et Actor ID. |
| On behalf of | Lorsqu’une personne a agi pour le compte d’une autre, la personne pour laquelle elle a agi. L’acteur reste le véritable auteur. |
| Action | Ce qui a été fait, par exemple iot_device.credential.rotated ou auth.login_failed. |
| Severity | Low, Medium, High ou Critical. |
| Resource | Resource type et Resource ID de l’élément modifié, par exemple iot_device et l’identifiant de l’appareil. |
| Metadata | Informations supplémentaires, comme les noms des champs modifiés. Les secrets, mots de passe, jetons et clés ne sont jamais écrits. |
| IP et User agent | D’où provenait la requête. |
| Integrity (hash chain) | Prev hash et Row hash de la ligne (voir ci-dessous). |
Les événements à risque élevé et critique déclenchent aussi le webhook audit.high_risk, afin de les transmettre à vos propres outils de sécurité. Voir Webhooks.
Rechercher des événements
Utilisez les filtres au-dessus du tableau :
| Filtre | Utilisation |
|---|---|
| Actor | Search by email… |
| Action | Une partie du nom de l’action, par exemple auth.login ou iot_rpc |
| Severity | Une seule gravité |
| Date range | From et To |
Clear filters les réinitialise. Via l’API, vous pouvez aussi filtrer par type de ressource et identifiant de ressource :
GET /tenant/{tenantId}/api/audit-logs?resourceType=iot_device&resourceId=<deviceId>&fromDate=2026-11-01&toDate=2026-11-08&page=1&pageSize=100
pageSize vaut au maximum 100 par défaut ; Max Page Size dans les paramètres du journal d’audit peut le porter jusqu’à 500.
Export
Export CSV télécharge le journal pour la plage de dates du filtre. Via l’API, vous pouvez choisir CSV ou NDJSON et limiter l’export à un seul acteur, par exemple pour répondre à la demande d’une personne souhaitant consulter ses données :
GET /tenant/{tenantId}/api/audit-logs/export?format=ndjson&actorId=<userId>&fromDate=2026-01-01&toDate=2026-11-08
Preuve d’inviolabilité
Chaque ligne est liée à la ligne précédente de votre organisation par une chaîne de hachage : le hash d’une ligne couvre son contenu et le hash de la ligne qui la précède. Toute modification ou suppression d’une ligne conservée rompt la chaîne. Pour vérifier la chaîne, appelez :
GET /tenant/{tenantId}/api/audit-logs/verify
La réponse est { "ok": true, "checked": <rows> } pour une chaîne intacte, ou "ok": false avec brokenAt désignant la première ligne incohérente. Après la suppression d’anciennes lignes par la rétention, la première ligne conservée renvoie à une ligne qui n’existe plus ; la vérification accepte ce point de départ.
Rétention
Ouvrez Audit Logs > paramètres (Audit Log Settings) :
| Paramètre | Valeur par défaut | Signification |
|---|---|---|
| Retention Period (days) | 0 | Durée de conservation des lignes avant que la purge nocturne ne les supprime. 0 les conserve indéfiniment. Réglez-la selon vos besoins de conformité, par exemple 2,555 jours pour une conservation de sept ans. |
| Max Page Size | 100 | La plus grande page qu’un appelant de l’API peut demander, au maximum 500. |
Le journal d’audit est enregistré sur toutes les offres. Si une offre n’inclut pas la lecture du journal, la liste et l’export sont refusés jusqu’à ce que l’offre l’inclue à nouveau ; rien n’est perdu entre-temps.
Confidentialité
Un propriétaire peut anonymiser une personne dans le journal : le lien entre les lignes et la personne est retiré, tandis que les actions elles-mêmes restent et que la chaîne reste vérifiable. Cela fait partie du traitement d’une demande d’effacement ; voir Confidentialité et effacement des données.
POST /tenant/{tenantId}/api/audit-logs/anonymize
Content-Type: application/json
{ "actorId": "<userId>" }
Permissions
| Action | Rôle par défaut |
|---|---|
| Lire le journal | Admin |
| Exporter | Admin |
| Vérifier la chaîne | Admin |
| Anonymiser une personne | Owner |
| Purger maintenant les lignes expirées | Owner |
Les événements d’un membre apparaissent aussi sur sa page membre, dans l’onglet Activity. Voir Utilisateurs et rôles.

