Detection rules › Panther
Okta Admin Role Assigned
A user has been granted administrative privileges in Okta
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation | T1078 Valid Accounts |
Rules detecting the same action
Other rules on this platform that filter on the same API call or operation.
- High-Risk Admin Activity (Kusto)
- Okta Admin Access Granted (Panther)
- Okta Admin Role Assigned to an User or Group (Sigma)
- Okta User Assigned Administrator Role (Elastic)
Rule body yaml
AnalysisType: rule
Filename: okta_admin_role_assigned.py
RuleID: "Okta.AdminRoleAssigned"
DisplayName: "Okta Admin Role Assigned"
Enabled: true
LogTypes:
- Okta.SystemLog
Tags:
- Identity & Access Management
- Okta
- Privilege Escalation:Valid Accounts
Reports:
MITRE ATT&CK:
- TA0004:T1078
Severity: Info
Description: A user has been granted administrative privileges in Okta
Reference: https://help.okta.com/en/prod/Content/Topics/Security/administrators-admin-comparison.htm
Runbook: Reach out to the user if needed to validate the activity
DedupPeriodMinutes: 15
SummaryAttributes:
- eventType
- severity
- displayMessage
- p_any_ip_addresses
Tests:
- Name: Admin Access Assigned
ExpectedResult: true
Log:
{
"uuid": "2a992f80-d1ad-4f62-900e-8c68bb72a21b",
"published": "2020-11-25 21:27:03.496000000",
"eventType": "user.account.privilege.grant",
"version": "0",
"severity": "INFO",
"legacyEventType": "core.user.admin_privilege.granted",
"displayMessage": "Grant user privilege",
"actor":
{
"id": "00uu1uuuuIlllaaaa356",
"type": "User",
"alternateId": "jack@acme.io",
"displayName": "Jack Naglieri",
},
"client":
{
"userAgent":
{
"browser": "CHROME",
"os": "Mac OS X",
"rawUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
},
"geographicalContext":
{
"geolocation": { "lat": 37.7852, "lon": -122.3874 },
"city": "San Francisco",
"state": "California",
"country": "United States",
"postalCode": "94105",
},
"zone": "null",
"ipAddress": "136.24.229.58",
"device": "Computer",
},
"request": {},
"outcome": { "result": "SUCCESS" },
"target":
[
{
"id": "00u6eup97mAJZWYmP357",
"type": "User",
"alternateId": "alice@acme.io",
"displayName": "Alice Green",
},
],
"transaction": {},
"debugContext":
{
"debugData":
{
"privilegeGranted": "Organization administrator, Application administrator (all)",
"requestUri": "/api/internal/administrators/00u6eu8c68bb72a21b57",
"threatSuspected": "false",
"url": "/api/internal/administrators/00u6eu8c68bb72a21b57",
"requestId": "X777JJ9sssQQHHrrrQTyYQAABBE",
},
},
"authenticationContext": {},
"securityContext": {},
}
- Name: Super Admin Access Assigned (High sev)
ExpectedResult: true
Log:
{
"uuid": "2a992f80-d1ad-4f62-900e-8c68bb72a21b",
"published": "2020-11-25 21:27:03.496000000",
"eventType": "user.account.privilege.grant",
"version": "0",
"severity": "INFO",
"legacyEventType": "core.user.admin_privilege.granted",
"displayMessage": "Grant user privilege",
"actor":
{
"id": "00uu1uuuuIlllaaaa356",
"type": "User",
"alternateId": "jack@acme.io",
"displayName": "Jack Naglieri",
},
"client":
{
"userAgent":
{
"browser": "CHROME",
"os": "Mac OS X",
"rawUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
},
"geographicalContext":
{
"geolocation": { "lat": 37.7852, "lon": -122.3874 },
"city": "San Francisco",
"state": "California",
"country": "United States",
"postalCode": "94105",
},
"zone": "null",
"ipAddress": "136.24.229.58",
"device": "Computer",
},
"request": {},
"outcome": { "result": "SUCCESS" },
"target":
[
{
"id": "00u6eup97mAJZWYmP357",
"type": "User",
"alternateId": "alice@acme.io",
"displayName": "Alice Green",
},
],
"transaction": {},
"debugContext":
{
"debugData":
{
"privilegeGranted": "Super administrator, Read only admin",
"requestUri": "/api/internal/administrators/00u6eu8c68bb72a21b57",
"threatSuspected": "false",
"url": "/api/internal/administrators/00u6eu8c68bb72a21b57",
"requestId": "X777JJ9sssQQHHrrrQTyYQAABBE",
},
},
"authenticationContext": {},
"securityContext": {},
}
Detection logic
Condition
eventType eq "user.account.privilege.grant"
outcome.result eq "SUCCESS"
This rule also runs imperative logic the parser cannot express as a filter; the conditions above are the structured part it could extract.
Indicators
Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.
| Field | Kind | Values |
|---|---|---|
eventType | eq |
|
outcome.result | eq |
|
Output fields
Fields the rule emits when it matches. Chronicle authors list these in the outcome block; they appear on the detection and $risk_score drives alerting. Sentinel / Defender XDR rules build them up through project / summarize / extend stages. Sentinel maps these into alert fields via entityMappings and customDetails; Defender XDR custom detections surface them as alert fields directly.
| Field | Source |
|---|---|
event_type | eventtype |
severity | |
actor | |
client | |
request | |
outcome | |
target | |
debug_context | debugcontext |
authentication_context | authenticationcontext |
security_context | securitycontext |
ips | p_any_ip_addresses |
displayName | actor.displayName |
alternateId | actor.alternateId |
privilegeGranted | debugContext.debugData.privilegeGranted |