Okta API Key Created


Description

A user created an API Key in Okta

Query · python

from panther_okta_helpers import okta_alert_context


def rule(event):
    return (
        event.get("eventType", None) == "system.api_token.create"
        and event.deep_get("outcome", "result") == "SUCCESS"
    )


def title(event):
    target = event.get("target", [{}])
    key_name = target[0].get("displayName", "MISSING DISPLAY NAME") if target else "MISSING TARGET"

    return (
        f"{event.deep_get('actor', 'displayName')} <{event.deep_get('actor', 'alternateId')}>"
        f"created a new API key - <{key_name}>"
    )


def alert_context(event):
    return okta_alert_context(event)

Analyst notes

Reach out to the user if needed to validate the activity.

Raw source Okta API Key Created · Panther Python
Esc
Published by panther-labs/panther-analysis ↗, licensed under Apache 2.0 ↗. Reproduced here unmodified.
AnalysisType: rule
Filename: okta_api_key_created.py
RuleID: "Okta.APIKeyCreated"
DisplayName: "Okta API Key Created"
Enabled: true
LogTypes:
  - Okta.SystemLog
Tags:
  - Identity & Access Management
  - Okta
  - Credential Access:Steal Application Access Token
Reports:
  MITRE ATT&CK:
    - TA0006:T1528
Severity: Info
Description: A user created an API Key in Okta
Reference: https://help.okta.com/en/prod/Content/Topics/Security/API.htm
Runbook: Reach out to the user if needed to validate the activity.
SummaryAttributes:
  - eventType
  - severity
  - displayMessage
  - p_any_ip_addresses
Tests:
  - Name: API Key Created
    ExpectedResult: true
    Log:
      {
        "uuid": "2a992f80-d1ad-4f62-900e-8c68bb72a21b",
        "published": "2021-01-08 21:28:34.875",
        "eventType": "system.api_token.create",
        "version": "0",
        "severity": "INFO",
        "legacyEventType": "api.token.create",
        "displayMessage": "Create API token",
        "actor":
          {
            "alternateId": "user@example.com",
            "displayName": "Test User",
            "id": "00u3q14ei6KUOm4Xi2p4",
            "type": "User",
          },
        "outcome": { "result": "SUCCESS" },
        "request": {},
        "debugContext": {},
        "target":
          [
            {
              "id": "00Tpki36zlWjhjQ1u2p4",
              "type": "Token",
              "alternateId": "unknown",
              "displayName": "test_key",
              "details": null,
            },
          ],
      }


# ------ paired body: okta_api_key_created.py ------

from panther_okta_helpers import okta_alert_context


def rule(event):
    return (
        event.get("eventType", None) == "system.api_token.create"
        and event.deep_get("outcome", "result") == "SUCCESS"
    )


def title(event):
    target = event.get("target", [{}])
    key_name = target[0].get("displayName", "MISSING DISPLAY NAME") if target else "MISSING TARGET"

    return (
        f"{event.deep_get('actor', 'displayName')} <{event.deep_get('actor', 'alternateId')}>"
        f"created a new API key - <{key_name}>"
    )


def alert_context(event):
    return okta_alert_context(event)

Detection rules belong to the projects that publish them and remain under their own licenses. This site indexes and links to them; it claims no rights in them.