Vai al contenuto

Audit Log

Cosa Viene Registrato

Ogni azione sensibile viene registrata nella tabella audit_logs con:

Campo Contenuto
userId Chi ha eseguito l'azione (null per azioni di sistema)
action Cosa è stato fatto: LOGIN, AUTH_FAILURE, UPDATE, DELETE, ecc.
resource Su cosa: auth, users, finance, ecc.
details Dettagli JSON (sanitizzati — senza dati sensibili)
ipAddress Indirizzo IP del richiedente
userAgent Browser/client
createdAt Timestamp preciso

Due Modalità di Logging

Automatica — AuditInterceptor

AuditInterceptor è un interceptor NestJS che intercetta automaticamente ogni richiesta HTTP modificante (POST, PUT, PATCH, DELETE) e la registra senza che il developer debba fare nulla.

Manuale — AuditLogsService

AuditLogsService.logAction() viene chiamato esplicitamente nei punti critici:

  • Login riuscito
  • Login fallito (con notifica admin)
  • Impersonation
  • Cambio password
  • Operazioni di sistema

Sicurezza del Log

sanitizeDetails() pulisce i dettagli prima di salvarli — rimuove automaticamente campi come password, token, secret per evitare che finiscano nel log.

Gli userId non-UUID (azioni di sistema, processi batch) vengono salvati con userId: null per evitare errori di constraint del database.


Alert di Sicurezza Automatici

Ogni tentativo di login fallito genera:

  1. Una voce in audit_logs con action: AUTH_FAILURE
  2. Una notifica immediata a tutti gli admin via NotificationsService.notifyAdmins()

Questo avviene per due casi distinti: - Utente non trovato - Password errata

In entrambi i casi il messaggio all'utente è identico ("credenziali non valide") — anti-enumeration.