Audit log
Registro immutabile delle azioni nel tenant — eventi tracciati, struttura di un record, filtri, esportazione per ispezioni e conservazione.
L'audit log registra in modo immutabile chi ha fatto cosa, quando e da dove. È lo strumento di riferimento per le verifiche interne, le ispezioni e la gestione degli incidenti di sicurezza.
Prima di iniziare
- Permesso identity:audit:read per consultare il registro
- Ruolo Amministratore, Proprietario o Analista
- MFA attiva per l’esportazione dei record
Cosa viene registrato
| Evento | Codice |
|---|---|
| Accesso riuscito | identity.login.succeeded |
| Accesso fallito | identity.login.failed |
| Account bloccato per tentativi falliti | identity.account.locked |
| Disconnessione | identity.logout |
| MFA attivata o disattivata | identity.mfa.changed |
| MFA azzerata da un amministratore | identity.mfa.reset |
| Password modificata | identity.password.changed |
| Sessione revocata | identity.session.revoked |
| Evento | Codice |
|---|---|
| Invito creato, reinviato o revocato | identity.invitation.* |
| Utente creato, disattivato o riattivato | identity.user.* |
| Ruolo di un utente modificato | identity.user.role_changed |
| Ruolo creato, modificato o eliminato | identity.role.* |
| Proprietà del tenant trasferita | identity.tenant.ownership_transferred |
| Chiave API creata, sospesa o revocata | identity.apikey.* |
| Evento | Codice |
|---|---|
| Progetto creato o modificato | console.project.* |
| Modello AI o prompt modificato | console.model.updated |
| Widget pubblicato o ritirato | console.widget.* |
| Flusso conversazionale modificato | console.flow.updated |
| Strumento esterno aggiunto o rimosso | console.tool.* |
| Webhook creato, modificato o eliminato | console.webhook.* |
| Fonte della knowledge base aggiunta o rimossa | console.knowledge.* |
| Politiche di conservazione modificate | console.retention.updated |
| Evento | Codice |
|---|---|
| Scheda cliente consultata | console.customer.viewed |
| Scheda cliente modificata o eliminata | console.customer.* |
| Esportazione di dati personali | console.export.performed |
| Trascrizione di sessione esportata | console.session.exported |
| Sessione eliminata o anonimizzata | console.session.* |
| Documento consultato, riclassificato o eliminato | console.document.* |
| Richiesta dell'interessato evasa | console.gdpr.request_fulfilled |
| Evento | Codice |
|---|---|
| Piano modificato | billing.subscription.changed |
| Metodo di pagamento aggiunto o rimosso | billing.payment_method.* |
| Dati di fatturazione modificati | billing.profile.updated |
| Servizio sospeso o riattivato | billing.service.* |
| Disdetta richiesta | billing.subscription.cancelled |
Ogni richiesta autenticata con chiave API o JWT che modifica dati genera un record con metodo HTTP, percorso, codice di stato e identificativo della chiave usata (solo il prefisso). Le richieste di sola lettura sono registrate in forma aggregata, salvo che riguardino dati personali.
Struttura di un record
{
"id": "aud_01J9F3K2M7Q4X8Z0",
"timestamp": "2026-09-03T14:27:11.482Z",
"tenant": {
"id": "tnt_7c2a91",
"slug": "acme-srl"
},
"actor": {
"type": "user",
"id": "usr_4b8e21",
"email": "mario.rossi@acme.it",
"displayName": "Mario Rossi",
"role": "Amministratore"
},
"action": "identity.user.role_changed",
"outcome": "success",
"resource": {
"type": "user",
"id": "usr_9d1f07",
"label": "giulia.bianchi@acme.it"
},
"changes": {
"role": { "from": "Operatore", "to": "Responsabile" }
},
"context": {
"ip": "93.184.216.34",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Safari/605.1.15",
"geo": "Roma, IT",
"channel": "console"
},
"traceId": "trc_5e7a1c9b4f2d8a30"
}Campi del record
| Parametro | Tipo | Obblig. | Default | Descrizione |
|---|---|---|---|---|
id | string | Sì | — | Identificativo univoco e immutabile del record. |
timestamp | string | Sì | — | Data e ora dell’evento in UTC, formato ISO 8601 con millisecondi. |
tenant | oggetto | Sì | — | Identificativo e slug del tenant in cui è avvenuto l’evento. |
actor | oggetto | Sì | — | Chi ha eseguito l’azione: utente, utente di servizio o sistema. Include email, nome e ruolo al momento dell’evento. |
action | string | Sì | — | Codice dell’azione nel formato servizio.risorsa.evento. |
outcome | enum | Sì | — | Esito dell’operazione: success, failure oppure denied. |
resource | oggetto | No | — | Oggetto dell’azione con tipo, identificativo ed etichetta leggibile. |
changes | oggetto | No | — | Valori precedenti e successivi dei campi modificati. I dati sensibili sono mascherati. |
context.ip | string | No | — | Indirizzo IP di origine della richiesta. |
context.userAgent | string | No | — | User agent del client che ha effettuato la richiesta. |
context.channel | enum | No | — | Superficie di origine: console, api, worker, system. |
traceId | string | No | — | Identificativo di correlazione da fornire al supporto per l’analisi tecnica. |
Esempio di traceId
trc_5e7a1c9b4f2d8a30Includilo sempre nelle segnalazioni al supporto: permette di correlare il record con i log applicativi.
Dati mascherati
Password, token, chiavi API e segreti non compaiono mai nell'audit log, nemmeno nel campo
changes. I valori sensibili sono sostituiti da un segnaposto.
Filtri e ricerca
| Filtro | Valori |
|---|---|
| Intervallo temporale | Ultime 24 ore, 7 giorni, 30 giorni, personalizzato |
| Attore | Utente, utente di servizio oppure Sistema |
| Tipo di attore | user, service_account, system |
| Azione | Selezione singola o per categoria, ad esempio tutti gli eventi identity.* |
| Risorsa | Tipo e identificativo dell'oggetto interessato |
| Esito | Riuscito, Fallito, Negato |
| Indirizzo IP | Indirizzo esatto o rete CIDR |
| Canale | console, api, worker, system |
| traceId | Ricerca puntuale per correlazione |
Individua l'evento
Restringi prima l'intervallo temporale, poi aggiungi il filtro sull'azione. La ricerca su periodi ampi senza filtri restituisce troppi risultati per essere utile.
Apri il dettaglio
Fai clic sulla riga per vedere il record completo, incluse le modifiche campo per campo e il contesto tecnico.
Correla gli eventi
Dal dettaglio usa Eventi correlati per vedere tutti i record con lo stesso traceId o dello
stesso attore nella stessa finestra temporale.
Indagini efficaci
Per ricostruire un incidente parti sempre dall'attore e non dall'azione: filtra per utente sull'intervallo sospetto e leggi la sequenza completa. Il contesto delle azioni adiacenti è spesso più informativo del singolo evento.
Immutabilità
I record di audit sono scritti una sola volta e mai modificabili. Non esiste alcuna funzione, in interfaccia o via API, per alterarli o eliminarli selettivamente, nemmeno per il Proprietario del tenant o per il personale Blu Pantheon.
| Garanzia | Attuazione |
|---|---|
| Sola aggiunta | Scrittura su archivio append-only, nessuna operazione di aggiornamento o cancellazione |
| Integrità | Ogni record include un digest crittografico concatenato al precedente |
| Verificabilità | Il controllo della catena è eseguito quotidianamente e in fase di esportazione |
| Separazione | L'archivio è isolato dai database operativi del tenant |
Audit log e diritto alla cancellazione
I record di audit non vengono cancellati in risposta a una richiesta di cancellazione dell'interessato: la loro conservazione risponde all'obbligo di tracciabilità e alla difesa in giudizio. Contengono i soli dati identificativi necessari. Vedi Conformità.
Esportazione per ispezioni
Definisci il perimetro
Applica i filtri corrispondenti alla richiesta ricevuta: intervallo, attori e categorie di azione. Un perimetro ampio rallenta la verifica e amplia inutilmente i dati comunicati.
Scegli il formato
CSV per l'analisi in foglio di calcolo, JSON Lines per l'importazione in un SIEM, PDF firmato per la produzione documentale in sede di ispezione.
Conferma con riautenticazione
L'esportazione dell'audit log richiede password e codice MFA. L'operazione stessa genera un
record console.export.performed.
Verifica l'integrità
Il pacchetto include un file manifest.json con il numero di record, l'intervallo coperto e il
digest della catena. Confrontalo con quanto mostrato in Console al momento dell'esportazione.
/identity/v1/audit-logsBearer JWTRecupera i record di audit con paginazione a cursore. Parametri supportati: from, to,
actorId, action, outcome, traceId. Richiede identity:audit:read.
Conservazione
| Piano | Consultazione in Console | Archivio esportabile |
|---|---|---|
| Starter | 6 mesi | 12 mesi |
| Business | 24 mesi | 36 mesi |
| Enterprise | Secondo contratto, fino a 10 anni | Secondo contratto |
I record oltre la finestra di consultazione restano recuperabili su richiesta al supporto entro i limiti dell'archivio del piano. Per esigenze di conservazione a lungo termine imposta un'esportazione periodica verso il tuo sistema di archiviazione.
Chi può consultare l'audit log
| Ruolo | Consultazione | Esportazione |
|---|---|---|
| Proprietario | Sì | Sì |
| Amministratore | Sì | Sì |
| Analista | Sì | No |
| Responsabile | No | No |
| Operatore | No | No |
| Sola lettura | No | No |
Puoi concedere l'accesso al solo audit log tramite un ruolo personalizzato con il permesso
identity:audit:read, utile per revisori interni e organismi di vigilanza. Vedi
Ruoli e permessi.