Log Streaming
Auris registra log di audit per ogni evento significativo nel tuo tenant: login, modifiche utente, assegnazioni di ruoli, controlli dei permessi, chiamate API e azioni amministrative. Il log streaming ti permette di esportare questi eventi in tempo reale verso servizi esterni di logging e analisi, offrendoti una visione unificata dell’attività di autenticazione insieme ai log della tua applicazione.
Questa guida copre le destinazioni supportate, come configurare ciascuna, il formato dei log e come verificare la consegna.
Perché il Log Streaming
Mentre la Console Auris fornisce un visualizzatore di log di audit integrato con ricerca e filtri, le organizzazioni spesso hanno bisogno di:
- Centralizzare i log su tutti i sistemi (applicazione, infrastruttura, autenticazione) in un unico SIEM
- Conservare i log oltre il periodo di conservazione predefinito (Auris conserva i log per 90 giorni di default)
- Creare dashboard e alert personalizzati basati sugli eventi di autenticazione
- Soddisfare requisiti di conformità (SOC 2, HIPAA, GDPR) che richiedono l’esportazione dei log verso un sistema di archiviazione controllato
- Correlare gli eventi di autenticazione con gli eventi dell’applicazione per le indagini sugli incidenti
Il log streaming invia gli eventi non appena si verificano con latenza minima (tipicamente inferiore a 5 secondi).
Destinazioni Supportate
Auris supporta quattro tipi di destinazione per il log streaming:
| Destinazione | Trasporto | Autenticazione | Ideale per |
|---|---|---|---|
| Webhook | HTTPS POST | Firma HMAC-SHA256 | Integrazioni personalizzate, Elasticsearch, SIEM self-hosted |
| Amazon S3 | AWS S3 API | Access key + Secret key | Archiviazione a lungo termine, conformità, data lake |
| Datadog | Datadog Log API | API key | Monitoraggio e alert in tempo reale |
| Splunk | HTTP Event Collector (HEC) | Token HEC | SIEM enterprise e analisi di sicurezza |
Formato dei Log
Tutti i log condividono lo stesso schema JSON indipendentemente dalla destinazione:
{
"id": "log_abc123def456",
"timestamp": "2026-01-15T10:30:00.000Z",
"type": "login.succeeded",
"severity": "info",
"actor": {
"id": "usr_xyz789",
"email": "[email protected]",
"type": "user"
},
"target": {
"id": "app_web123",
"type": "application",
"name": "Web App di Produzione"
},
"action": "login.succeeded",
"description": "L'utente ha effettuato il login con successo",
"metadata": {
"ipAddress": "203.0.113.42",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
"location": "Milano, Italia",
"authMethod": "password",
"mfaUsed": true,
"mfaMethod": "totp",
"sessionId": "sess_abc123"
},
"tenant": "tuo-tenant-id",
"source": "auris"
}Riferimento dei Campi
| Campo | Tipo | Descrizione |
|---|---|---|
id | string | Identificatore univoco dell’evento |
timestamp | ISO 8601 | Quando si è verificato l’evento |
type | string | Tipo evento (es. login.succeeded, user.created, role.assigned) |
severity | string | info, warn o error |
actor | object | Chi ha eseguito l’azione (utente, admin, sistema o client M2M) |
target | object | La risorsa interessata (utente, applicazione, ruolo, organizzazione) |
action | string | L’azione eseguita |
description | string | Descrizione leggibile |
metadata | object | Contesto aggiuntivo (IP, user agent, posizione, parametri specifici) |
tenant | string | L’ID del tenant |
source | string | Sempre auris |
Configurazione della Destinazione Webhook
La destinazione Webhook invia i log come richieste HTTPS POST al tuo endpoint, firmate con HMAC-SHA256 per la verifica.
Configurazione
- Vai su Console poi Impostazioni poi Log Streaming
- Clicca Aggiungi Stream
- Seleziona Webhook come tipo di destinazione
- Inserisci la configurazione:
| Campo | Obbligatorio | Descrizione |
|---|---|---|
| Nome | Sì | Un nome descrittivo per questo stream |
| URL | Sì | L’URL del tuo endpoint HTTPS |
| Eventi | No | Filtra quali tipi di evento trasmettere (vuoto = tutti gli eventi) |
- Clicca Crea
Auris genera un segreto di firma per il webhook. Il formato della richiesta è:
POST /tuo-endpoint-log HTTP/1.1
Host: api.tuazienda.com
Content-Type: application/json
X-Webhook-Signature: <hmac-sha256-hex>
X-Webhook-Timestamp: <unix-seconds>
{
"events": [
{ "id": "log_abc123", "type": "login.succeeded", ... },
{ "id": "log_def456", "type": "user.updated", ... }
]
}Gli eventi vengono raggruppati (fino a 100 per richiesta) e consegnati in pochi secondi. Usa la stessa logica di verifica della firma descritta nella guida Webhook.
Esempio di Receiver
import express from 'express'
import crypto from 'crypto'
const app = express()
app.post(
'/logs/auris',
express.raw({ type: 'application/json' }),
(req, res) => {
const signature = req.headers['x-webhook-signature'] as string
const timestamp = req.headers['x-webhook-timestamp'] as string
const secret = process.env.AURIS_LOG_STREAM_SECRET!
// Verifica firma
const payload = `${timestamp}.${req.body.toString()}`
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex')
if (
!crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
)
) {
return res.status(401).send('Firma non valida')
}
const { events } = JSON.parse(req.body.toString())
for (const event of events) {
console.log(`[${event.severity}] ${event.type}: ${event.description}`)
}
res.status(200).json({ received: events.length })
}
)Configurazione della Destinazione Amazon S3
La destinazione S3 scrive i log come file JSON in un bucket S3. I file sono organizzati per data e raggruppati per un’archiviazione efficiente.
Configurazione
- Vai su Console poi Impostazioni poi Log Streaming
- Clicca Aggiungi Stream
- Seleziona Amazon S3 come tipo di destinazione
- Inserisci la configurazione:
| Campo | Obbligatorio | Descrizione |
|---|---|---|
| Nome | Sì | Un nome descrittivo per questo stream |
| Bucket | Sì | Nome del bucket S3 (es. my-company-auris-logs) |
| Regione | Sì | Regione AWS (es. eu-west-1) |
| Access Key ID | Sì | Access key IAM AWS con permesso s3:PutObject |
| Secret Access Key | Sì | Secret key corrispondente |
| Prefisso | No | Prefisso della chiave oggetto (es. auris/production/) |
| Eventi | No | Filtra quali tipi di evento trasmettere |
- Clicca Crea
Struttura degli Oggetti S3
I file di log vengono scritti con il seguente pattern di chiave:
{prefisso}yyyy/MM/dd/HH/auris-logs-{timestamp}-{uuid}.jsonOgni file contiene un array JSON di log:
[
{ "id": "log_abc123", "type": "login.succeeded", "timestamp": "..." },
{ "id": "log_def456", "type": "user.created", "timestamp": "..." }
]Policy IAM Richiesta
Crea un utente o ruolo IAM con la seguente policy minima:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::my-company-auris-logs/auris/*"
}
]
}Segui il principio del minimo privilegio. Concedi solo il permesso PutObject sul prefisso specifico che Auris utilizzerà. Non concedere s3:* o accesso all’intero bucket.
Configurazione della Destinazione Datadog
La destinazione Datadog invia i log all’API Logs di Datadog, dove appaiono nel Log Explorer e possono essere usati in monitor, dashboard e alert.
Configurazione
- Vai su Console poi Impostazioni poi Log Streaming
- Clicca Aggiungi Stream
- Seleziona Datadog come tipo di destinazione
- Inserisci la configurazione:
| Campo | Obbligatorio | Descrizione |
|---|---|---|
| Nome | Sì | Un nome descrittivo per questo stream |
| API Key | Sì | API key Datadog (da Organization Settings) |
| Site | Sì | Il tuo sito Datadog: datadoghq.com (US), datadoghq.eu (EU), ecc. |
| Tag Sorgente | No | Tag source per il filtraggio in Datadog (default: auris) |
| Eventi | No | Filtra quali tipi di evento trasmettere |
- Clicca Crea
Creazione di Monitor Datadog
Dopo che il log streaming è attivo, crea monitor in Datadog per alert sugli eventi critici:
Picco di login falliti:
logs("source:auris @auris.event_type:login.failed").index("main").rollup("count").last("5m") > 50Blocco account:
logs("source:auris @auris.event_type:user.blocked").index("main").rollup("count").last("1h") > 5Login sospetto rilevato:
logs("source:auris @auris.event_type:login.suspicious").index("main").rollup("count").last("15m") > 0Configurazione della Destinazione Splunk
La destinazione Splunk invia i log a un endpoint Splunk HTTP Event Collector (HEC).
Prerequisiti
- Abilita HTTP Event Collector in Splunk (Impostazioni > Input dati > HTTP Event Collector)
- Crea un nuovo token HEC
- Annota l’URL HEC e il token
Configurazione
- Vai su Console poi Impostazioni poi Log Streaming
- Clicca Aggiungi Stream
- Seleziona Splunk come tipo di destinazione
- Inserisci la configurazione:
| Campo | Obbligatorio | Descrizione |
|---|---|---|
| Nome | Sì | Un nome descrittivo per questo stream |
| URL HEC | Sì | Endpoint Splunk HEC (es. https://splunk.tuazienda.com:8088) |
| Token | Sì | Token HEC |
| Index | No | Index Splunk di destinazione |
| Eventi | No | Filtra quali tipi di evento trasmettere |
- Clicca Crea
Esempi di Ricerca Splunk
Dopo l’ingestione, cerca gli eventi Auris con SPL:
# Tutti i fallimenti di autenticazione nell'ultima ora
sourcetype="auris:audit" type="login.failed" earliest=-1h
# Conteggio login per paese
sourcetype="auris:audit" type="login.succeeded"
| spath path=metadata.location
| stats count by metadata.location
# Rilevare viaggi impossibili
sourcetype="auris:audit" type="login.suspicious"
| where metadata.reason="impossible_travel"Filtraggio degli Eventi
Di default, uno stream riceve tutti gli eventi di audit. Puoi filtrare per tipo di evento al momento della creazione o dell’aggiornamento di uno stream.
Categorie di Eventi Disponibili
| Categoria | Esempi di eventi |
|---|---|
| Autenticazione | login.succeeded, login.failed, login.mfa_required, login.suspicious |
| Ciclo di vita utente | user.created, user.updated, user.deleted, user.blocked |
| Password | user.password_changed, user.password_reset_requested |
| Ruoli e permessi | role.created, role.assigned, permission.changed |
| Organizzazione | organization.created, organization.member_added, organization.invitation_sent |
| Applicazione | application.created, application.secret_rotated |
| Sessione | session.created, session.revoked |
| Admin | admin.settings_changed, admin.user_impersonated |
Esempio: Stream solo degli eventi di autenticazione e sicurezza:
curl -X POST https://auth.tuodominio.com/api/log-streams \
-H "Authorization: Bearer $AURIS_ACCESS_TOKEN" \
-H "x-tenant: tuo-tenant-id" \
-H "Content-Type: application/json" \
-d '{
"name": "Eventi di sicurezza su Datadog",
"type": "DATADOG",
"config": {
"apiKey": "dd-api-key-qui",
"site": "datadoghq.eu",
"sourceTag": "auris"
},
"events": [
"login.failed",
"login.suspicious",
"user.blocked",
"user.unblocked",
"user.password_changed",
"session.revoked",
"role.assigned",
"role.unassigned"
]
}'Verifica della Consegna
Dopo aver creato uno stream, verifica che funzioni:
Verifica nella Console
- Vai su Impostazioni poi Log Streaming
- Clicca sul tuo stream per visualizzarne i dettagli
- L’indicatore Stato mostra se le consegne recenti hanno avuto successo
- Il timestamp Ultima Consegna mostra quando è stato inviato l’ultimo batch
Attivare un Evento di Test
Genera un evento di test eseguendo un’azione nella Console (es. crea un utente di test e poi eliminalo). Entro pochi secondi, l’evento dovrebbe apparire nella tua destinazione.
Controllare i Fallimenti di Consegna
Se le consegne falliscono, la pagina dei dettagli dello stream mostra:
- Messaggio di errore — Il codice di stato HTTP o l’errore restituito dalla destinazione
- Fallimenti consecutivi — Quante consegne sono fallite di fila
- Ultima consegna riuscita — Quando lo stream ha funzionato l’ultima volta
Se uno stream accumula troppi fallimenti consecutivi, Auris lo mette in pausa automaticamente e notifica gli amministratori del tenant. Correggi il problema sottostante (credenziali, rete, disponibilità dell’endpoint) e riabilita lo stream dalla Console.
Risoluzione dei Problemi
Webhook: Errori 401 o 403
- Verifica che il segreto di firma corrisponda tra Auris e il tuo endpoint
- Assicurati che il tuo endpoint non richieda header di autenticazione aggiuntivi
- Controlla che l’orologio del server sia sincronizzato (NTP) — la verifica del timestamp fallisce se gli orologi differiscono di più di 5 minuti
S3: Accesso Negato
- Verifica che l’access key e la secret key IAM siano corretti
- Assicurati che la policy IAM conceda
s3:PutObjectsul bucket e prefisso corretti - Controlla che il bucket S3 esista nella regione specificata
Datadog: Eventi Non Visibili
- Verifica che l’API key sia valida
- Assicurati di aver selezionato il sito Datadog corretto (US, EU, US3, US5)
- Controlla nella configurazione dei Log di Datadog eventuali pipeline di elaborazione che potrebbero eliminare gli eventi
Splunk: Connessione Rifiutata
- Verifica che l’URL HEC sia corretto e includa la porta (tipicamente 8088)
- Assicurati che HEC sia abilitato in Splunk (Impostazioni > Input dati > HTTP Event Collector > Impostazioni globali)
- Verifica che il token HEC sia valido e abbia i permessi corretti sull’index
- Controlla i certificati SSL se usi HTTPS — Auris richiede un certificato valido
Guide Correlate
- Configurazione Webhook — Notifiche di eventi in tempo reale alla tua applicazione
- Protezione dagli Attacchi — Capire gli eventi generati dalla pipeline di sicurezza
- Gestione delle Sessioni — Eventi di sessione nel log di audit