Das Audit-Log lesen: wer was getan hat und prüfen, ob niemand es verändert hat
Von English mit KI übersetzt ·
Das Audit-Log befindet sich unter /admin/audit-logs und erfordert die Rolle Admin oder höher. Hier ist es ungefiltert auf einer Testorganisation zu sehen, eine Minute nachdem ich mich angemeldet habe, neueste zuerst.
Jede Zeile enthält den Zeitpunkt, die Aktion, ihren Schweregrad, den Akteur und die Ressource sowie die IP-Adresse, von der eine Anfrage kam. Meine Anmeldung besteht aus den beiden Zeilen auth.login und user_session.login, mit USER als Akteur. Die übrigen sind feature.access.checked-Zeilen, geschrieben von SYSTEM, mit einem PlanFeature als Ressource. Wählen Sie eine beliebige Zeile aus, um die Audit Log Detail-Ansicht zu öffnen: Akteurtyp und ID, Metadaten und die Felder der Hash-Kette.Bei einer ausgelasteten Organisation werden Sie filtern wollen. Das Suchfeld akzeptiert einen Teil eines Aktionsnamens: iot_device.credential findet jede Änderung von Zugangsdaten, auth.login findet Anmeldungen und Fehlversuche. Unter Filter lassen sich Akteur (per E-Mail), Schweregrad und ein Datumsbereich hinzufügen. Für einen täglichen Überblick filtere ich auf Hoch und Kritisch.Für ein einzelnes Gerät nimmt die API einen Ressourcentyp und eine ID entgegen:
GET /tenant/{tenantId}/api/audit-logs?resourceType=iot_device&resourceId=<deviceId>&fromDate=2026-10-01&toDate=2026-10-20&page=1&pageSize=100
Die Seite bezeichnet sich selbst als manipulationssicher. Der Hash jeder Zeile umfasst ihren Inhalt und den Hash der vorherigen Zeile, daher bricht das Bearbeiten oder Löschen einer gespeicherten Zeile die Kette. Sie können dies jederzeit prüfen:
GET /tenant/{tenantId}/api/audit-logs/verify
Die Antwort lautet { "ok": true, "checked": <rows> } oder "ok": false mit brokenAt, das die erste nicht passende Zeile nennt.Die Aufbewahrungsdauer befindet sich hinter dem Zahnradsymbol (Audit Log Settings). Der Standardwert ist 0, was Zeilen dauerhaft behält. CSV exportieren lädt den Datumsbereich Ihres Filters herunter. Passwörter, Tokens, Schlüssel und andere Geheimnisse werden niemals in eine Zeile geschrieben.Dokumentation: Audit-Log, Was protokolliert wird.
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.
Von English mit KI übersetzt ·
Diese feature.access.checked-Zeilen würden in unserer Organisation alles verdecken. Kann ich sie aus der Liste ausblenden?
Those feature.access.checked rows would bury everything on our org. Can I hide them from the list?
Von English mit KI übersetzt ·
Suchen Sie nach der gewünschten Aktion, statt zu scrollen, oder filtern Sie nach Schweregrad: Die Einträge im Screenshot sind alle Low, daher blendet ein Filter auf High oder Critical sie aus.
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.
Von English mit KI übersetzt ·
Wir würden hochkritische Ereignisse lieber in unser SIEM übertragen, als die API abzufragen. Gibt es dafür einen Hook?
We’d rather push high severity events into our SIEM than poll the API. Any hook for that?
Von English mit KI übersetzt ·
Ja, Zeilen mit hohem und kritischem Risiko lösen den audit.high_risk-Webhook aus, sodass Sie sie sofort weiterleiten können. Für Massenabfragen unterstützt der Export-Endpunkt CSV oder NDJSON und kann auf einen einzelnen Akteur beschränkt werden:
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
Von English mit KI übersetzt ·
Seit Version 2.2.0 gibt es auf der Geräteseite einen Log-Tab. Sind das dieselben Daten wie bei der resourceType-Abfrage oben?
Since 2.2.0 the device page has a Log tab. Same data as the resourceType query above?
Von English mit KI übersetzt ·
Nicht nur das. Der Log-Tab zeigt die geprüften Änderungen am Gerät, jeweils von einer Person oder vom System, zusammen mit seiner Verbindungshistorie (Verbindungen, Trennungen, abgelehnte Anmeldungen) in einer gemeinsamen Zeitleiste; Show schaltet zwischen All, Connections und Changes um. Für ein einzelnes Gerät ist das schneller als der API-Aufruf. Ich habe den Beitrag zwei Tage vor der Veröffentlichung geschrieben.
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.
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Mitdiskutieren
Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

