Jak eksportować dzienniki systemowe Okta

Jak eksportować dzienniki systemowe Okta

SOC Prime Team
SOC Prime Team linkedin icon Śledź

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).

Rozpocznij za darmo

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ć

eventTypeDlaczego to ważne
user.session.start z outcome.result: FAILURENieudane logowania; wielu użytkowników z jednego zakresu IP oznacza rozpylanie
user.mfa.okta_verify.deny_pushUżytkownik odrzucił pchnięcie; nagłe wzrosty to zmęczenie MFA w toku
user.mfa.factor.deactivate, user.mfa.factor.reset_allUsunięto czynniki, często zaraz po wezwaniu socjotechnicznym do helpdesku
user.account.privilege.grantPrzyznano rolę administratora
policy.rule.update, policy.lifecycle.updateZmieniono zasady logowania lub MFA, możliwie osłabione
system.api_token.createNowy 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

  1. Prześlij. Otwórz logtotal.com i wrzuć plik .jsonl. [DOWÓD: ekran przesyłania, limit rozmiaru]
  2. Oczyść. [PROOF: what gets masked: usernames and emails, IPs, device and session IDs]. Look it over before you continue.
  3. Sprawdź. [PROOF: what the results screen shows]

Gdy coś pójdzie nie tak

ObjawPrawdopodobna przyczynaFix
401Nieprawidłowy lub cofnięty token, lub brakujący prefiks SSWSSprawdź format nagłówka; utwórz nowy token
403Twórca tokenu nie ma praw do odczytu logówUżyj tokenu od administratora z dostępem do logów
429Limit częstotliwości osiągniętyPoczekaj na czas w X-Rate-Limit-Reset, następnie kontynuuj
Skrypt nigdy się nie kończyBrak until w zapytaniuUstaw until
Nic starszego niż 90 dniPrzechowywanie OktaSprawdź 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.

Dołącz do platformy Detection as Code firmy SOC Prime aby zwiększyć widoczność zagrożeń najbardziej istotnych dla Twojego biznesu. Aby pomóc Ci rozpocząć i natychmiast uzyskać wartość, umów się teraz na spotkanie z ekspertami SOC Prime.