Як експортувати системні журнали Okta

Як експортувати системні журнали Okta

SOC Prime Team
SOC Prime Team linkedin icon Стежити

У консолі адміністратора Okta, Звіти → Системний журнал дає вам можливість шукати події та завантажувати результати. Для формату JSON використовуйте API Системного журналу: GET /api/v1/logs з параметрами since і until, слідуючи за посиланням next, поки воно не закінчиться. Короткий сценарій наведено нижче. Okta зберігає події системного журналу протягом 90 днів.

Коли ідентичність є периметром, Системний журнал Okta – це журнал доступу. Він записує кожен вхід у систему, кожен push MFA, кожне скидання фактора і кожну зміну ролі адміністратора. Prime Core має 58 правил виявлення для даних Okta, які відповідають 32 технікам MITRE ATT&CK. Серед них: password spraying (T1110.003), втома MFA (T1621) і атаки, що порушують реєстрацію MFA (T1556.006).

Розпочніть безкоштовно

Перед початком

Збереження становить 90 днів. Все, що старше, існує лише там, де ви потокове передаєте або пересилаєте журнали Okta, наприклад, у SIEM.

Вам потрібен токен. Токен API (Безпека → API → Токени) успадковує дозволи адміністратора, який його створив. Для журналів вистачить адміністратора з правами лише на читання. Для автоматизації краще використовувати додаток сервісу OAuth з областю okta.logs.read. У будь-якому випадку, токен є обліковими даними. Тримайте його подалі від історії shell і відкликати, коли завершите.

Діють обмеження на швидкість. Кінцева точка журналів має власне обмеження на швидкість. Великі вікна допустимі, але не миттєво.

Експорт з API Системного журналу

Цей сценарій на Python обробляє часовий проміжок і записує одну подію в рядок. Він потребує 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 # the next link already carries the query

Завжди встановлюйте until. Без цього Okta розглядає запит як живе опитування і постійно повертає посилання next. Ваш цикл буде працювати вічно, очікуючи на нові події.

Для скорочення можна додати фільтр до параметрів, наприклад, “filter”: ‘eventType eq “user.session.start”‘. Або використовуйте “q”: “jane” для пошуку за ключовими словами.

Що шукати

eventTypeЧому це важливо
user.session.start with outcome.result: FAILUREНевдалі входи; багато користувачів з однієї IP області означає розпилення
user.mfa.okta_verify.deny_pushКористувач відхилив push; сплеск таких подій є прогресом втоми MFA
user.mfa.factor.deactivate, user.mfa.factor.reset_allФактори видалені, часто відразу після соціальної інженерії в колл-центрі
user.account.privilege.grantПризначено роль адміністратора
policy.rule.update, policy.lifecycle.updateЗмінена політика входу або MFA, можливо ослаблена
system.api_token.createНовий API токен, тихий спосіб зберегти доступ

Поля, які розповідають історію: actor.alternateId (хто), client.ipAddress та client.geographicalContext (звідки), outcome (що сталося), та debugContext.debugData (деталі).

Завантажте, санітайзуйте та перевірте в LogTotal

  1. Завантажити. Відкрити logtotal.com і завантажити файл .jsonl. [ДОВІДКА: екран завантаження, обмеження розміру]
  2. Санітайзування. [PROOF: what gets masked: usernames and emails, IPs, device and session IDs]. Look it over before you continue.
  3. Перегляд. [PROOF: what the results screen shows]

Коли все йде не так

СимптомМожлива причинаFix
401Неправильний або відкликаний токен, або відсутній префікс SSWSПеревірте формат заголовка; створіть новий токен
403Створювач токену не має прав на читання журналівВикористайте токен від адміністратора з доступом до журналів
429Досягнуто обмеження швидкостіДочекайтеся часу в X-Rate-Limit-Reset, потім продовжте
Сценарій ніколи не завершує роботуВ запиті відсутня untilВстановіть until
Немає даних старших за 90 днівЗбереження OktaПеревірте ваш SIEM або місце потоку логів

FAQ

Чи можу я просто використовувати Консоль адміністратора?

Для швидкого перегляду невеликого вікна, так. Для будь-чого, що ви хочете аналізувати або зберігати, API надає повний JSON з усіма полями.

Це покриває Auth0?

Ні. Цей посібник стосується Okta Workforce Identity. Auth0 має власний формат і API для журналів.

Приєднуйтесь до платформи Detection as Code від SOC Prime щоб покращити видимість загроз, найбільш актуальних для вашого бізнесу. Щоб допомогти вам розпочати та отримати негайну цінність, забронюйте зустріч зараз з експертами SOC Prime.