Lire le journal d'audit : qui a fait quoi, et vérifier que personne ne l'a modifié
Traduit de English par IA ·
Le journal d’audit se trouve à l’adresse /admin/audit-logs et nécessite le rôle Admin ou supérieur. Le voici sans filtre sur une organisation de test, une minute après ma connexion, du plus récent au plus ancien.
Chaque ligne contient l’heure, l’action, sa gravité, l’acteur et la ressource, ainsi que l’IP d’où provient une requête. Ma connexion correspond aux deux lignes auth.login et user_session.login, avec USER comme acteur. Les autres sont des lignes feature.access.checked, écrites par SYSTEM, avec un PlanFeature comme ressource. Sélectionnez une ligne pour ouvrir Audit Log Detail : type et ID de l’acteur, métadonnées et champs de la chaîne de hachage.Sur une organisation chargée, vous voudrez filtrer. La zone de recherche accepte une partie du nom d’une action : iot_device.credential trouve chaque modification d’identifiants, auth.login trouve les connexions et les échecs. Filters ajoute l’acteur (par e-mail), la gravité et une plage de dates. Pour un coup d’œil quotidien, je filtre sur High et Critical.Pour un appareil donné, l’API prend un type de ressource et un identifiant :
GET /tenant/{tenantId}/api/audit-logs?resourceType=iot_device&resourceId=<deviceId>&fromDate=2026-10-01&toDate=2026-10-20&page=1&pageSize=100
La page se présente comme inviolable. Le hachage de chaque ligne couvre son contenu et le hachage de la ligne précédente ; modifier ou supprimer une ligne conservée brise donc la chaîne. Vous pouvez la vérifier à tout moment :
GET /tenant/{tenantId}/api/audit-logs/verify
Elle répond { "ok": true, "checked": <rows> }, ou "ok": false avec brokenAt indiquant la première ligne incohérente.La rétention se trouve derrière l’icône en forme d’engrenage (Audit Log Settings). La valeur par défaut est 0, ce qui conserve les lignes indéfiniment. Export CSV télécharge la plage de dates de votre filtre. Les mots de passe, jetons, clés et autres secrets ne sont jamais écrits dans une ligne.Documentation : Journal d’audit, Ce qui est audité.
The audit log lives at /admin/audit-logs and needs the Admin role or higher. Here it is unfiltered on a test organisation, a minute after I signed in, newest first.
Each row has the time, the action, its severity, the actor and the resource, and the IP where a request came in. My sign-in is the two rows auth.login and user_session.login, with USER as the actor. The rest are feature.access.checked rows, written by SYSTEM, with a PlanFeature as the resource. Select any row for Audit Log Detail: actor type and ID, metadata, and the hash chain fields.
On a busy organisation you’ll want to filter. The search box takes part of an action name: iot_device.credential finds every credential change, auth.login finds sign-ins and failures. Filters adds actor (by e-mail), severity and a date range. For a daily look I filter on High and Critical.
For one device, the API takes a resource type and id:
GET /tenant/{tenantId}/api/audit-logs?resourceType=iot_device&resourceId=<deviceId>&fromDate=2026-10-01&toDate=2026-10-20&page=1&pageSize=100
The page calls itself tamper-evident. Each row’s hash covers its content and the previous row’s hash, so editing or deleting a kept row breaks the chain. You can check it whenever you like:
GET /tenant/{tenantId}/api/audit-logs/verify
It answers { "ok": true, "checked": <rows> }, or "ok": false with brokenAt naming the first row that doesn’t fit.
Retention sits behind the gear icon (Audit Log Settings). The default is 0, which keeps rows forever. Export CSV downloads the date range of your filter. Passwords, tokens, keys and other secrets are never written to a row.
Docs: Audit log, What is audited.
Traduit de English par IA ·
Ces lignes feature.access.checked noieraient tout dans notre organisation. Puis-je les masquer de la liste ?
Those feature.access.checked rows would bury everything on our org. Can I hide them from the list?
Traduit de English par IA ·
Recherchez l’action qui vous intéresse au lieu de faire défiler la liste, ou filtrez par gravité : celles de la capture sont toutes Low, donc un filtre High ou Critical les exclut.
Search for the action you’re after instead of scrolling, or filter by severity: the ones in the shot are all Low, so a High or Critical filter leaves them out.
Traduit de English par IA ·
Nous préférerions transmettre les événements de haute gravité vers notre SIEM plutôt que d’interroger l’API. Existe-t-il un hook pour cela ?
We’d rather push high severity events into our SIEM than poll the API. Any hook for that?
Traduit de English par IA ·
Oui, les lignes à risque élevé et critique déclenchent le webhook audit.high_risk, vous pouvez donc les transmettre au fil de l’eau. Pour les extractions en masse, le point d’accès d’export prend en charge le CSV ou le NDJSON et peut être limité à un seul acteur :
GET /tenant/{tenantId}/api/audit-logs/export?format=ndjson&fromDate=2026-10-01&toDate=2026-10-21
Yes, high and critical rows fire the audit.high_risk webhook, so you can forward them as they happen. For bulk pulls the export endpoint does CSV or NDJSON and can be limited to one actor:
GET /tenant/{tenantId}/api/audit-logs/export?format=ndjson&fromDate=2026-10-01&toDate=2026-10-21
Traduit de English par IA ·
Depuis la version 2.2.0, la page de l’appareil dispose d’un onglet Log. Ce sont les mêmes données que la requête resourceType ci-dessus ?
Since 2.2.0 the device page has a Log tab. Same data as the resourceType query above?
Traduit de English par IA ·
Pas seulement. L’onglet Log affiche les modifications auditées de l’appareil, chacune effectuée par une personne ou par le système, avec son historique de connexion (connexions, déconnexions, connexions refusées) dans une seule chronologie ; Show permet de basculer entre All, Connections et Changes. Pour un seul appareil, c’est plus rapide que l’appel API. J’ai rédigé le message deux jours avant la sortie.
Not only. The Log tab shows the device’s audited changes, each by a person or by the system, together with its connection history (connects, disconnects, refused logins) in one timeline; Show switches between All, Connections and Changes. For a single device it’s quicker than the API call. I wrote the post two days before it shipped.
- Vous devez être connecté pour répondre à ce sujet.
Rejoignez la discussion
Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

