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でアップロード、サニタイズ、レビュー
- アップロード。 開く logtotal.com と.jsonlファイルをドロップします。[証拠: アップロード画面、サイズ制限]
- サニタイズ。 [PROOF: what gets masked: usernames and emails, IPs, device and session IDs]. Look it over before you continue.
- レビュー。 [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があります。