Nel pannello di amministrazione di Okta, Report → Registro del sistema consente di cercare eventi e scaricare i risultati. Per JSON, utilizzare l’API del Registro del sistema: GET /api/v1/logs con since e until, seguendo il collegamento successivo finché non si esaurisce. Uno script breve è mostrato di seguito. Okta conserva gli eventi del Registro del sistema per 90 giorni.
Quando l’identità è il perimetro, il Registro del sistema di Okta è il registro di accesso. Registra ogni accesso, ogni push MFA, ogni reset dei fattori e ogni cambio di ruolo amministrativo. Prime Core ha 58 regole di rilevamento per i dati di Okta, mappate su 32 tecniche MITRE ATT&CK. Tra queste: password spraying (T1110.003), affaticamento MFA (T1621) e manomissioni da parte degli attaccanti con l’iscrizione MFA (T1556.006).
Prima di iniziare
La conservazione è di 90 giorni. Qualunque cosa più vecchia esiste solo dove si è stati instradando o inoltrando i log di Okta, come un SIEM.
È necessario un token. Un token API (Sicurezza → API → Token) eredita i permessi dell’amministratore che lo ha creato. Un amministratore in sola lettura è sufficiente per i log. Per qualsiasi cosa automatizzata, un’app di servizio OAuth con l’ambito okta.logs.read è la scelta più pulita. In ogni caso, il token è una credenziale. Mantenerlo fuori dalla cronologia della shell e revocarlo quando si è finito.
Si applicano i limiti di frequenza. Il punto finale dei log ha il proprio limite di frequenza. Finestre grandi sono accettabili, ma non istantaneamente.
Esporta con l’API del Registro del sistema
Questo script Python scorre una finestra temporale e scrive un evento per linea. Ha bisogno di requests (pip install requests):
import json, os, requests
org = "https://yourorg.okta.com"
headers = {"Authorization": f"SSWS {os.environ['OKTA_TOKEN']}", "Accept": "application/json"}
url = f"{org}/api/v1/logs"
params = {"since": "2026-10-19T00:00:00Z", "until": "2026-10-20T00:00:00Z", "limit": 1000}
with open("okta_1019.jsonl", "w") as out:
while url:
r = requests.get(url, headers=headers, params=params, timeout=60)
r.raise_for_status()
events = r.json()
for e in events:
out.write(json.dumps(e) + "n")
if not events:
break
url = r.links.get("next", {}).get("url")
params = None # il collegamento successivo porta già la query
Imposta sempre until. Senza di esso, Okta tratta la richiesta come un sondaggio live e continua a fornire un collegamento successivo. Il tuo ciclo andrebbe avanti all’infinito, in attesa di nuovi eventi.
Per restringere il campo, aggiungi un filtro ai parametri, ad esempio “filter”: ‘eventType eq “user.session.start”‘. Oppure usa “q”: “jane” per una ricerca per parola chiave.
Cosa cercare
| eventType | Perché è importante |
|---|---|
| user.session.start con outcome.result: FAILURE | Accessi falliti; molti utenti da un intervallo IP significa spraying |
| user.mfa.okta_verify.deny_push | Utente che ha rifiutato un push; un’esplosione di questi è l’affaticamento MFA in corso |
| user.mfa.factor.deactivate, user.mfa.factor.reset_all | Fattori rimossi, spesso subito dopo una chiamata di ingegneria sociale all’helpdesk |
| user.account.privilege.grant | Ruolo amministrativo concesso |
| policy.rule.update, policy.lifecycle.update | Modificata la policy di accesso o MFA, possibilmente indebolita |
| system.api_token.create | Un nuovo token API, un modo silenzioso per mantenere l’accesso |
I campi che raccontano la storia: actor.alternateId (chi), client.ipAddress e client.geographicalContext (da dove), outcome (cosa è successo), e debugContext.debugData (i dettagli).
Carica, sanitizza e rivedi in LogTotal
- Carica. Apri logtotal.com e carica il file .jsonl. [PROVA: schermo di caricamento, limite di dimensione]
- Sanitizza. [PROOF: what gets masked: usernames and emails, IPs, device and session IDs]. Look it over before you continue.
- Rivedi. [PROOF: what the results screen shows]
Quando qualcosa va storto
| Sintomo | Causa probabile | Fix |
|---|---|---|
| 401 | Token errato o revocato, o prefisso SSWS mancante | Controllare il formato dell’intestazione; creare un nuovo token |
| 403 | Il creatore del token non ha i diritti per leggere i log | Usa un token da un amministratore con accesso ai log |
| 429 | Raggiunto il limite di frequenza | Attendere il tempo in X-Rate-Limit-Reset, quindi continuare |
| Lo script non termina mai | No until nella query | Imposta until |
| Niente più vecchio di 90 giorni | Conservazione Okta | Controlla il tuo SIEM o la destinazione dello streaming dei log |
FAQ
Non posso semplicemente usare il pannello di amministrazione?
Per uno sguardo rapido a una finestra temporale breve, sì. Per tutto ciò che si desidera analizzare o conservare, l’API fornisce il JSON completo con ogni campo.
Questo copre anche Auth0?
No. Questa guida riguarda l’Okta Workforce Identity. Auth0 ha il proprio formato di log e API.