Okta System Log Security Monitoring: Detection Rules, SIEM Integration, and Threat Indicators

Retool's new app builder is where AI-generated code ships safely
Building apps with AI is easy. Getting them to production safely is another story.
Most Okta deployments forward System Log events to a SIEM but have few detection rules built on those events. The common gap: security teams know Okta is their identity platform but treat it as an authentication pass-through rather than a primary threat detection data source. Okta System Log events are uniquely positioned to detect the attacks that other telemetry sources miss: credential stuffing at scale, MFA fatigue attacks, session token theft, and admin account compromise: because Okta sees every authentication attempt before the application does.
Critical Okta Event Types for Threat Detection
The Okta System Log uses a structured event type taxonomy. These event types are the highest-priority for security monitoring.
Authentication failure patterns (user.authentication.auth_via_mfa, user.session.start)
user.authentication.auth_via_mfa with outcome.result = FAILURE: MFA challenge failed. Alert when a single user has more than 10 MFA failures in 5 minutes: this is the MFA fatigue attack signature, where an attacker who has the password sends repeated MFA push notifications hoping the user approves one. user.session.start with outcome.result = FAILURE: primary credential authentication failed. Alert on more than 20 failures from a single IP in 5 minutes (credential stuffing) or more than 5 failures for a single user across different IPs (distributed brute force).
MFA factor management events (user.mfa.factor.update, user.mfa.factor.suspend)
user.mfa.factor.update: an MFA factor was added, modified, or removed. Alert immediately on any MFA factor change for users who have not changed their MFA in the past 30 days: attackers who compromise an account via password reset often add a new MFA factor (their own authenticator app) to establish persistence. user.mfa.factor.suspend: a factor was suspended, typically by an admin. Alert on any factor suspension not initiated by the affected user: this is the pattern used before account takeover by a compromised Okta admin.
Session anomaly events (security.session.hijacking_detected)
Okta generates this event when a session token is presented from an IP or device fingerprint that differs significantly from where the session was created: the primary indicator of a pass-the-cookie attack (session token stolen from browser memory and used on attacker infrastructure). Alert on every instance of security.session.hijacking_detected: false positives are rare. Also alert on security.threat.detected events from Okta ThreatInsight, which flags known attack-associated IPs.
Admin and policy change events (policy.lifecycle.update, user.account.privilege.grant)
user.account.privilege.grant with target.type = AppUser and privilege = App Admin or Org Admin: an organizational admin was granted. Alert on any Okta administrator grant not initiated by an existing admin via a documented change process. policy.lifecycle.update: a security policy (MFA policy, password policy, sign-on policy) was modified. Alert on MFA policy changes (attackers who compromise an admin account disable MFA requirements) and network zone changes (attackers remove trusted network restrictions to enable login from attacker IPs).
Password reset and account recovery events (user.account.reset_password, system.email.mfa_enroll.sent)
Alert when a password reset is followed within 5 minutes by an MFA factor addition from a different IP: this sequence (password reset via email, new MFA enrollment) indicates an account takeover via email compromise. Alert on user.account.unlock events outside business hours: legitimate self-service unlocks happen throughout the day, but attacker-initiated unlocks often happen at 2-4 AM in the victim's time zone when the attacker expects less monitoring.
Okta Log Streaming: SIEM Integration
Okta's Log Streaming feature sends System Log events to your SIEM in near-real-time via AWS EventBridge or Splunk HTTP Event Collector (HEC). This is preferable to polling the /api/v1/logs endpoint.
Configure Okta Log Streaming to AWS EventBridge
In Okta Admin Console: Reports > Log Streaming > Add log stream > AWS EventBridge. Specify your AWS account ID and region. Okta creates a CloudWatch event bus in your account and sends System Log events as JSON. Configure a CloudWatch rule to forward events to your SIEM (Sentinel, Splunk, QRadar) via a Lambda function or direct connector. AWS EventBridge streaming has approximately 30-second event latency: acceptable for most security monitoring use cases.
Configure Log Streaming to Splunk HEC
In Okta Admin Console: Reports > Log Streaming > Add log stream > Splunk Cloud HTTP Event Collector. Provide your Splunk HEC endpoint URL and token. Events arrive in Splunk's okta:system:log sourcetype with full JSON payload. Verify the stream is active by checking the stream's Last Successful Send timestamp in Okta Admin > Log Streaming. Log streaming provides lower latency (5-15 seconds) than the polling API and does not require managing API rate limits.
Supplement streaming with Okta API polling for gap filling
Log streaming can have gaps during maintenance windows or connectivity issues. Implement a supplementary polling job that queries /api/v1/logs?since=[last_polled_timestamp] every 5 minutes and compares against streamed events. This gap-filling approach ensures no authentication events are lost during brief streaming interruptions. Okta retains 90 days of System Log events in the API: gaps of up to 90 days can be backfilled.
Briefings like this, every morning before 9am.
Threat intel, active CVEs, and campaign alerts, distilled for practitioners. 50,000+ subscribers. No noise.
Detection Rules: Credential and Session Attacks
These Sigma rules cover the primary attack patterns detectable from Okta System Log events. Adapt field names to your SIEM's Okta data normalization.
Detect MFA push fatigue attack pattern
title: Okta MFA Push Fatigue logsource: {product: okta, service: systemlog} detection: selection: eventType: user.authentication.auth_via_mfa outcome.result: FAILURE authenticationContext.credentialType: PUSH threshold: field: actor.alternateId count: 10 time: 5m condition: threshold falsepositive: Users with unreliable push connectivity This fires when a single user receives and fails 10+ MFA push notifications in 5 minutes: the MFA fatigue pattern.
Detect impossible travel authentication
Correlate user.session.start events by actor.alternateId: alert when two authentication events for the same user occur from geographically distant IPs within a time window that is physically impossible to travel between them. In Splunk: | iplocation client.ipAddress | stats list(Country) as countries, dc(Country) as country_count, min(_time) as first, max(_time) as last by actor.alternateId | where country_count > 1 AND (last - first) < 3600. Alert on sessions where two different countries appear within 1 hour.
Detect admin privilege grant by non-admin account
title: Okta Admin Grant from Unexpected Account detection: selection: eventType: user.account.privilege.grant filter: actor.alternateId|contains: [known-admin-accounts] condition: selection and not filter Alert on any Org Admin or Super Admin grant where the acting account is not in a pre-approved admin account list. Any admin grant by a non-admin account indicates either privilege escalation or a compromised admin account making unauthorized grants.
Okta ThreatInsight and Identity Threat Protection
Okta ThreatInsight uses Okta's cross-tenant threat intelligence to identify IP addresses associated with credential attacks. Identity Threat Protection (ITP) provides continuous session risk evaluation.
Enable Okta ThreatInsight in block mode
Security > ThreatInsight > set to Block and Add to Deny List. ThreatInsight blocks authentication attempts from IP addresses that Okta's threat intelligence network has associated with credential stuffing, account takeover tools, and bot activity across the entire Okta customer base. Start in Audit (log only) mode for 2-4 weeks to review false positive rate, then switch to Block mode. Review the ThreatInsight deny list quarterly to remove IPs that have been incorrectly flagged.
Configure Identity Threat Protection for high-risk session actions
Okta Identity Threat Protection (ITP) evaluates session risk continuously and can terminate sessions or require re-authentication when risk signals change (new device, impossible travel, IP reputation change, Okta AI risk score increase). Configure ITP policies: Security > Identity Threat Protection > Risk Level = High triggers: require re-authentication, restrict session to current IP, or terminate session. ITP requires Okta Identity Engine (OIE): verify your org is on OIE before configuring.
The bottom line
Okta System Log monitoring is the identity plane detection that network and endpoint tools miss. The three detections that find the most real attacks are: MFA push fatigue pattern (10+ failed push MFA events for one user in 5 minutes is near-certain MFA fatigue), admin privilege grants not made by pre-approved admin accounts (a compromised admin granting themselves persistence is a high-confidence indicator), and MFA factor addition followed within 5 minutes by a password reset from a different IP (the account takeover via email compromise sequence). Enable ThreatInsight in block mode after a 2-week audit calibration period, and set up log streaming to your SIEM before building the detection rules: you need continuous data before detections have meaning.
Frequently asked questions
What is the Okta System Log and how is it different from the Okta Audit Log?
The Okta System Log (accessible via Admin Console > Reports > System Log and the /api/v1/logs API) is the comprehensive event log for the entire Okta organization: it records all authentication events, authorization decisions, MFA challenges, administrative actions, and system events. The Okta Audit Log is an older, deprecated interface that showed a subset of events. The System Log is the authoritative data source and should be the integration point for SIEM ingestion. System Log events include detailed JSON payloads with: event type, actor identity, target objects, client context (IP, user agent, device), outcome (SUCCESS/FAILURE), and transaction ID for correlating related events.
How do I detect an Okta session token theft (pass-the-cookie) attack?
Session token theft (pass-the-cookie) involves stealing a valid browser session cookie and replaying it from attacker infrastructure, bypassing Okta's authentication entirely. Primary indicators in Okta System Log: (1) security.session.hijacking_detected: Okta's built-in detection that fires when session context changes dramatically (IP geolocation, device fingerprint); (2) user.session.start followed immediately by unusual application access from a new IP without a preceding user.authentication event: the attacker used the stolen cookie directly; (3) Two simultaneous sessions for the same user from geographically impossible locations. Okta's ITP (Identity Threat Protection) can terminate sessions automatically when risk signals indicate hijacking.
What is an MFA fatigue attack and how do I detect it in Okta?
MFA fatigue (also called MFA push bombing) is an attack where an adversary who has stolen a user's password sends repeated Okta MFA push notifications, hoping the user will approve one out of confusion or to stop the notifications. The Okta System Log shows this as rapid sequences of user.authentication.auth_via_mfa events with outcome.result = FAILURE and authenticationContext.credentialType = PUSH for the same user. Detection: alert when a single user accumulates 10 or more failed push MFA events within 5 minutes. Mitigation: configure Okta's MFA number challenge (Okta Verify) which requires users to enter a number displayed in the app into the push notification, preventing approval without the user actively seeing the login attempt.
How do I integrate Okta System Log with Microsoft Sentinel?
Two integration approaches: (1) Okta Log Streaming to AWS EventBridge + Lambda forwarding to Sentinel HTTP Data Collector API: provides near-real-time (30s) event delivery; (2) Microsoft Sentinel Okta Data Connector (Community connector in Sentinel Content Hub): queries the Okta /api/v1/logs API on a polling schedule (typically 5-minute intervals) using an Okta API token. The polling connector is simpler to configure and maintains its own query state. Use the Log Streaming approach for sub-minute detection latency requirements. The Okta data in Sentinel normalizes to the OktaSSO table and supports ASIM (Advanced Security Information Model) normalization for use with ASIM-based detection templates.
What Okta admin events should trigger immediate alerts?
Immediate alert conditions: (1) Org Admin or Super Admin role granted to any user: compare against an approved admin allowlist; (2) MFA policy modification (sign-on policy changed to not require MFA for any group); (3) Identity Provider configuration change (new IdP added or existing IdP modified: could redirect authentication to attacker-controlled IdP); (4) Network zone modification (trusted network expanded or removed: could remove geo-fencing controls); (5) API token creation (new API token could be used for automated data extraction); (6) Application sign-on policy modified to bypass MFA for any group; (7) User account unlocked outside business hours. These events represent the highest-risk configuration changes an attacker would make after compromising an Okta admin account.
What Okta events indicate a compromised service account or API integration?
Service account and API integration compromise indicators: (1) API token used from an IP outside the known service's egress IP range: especially if the service account's previous 30 days of activity shows consistent IPs; (2) user.authentication.sso events for a service account (service accounts should not do browser-based SSO: only API token or machine-to-machine flows); (3) Bulk API requests from an API token in the System Log's debugContext.debugData.requestUri that do not match the integration's normal API patterns (mass user enumeration, bulk group membership queries); (4) user.session.start for a service account that has never previously had interactive sessions. Service account Okta API tokens should have IP binding configured in Okta Admin > Security > API > Tokens: the token is only valid from the service's egress IPs.
How long does Okta retain System Log events and how do I access historical events?
Okta retains System Log events for 90 days by default in the /api/v1/logs API. Events older than 90 days are not accessible via the API. For compliance or investigation use cases requiring longer retention, forward all events to an external SIEM or data lake in real time via Log Streaming or polling: once forwarded, your SIEM's retention policies apply. To query historical events within the 90-day window via API: GET /api/v1/logs?since=2026-01-01T00:00:00.000Z&until=2026-01-31T23:59:59.000Z&limit=100&filter=eventType+eq+%22user.authentication.auth_via_mfa%22. The API returns events in chronological order with pagination via the next link header.
Sources & references
Free resources
Critical CVE Reference Card 2025–2026
25 actively exploited vulnerabilities with CVSS scores, exploit status, and patch availability. Print it, pin it, share it with your SOC team.
Ransomware Incident Response Playbook
Step-by-step 24-hour IR checklist covering detection, containment, eradication, and recovery. Built for SOC teams, IR leads, and CISOs.
Get threat intel before your inbox does.
50,000+ security professionals read Decryption Digest for early warnings on zero-days, ransomware, and nation-state campaigns. Free, daily, no spam.
Unsubscribe anytime. We never sell your data.

Founder & Cybersecurity Evangelist, Decryption Digest
Cybersecurity professional with expertise in threat intelligence, vulnerability research, and enterprise security. Covers zero-days, ransomware, and nation-state operations for 50,000+ security professionals every morning.
Win a $2,495 Black Hat pass.
Full-access to Black Hat USA 2026 in Las Vegas. Subscribe free to enter.
