W konsoli administracyjnej Okta, Raporty → Dziennik systemowy pozwala wyszukiwać wydarzenia i pobierać wyniki. Dla JSON użyj API Dziennika Systemowego: GET /api/v1/logs z określeniem since i until, kontynuuj linkiem dalej, aż się wyczerpie. Poniżej krótki skrypt. Okta przechowuje wydarzenia Dziennika Systemowego przez 90 dni.
Kiedy tożsamość jest obwodem, Dziennik Systemowy Okta to log bramkowy. Rejestruje każde logowanie, każde pchnięcie MFA, każde zresetowanie czynnika i każdą zmianę roli administratora. Prime Core ma 58 reguł detekcji danych Okta, mapowanych na 32 techniki MITRE ATT&CK. Wśród nich: rozpylanie haseł (T1110.003), zmęczenie MFA (T1621) oraz ingerencja atakujących w rejestrację MFA (T1556.006).
Zanim zaczniesz
Zachowanie to 90 dni. Wszystko starsze istnieje tylko tam, gdzie strumieniujesz lub przesyłasz logi Okta, na przykład do SIEM.
Potrzebujesz tokenu. Token API (Bezpieczeństwo → API → Tokeny) dziedziczy uprawnienia administratora, który go stworzył. Wystarczy admin o ograniczonych uprawnieniach do odczytu logów. Do wszystkiego zautomatyzowanego lepszym wyborem jest aplikacja usługi OAuth z zakresem okta.logs.read. W każdym przypadku token jest poświadczeniem. Trzymaj go z dala od historii powłoki i odwołaj, gdy skończysz.
Obowiązują limity częstotliwości. Koniec punktu dostępu do logów ma własny limit częstotliwości. Duże okna są w porządku, ale nie natychmiastowe.
Eksport za pomocą API Dziennika Systemowego
Ten skrypt w Python przechodzi przez okno czasowe i zapisuje jedno wydarzenie na linię. Potrzebuje 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 # następny link już zawiera zapytanie
Zawsze ustaw until. Bez tego, Okta traktuje żądanie jako bieżącą ankietę i ciągle zwraca następny link. Twoja pętla trwałaby wiecznie, czekając na nowe wydarzenia.
Aby zawęzić zakres, dodaj filtr do params, na przykład „filter”: 'eventType eq „user.session.start”’. Lub użyj „q”: „jane” dla wyszukiwania po słowie kluczowym.
Czego szukać
| eventType | Dlaczego to ważne |
|---|---|
| user.session.start z outcome.result: FAILURE | Nieudane logowania; wielu użytkowników z jednego zakresu IP oznacza rozpylanie |
| user.mfa.okta_verify.deny_push | Użytkownik odrzucił pchnięcie; nagłe wzrosty to zmęczenie MFA w toku |
| user.mfa.factor.deactivate, user.mfa.factor.reset_all | Usunięto czynniki, często zaraz po wezwaniu socjotechnicznym do helpdesku |
| user.account.privilege.grant | Przyznano rolę administratora |
| policy.rule.update, policy.lifecycle.update | Zmieniono zasady logowania lub MFA, możliwie osłabione |
| system.api_token.create | Nowy token API, cichy sposób na utrzymanie dostępu |
Pola, które opowiadają historię: actor.alternateId (kto), client.ipAddress i client.geographicalContext (skąd), outcome (co się stało) i debugContext.debugData (szczegóły).
Prześlij, oczyść i sprawdź w LogTotal
- Prześlij. Otwórz logtotal.com i wrzuć plik .jsonl. [DOWÓD: ekran przesyłania, limit rozmiaru]
- Oczyść. [PROOF: what gets masked: usernames and emails, IPs, device and session IDs]. Look it over before you continue.
- Sprawdź. [PROOF: what the results screen shows]
Gdy coś pójdzie nie tak
| Objaw | Prawdopodobna przyczyna | Fix |
|---|---|---|
| 401 | Nieprawidłowy lub cofnięty token, lub brakujący prefiks SSWS | Sprawdź format nagłówka; utwórz nowy token |
| 403 | Twórca tokenu nie ma praw do odczytu logów | Użyj tokenu od administratora z dostępem do logów |
| 429 | Limit częstotliwości osiągnięty | Poczekaj na czas w X-Rate-Limit-Reset, następnie kontynuuj |
| Skrypt nigdy się nie kończy | Brak until w zapytaniu | Ustaw until |
| Nic starszego niż 90 dni | Przechowywanie Okta | Sprawdź swoje SIEM lub miejsce przekazywania logów |
FAQ
Czy nie mogę po prostu użyć konsoli administracyjnej?
Dla szybkiego przeglądu krótkiego okna, tak. Do wszystkiego, co chcesz analizować lub zachować, API daje pełne JSON z każdym polem.
Czy to obejmuje Auth0?
Nie. Ten przewodnik dotyczy tożsamości Okta Workforce. Auth0 ma własny format logów i API.