Winkelbeheer & operations
Auditlog
Onderzoek acties van medewerkers, klanten en het systeem met de append-only auditlog, filters, redactie, bewaartermijn en CSV-export.
Op deze pagina
Wat de auditlog vastlegt
De auditlog is het operationele en beveiligingsspoor van een winkel. Je gebruikt hem om na te gaan wie wat deed, via welk request en met welk resultaat. Het is geen debuglog en niet elke read-only paginaweergave wordt vastgelegd.
Open Admin → Auditlogboeken. De lijst, de detailpagina en de CSV-export vereisen allemaal de permissie audit.view. De schermen zijn Audit/Index en Audit/Show.
Velden van een regel
| Veld | Inhoud |
|---|---|
event_id |
Unieke UUID voor de regel |
created_at |
Tijdstip van de gebeurtenis |
actor_type, actor_id |
De medewerker, klant of het systeem dat de actie uitvoerde |
action |
Actienaam met punten, bijvoorbeeld billing.renewal_consolidated |
category |
auth, security, commerce, payment, refund, webhook, support, privacy, notification, admin of system |
severity |
info, warning of critical |
outcome |
success, failure, denied of pending |
subject_type, subject_id |
Het betrokken record, zoals een bestelling, betaling, klant of ticket |
properties |
Eventgegevens, na redactie |
before, after |
Optionele snapshots bij een wijziging, na redactie |
context |
Bron (http, console of system), route, methode, pad en locale |
request_id, correlation_id |
ID's die regels koppelen aan één request of één langere flow |
route, method, status_code, ip, user_agent |
HTTP-gegevens wanneer de actie uit een request kwam |
integrity_hash |
SHA-256 over de opgeslagen velden |
Als de aanroepende code ze niet meegeeft, leidt Agovena de categorie af uit het prefix van de actie en het resultaat uit de actienaam. De ernst volgt uit beide: een mislukte of geweigerde auth.*- of security.*-actie is critical, andere mislukkingen en weigeringen zijn warning, en acties in security, payment en refund zijn standaard warning. Zie AuditLogger.
Request- en correlation-ID
Agovena hergebruikt een binnenkomende X-Request-ID- of X-Correlation-ID-header, of maakt per request een UUID aan. Alle regels uit hetzelfde request delen die waarden. Code kan ook expliciet een correlation-ID meegeven om een checkout, webhook, job of supportzaak over meerdere requests te volgen.
Een incident onderzoeken
- Zoek op request-ID om alles te zien wat één HTTP-request heeft vastgelegd.
- Zoek op correlation-ID om een checkout, webhook of job over meerdere requests te volgen.
- Filter op objecttype en -ID voor de geschiedenis van één bestelling, betaling, klant of ticket.
- Beperk de lijst met categorie, ernst, resultaat, actor, actie, methode, IP en een periode.
- Open de regel voor properties, before- en after-snapshots, technische context en de integriteitscontrole.
- Exporteer de gefilterde set als CSV voor offline analyse of een supportdossier.
Het zoekveld doorzoekt ook event-ID's, actor- en object-ID's, IP-adressen en de geredigeerde eventgegevens. AuditLogQuery past de filters toe. De CSV-export gebruikt dezelfde filters en zet een apostrof voor cellen die met =, +, - of @ beginnen, zodat spreadsheetsoftware ze niet als formule uitvoert.
Redactie
Auditgegevens mogen nooit secrets bevatten. Voor opslag vervangt Agovena waarden door [REDACTED] wanneer de sleutel onder meer password, secret, token, authorization, cookie, api_key, private_key, connection_string, credential, card_number, pan, cvv, cvc, otp, recovery_code, email, phone, address, customer_name of full_name bevat. Dat geldt ook voor geneste waarden in properties, snapshots en context.
Waarden worden ook op inhoud gecontroleerd: bearer tokens, PEM private keys en sleutelpatronen zoals sk_, pk_, test_ en live_ gevolgd door een lange reeks worden geredigeerd. Niet-geheime identifiers zoals bestel-ID's, bedragen, valuta en providerreferenties blijven leesbaar.
Integriteit en bewaartermijn
Regels zijn append-only. Het AuditLog-model weigert wijzigen en verwijderen. De detailpagina berekent de SHA-256-hash opnieuw en toont Hash geldig als die overeenkomt. Elk ander resultaat verschijnt als Niet beschikbaar voor oude regel: dat geldt voor regels van vóór de uitgebreide auditmigratie, die geen hash hebben, maar ook voor een regel waarvan de hash niet meer klopt. Onderzoek dat label bij een recente regel. De hash gebruikt geen sleutel. Hij vangt onbedoelde of slordige wijzigingen op, geen bewuste wijziging door iemand met schrijfrechten op de database die de hash opnieuw berekent.
php artisan agovena:prune-logs draait dagelijks via de scheduler en verwijdert auditregels die ouder zijn dan AGOVENA_AUDIT_LOG_RETENTION dagen. De standaardwaarde is 365. Kies een bewaartermijn die past bij je wettelijke en operationele eisen, en neem de audittabel op in je back-ups als je oudere regels nodig hebt.