Jede schreibende Aktion in aYOUne — Create, Update, Delete, Right-Change, Login, Customer-Switch — wird im Audit-Trail festgehalten. Für Compliance, Forensik und reine Neugier ("wer hat den Coupon entfernt?") ist das die richtige Adresse.
Was wird auditiert?
| Aktion | Erfasst |
|---|---|
| CRUD auf jeder Collection | Vorher/Nachher-Diff, Aktor, Zeit, IP |
| Auth-Events (Login, Logout, Password-Reset) | User, IP, User-Agent, Erfolg |
| Right-/Role-Changes | Was, wer, vorher → nachher |
| Customer-Switch | Source-Customer → Target-Customer |
| API-Token-Issue | Audience, Scope, TTL |
Audit-Records leben unter audit.ayoune.app (eigene Service-Instanz, hochskalierende Schreib-Last). Ihre TTL hängt vom Customer-Paket ab — typisch 365 Tage, für regulierte Branchen 7 Jahre.
Audit-Records einsehen (UI)
admin-v2 → Audit-Trail. Filter:
- Time-Range (Heute, 7d, Custom)
- Aktor (User, Service-Account, System)
- Kategorie (auth, crud, rights, ...)
- Collection (
consumers,tasks, ...) - Free-Text-Search (über Diffs)
Klick auf eine Zeile zeigt den Diff-View — alte vs. neue Werte side-by-side, plus Metadata wie IP, User-Agent, debugId.
CLI-Zugriff
ay audit consumers <id> # Audit-Trail eines Datensatzes
ay history consumers <id> # Alias
ay list audits \
--filter '{"category":"rights","createdAt":{"$gte":"2026-04-01"}}' \
--sort 'createdAt:-1' --limit 100
Output ist standardmäßig eine Tabelle. Mit --responseFormat json kannst du den Audit-Trail in dein SIEM exportieren.
Programmatischer Zugriff
Direkt-API: https://audit.ayoune.app
curl -X POST https://audit.ayoune.app/audits/aggregate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"pipeline": [
{ "$match": { "category": "auth", "subcategory": "login.failed" } },
{ "$group": { "_id": "$_actorIP", "count": { "$sum": 1 } } },
{ "$sort": { "count": -1 } },
{ "$limit": 20 }
]
}'
So findest du z.B. die Top-20 IPs mit Failed-Logins (Brute-Force-Detection).
Errors als Tasks
Eine Plattform-Eigenheit: Runtime-Errors werden zusätzlich als tasks mit type: "Bug" persistiert. Sie tauchen also nicht nur in ayounelogs (kurzlebig, ~1h TTL) sondern auch in der CRM-Task-Liste auf — gefiltert auf der Read-Seite, damit normale Sales-User sie nicht sehen.
Compliance-Export
Für DSGVO-Auskünfte oder ISO-Audits gibt es einen Bulk-Export:
ay exec audit:export-user --userId <id> --format csv --out ./audit-user.csv
ay exec audit:export-customer --since 2026-01-01 --format ndjson > audit-2026.ndjson
Der Export läuft asynchron via BullMQ-Job (audit-export) — Ergebnis wird als Download-Link gemailt.
Best Practices
- Read-Only Audit-Role für externe Auditoren — ein eigenes Login mit
audit.view-Right und sonst nichts. - Alerts auf verdächtige Patterns: 10+ Failed-Logins in 5 min → Slack via Notifications.
- Retention-Strategie dokumentieren — was ist 365d, was 7y, warum?
Siehe auch: Error Codes, Users & Roles.