In der Okta Admin-Konsole, Berichte → Systemprotokoll ermöglicht Ihnen die Suche nach Ereignissen und das Herunterladen der Ergebnisse. Für JSON verwenden Sie die System Log API: GET /api/v1/logs mit seit und bis, wobei Sie dem nächsten Link folgen, bis er aufgebraucht ist. Ein kurzes Skript finden Sie unten. Okta speichert Systemprotokollereignisse für 90 Tage.
Wenn Identität die Grenze ist, ist Okta’s System Log das Torprotokoll. Es zeichnet jede Anmeldung, jeden MFA-Push, jeden Faktor-Reset und jede Administratorrollenänderung auf. Prime Core hat 58 Erkennungsregeln für Okta-Daten, die 32 MITRE ATT&CK-Techniken zugeordnet sind. Darunter: Passwort-Spraying (T1110.003), MFA-Müdigkeit (T1621) und Angreifer, die sich in die MFA-Registrierung einmischen (T1556.006).
Bevor Sie anfangen
Aufbewahrung beträgt 90 Tage. Alles Ältere existiert nur dort, wo Sie Okta-Protokolle gestreamt oder weitergeleitet haben, wie z. B. ein SIEM.
Sie benötigen ein Token. Ein API-Token (Sicherheit → API → Tokens) übernimmt die Berechtigungen des Administrators, der es erstellt hat. Ein nur-lese Admin reicht für Protokolle. Für alles Automatisierte ist eine OAuth-Dienste-App mit dem okta.logs.read-Bereich die sauberere Wahl. So oder so ist das Token ein Anmeldeinformationen. Halten Sie es aus der Shell-Historie heraus und widerrufen Sie es, wenn Sie fertig sind.
Ratenbegrenzungen gelten. Der Protokoll-Endpunkt hat seine eigene Ratenbegrenzung. Große Fenster sind in Ordnung, nur nicht sofort.
Exportieren mit der Systemprotokoll-API
Dieses Python-Skript durchsucht ein Zeitfenster und schreibt ein Ereignis pro Zeile. Es benötigt Anfragen (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 # der nächste Link enthält bereits die Abfrage
Immer setzen bis. Ohne dies behandelt Okta die Anfrage als eine Live-Abfrage und gibt ständig einen nächsten Link zurück. Ihre Schleife würde für immer laufen und auf neue Ereignisse warten.
Um es einzugrenzen, fügen Sie einen Filter zu den Parametern hinzu, z. B. „filter“: ‚eventType eq „user.session.start“‚. Oder verwenden Sie „q“: „jane“ für eine Stichwortsuche.
Was zu suchen ist
| eventType | Warum es wichtig ist |
|---|---|
| user.session.start mit outcome.result: FAILURE | Fehlgeschlagene Anmeldungen; viele Benutzer aus einem IP-Bereich bedeutet Spraying |
| user.mfa.okta_verify.deny_push | Benutzer hat einen Push abgelehnt; ein Schwall davon ist fortschreitende MFA-Müdigkeit |
| user.mfa.factor.deactivate, user.mfa.factor.reset_all | Faktoren entfernt, oft direkt nach einem Social-Engineering-Anruf beim Helpdesk |
| user.account.privilege.grant | Administratorrolle gewährt |
| policy.rule.update, policy.lifecycle.update | Anmelde- oder MFA-Richtlinie geändert, möglicherweise geschwächt |
| system.api_token.create | Ein neues API-Token, eine leise Möglichkeit, den Zugang zu behalten |
Die Felder, die die Geschichte erzählen: actor.alternateId (wer), client.ipAddress und client.geographicalContext (von wo aus), outcome (was passiert ist) und debugContext.debugData (die Details).
Hochladen, bereinigen und überprüfen in LogTotal
- Hochladen. Öffnen logtotal.com und die .jsonl-Datei einfügen. [PROOF: Upload-Bildschirm, Größengrenze]
- Bereinigen. [PROOF: what gets masked: usernames and emails, IPs, device and session IDs]. Look it over before you continue.
- Prüfen. [PROOF: what the results screen shows]
Wenn es schief geht
| Symptom | Wahrscheinliche Ursache | Fix |
|---|---|---|
| 401 | Falsches oder widerrufenes Token oder ein fehlendes SSWS-Präfix | Überprüfen Sie das Header-Format; erstellen Sie ein neues Token |
| 403 | Der Token-Ersteller hat keine Rechte, Protokolle zu lesen | Verwenden Sie ein Token von einem Administrator mit Protokollzugriff |
| 429 | Rate Limit erreicht | Warten Sie auf die Zeit in X-Rate-Limit-Reset und fahren Sie dann fort |
| Das Skript wird nie fertig | Kein bis in der Abfrage | Bis setzen |
| Nichts älter als 90 Tage | Okta-Aufbewahrung | Prüfen Sie Ihr SIEM oder Ihr Ziel für das Log-Streaming |
FAQ
Kann ich nicht einfach die Admin-Konsole verwenden?
Für einen kurzen Blick auf ein kurzes Fenster, ja. Für alles, was Sie analysieren oder behalten möchten, bietet die API Ihnen vollständiges JSON mit jedem Feld.
Deckt dies auch Auth0 ab?
Nein. Diese Anleitung bezieht sich auf Okta Workforce Identity. Auth0 hat sein eigenes Protokollformat und API.