Oktaシステムログをエクスポートする方法

Oktaシステムログをエクスポートする方法

SOC Prime Team
SOC Prime Team linkedin icon フォローする

Okta管理コンソールで、 レポート → システムログ を使用してイベントを検索し、結果をダウンロードします。JSONの場合、システムログAPIを使用します:GET /api/v1/logs とsinceおよびuntilを指定し、リンクが尽きるまでnextを追跡します。以下に短いスクリプトがあります。Oktaはシステムログのイベントを90日間保持します。

アイデンティティが境界である場合、Oktaのシステムログはゲートログです。すべてのサインイン、全てのMFAプッシュ、すべてのファクターリセット、およびすべての管理者ロールの変更を記録します。プライムコアには58個のOktaデータ用検出ルールがあり、32のMITRE ATT&CKテクニックにマッピングされています。その中には、パスワードスプレー(T1110.003)、MFAファティーグ(T1621)、MFA登録に対する攻撃者の妨害(T1556.006)があります。

無料で始める

開始する前に

保持期間は90日です。 それより古いものは、SIEMなどでOktaログをストリーミングまたは転送している場所にしか存在しません。

トークンが必要です。 APIトークン(セキュリティ → API → トークン)は、それを作成した管理者の権限を継承します。ログには読み取り専用の管理者で十分です。自動化されたものには、okta.logs.readスコープのOAuthサービスアプリの方がきれいです。どちらにしても、トークンは資格情報です。シェル履歴に残すことなく使用後に無効化してください。

レート制限が適用されます。 ログエンドポイントには独自のレート制限があります。大きなウィンドウは問題ありませんが、一瞬である必要はありません。

システムログAPIでエクスポート

このPythonスクリプトは期間を通してページングし、1行ごとにイベントを書き込みます。リクエストが必要です(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はリクエストをライブポーリングとして扱い、次のリンクを繰り返し返します。ループは新しいイベントを待ちながら永久に実行されます。

絞り込むには、たとえば “filter”: ‘eventType eq “user.session.start”‘ のようにparamsにフィルタを追加します。あるいはキーワード検索用に “q”: “jane” を使用します。

何を探すべきか

eventTypeなぜそれが重要か
user.session.start with outcome.result: FAILURE失敗したサインイン;多くのユーザーが一つのIP範囲からのアクセスならスプレーを意味する
user.mfa.okta_verify.deny_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があります。

SOC PrimeのDetection as Codeプラットフォームに参加し ビジネスに最も関連性のある脅威に対する可視性を向上させましょう。開始して即座に価値をもたらすためには、今すぐSOC Primeの専門家とのミーティングを予約してください。