Okta-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie Okta-Logs mithilfe der Okta API in Google Security Operations aufnehmen. Der Parser extrahiert Systemprotokolle und verarbeitet sowohl einzelne als auch Batch-Ereignisse in einem JSON-Array. Dabei werden die Daten in das UDM-Format normalisiert, Okta-Felder werden UDM-Äquivalenten zugeordnet, die Daten werden mit geparsten User-Agents, geografischen Informationen und Authentifizierungsdetails angereichert und Sicherheitsereignisse werden basierend auf Ergebnissen und Risikoinformationen generiert.
Hinweise
- Sie benötigen eine Google SecOps-Instanz.
- Sie benötigen Berechtigungen für Okta.
Okta konfigurieren
Führen Sie die folgenden Aufgaben aus, um Okta SSO zu konfigurieren:
Okta-Administrator mit Lesezugriff erstellen
- Melden Sie sich in der Okta Admin-Konsole an.
Erstellen Sie einen Standardnutzer.
- Gehen Sie zu Verzeichnis > Personen.
- Klicken Sie auf Person hinzufügen und füllen Sie die Pflichtfelder aus.
Wählen Sie Sicherheit > Administratoren aus.
Klicken Sie auf Administrator hinzufügen.
Suchen Sie im Feld Administratorzuweisung durch Administrator nach dem Standardnutzer.
Wählen Sie im Bereich Rollen die Option Lesezugriffsberechtigter Administrator aus der Liste aus.
Melden Sie sich vom Administratorkonto ab.
API-Schlüssel abrufen
- Melden Sie sich mit dem Nutzer Lesezugriffs-Administrator in der Okta Admin-Konsole an.
- Klicken Sie auf Sicherheit > API > Tokens.
- Klicken Sie auf Token erstellen.
- Geben Sie einen aussagekräftigen Namen für das Token ein.
- Geben Sie die IP-Zone an, in der die API verwendet wird. Wenn Sie sich nicht sicher sind, können Sie eine beliebige IP auswählen.
- Klicken Sie auf Token erstellen.
- Kopieren Sie den API-Schlüssel.
- Klicken Sie auf Ok.
Feed in Google SecOps für die Aufnahme von Okta-Protokollen konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Okta-Protokolle.
- Wählen Sie API eines Drittanbieters als Quelltyp aus.
- Wählen Sie Okta als Protokolltyp aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- HTTP-Authentifizierungsheader: Geben Sie den Okta API-Schlüssel im folgenden Format ein:
Authorization:<API_KEY>
. - API-Hostname: Geben Sie den Domainnamen Ihres Okta-Hosts an, z. B.
<your-domain>.okta.com
. - Asset-Namespace: der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
- HTTP-Authentifizierungsheader: Geben Sie den Okta API-Schlüssel im folgenden Format ein:
- Klicken Sie auf Weiter.
- Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
actor.alternateId |
principal.user.email_addresses |
Wird aus actor.alternateId extrahiert, wenn es sich um eine E-Mail-Adresse handelt. Wenn keine E-Mail-Adresse, wird als principal.user.userid verwendet. |
actor.displayName |
principal.user.user_display_name |
Direkt zugeordnet. |
actor.id |
principal.user.product_object_id |
Direkt zugeordnet. |
actor.type |
principal.user.attribute.roles.name |
Direkt zugeordnet. |
authenticationContext.authenticationProvider |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel authenticationProvider . |
authenticationContext.credentialProvider |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel credentialProvider . |
authenticationContext.credentialType |
extensions.auth.mechanism |
Wird verwendet, um den Authentifizierungsmechanismus abzuleiten (OTP, USERNAME_PASSWORD, LOCAL). |
authenticationContext.externalSessionId |
network.parent_session_id |
Direkt zugeordnet. |
client.device |
principal.asset.type /additional.fields.value.string_value |
Wird basierend auf dem Wert auf principal.asset.type (WORKSTATION, MOBILE, ROLE_UNSPECIFIED) zugeordnet. Wird auch als Stringwert mit dem Schlüssel device in additional.fields zugeordnet. |
client.geographicalContext.city |
principal.location.city |
Direkt zugeordnet. |
client.geographicalContext.country |
principal.location.country_or_region |
Direkt zugeordnet. |
client.geographicalContext.geolocation.lat |
principal.location.region_latitude |
Direkt zugeordnet. |
client.geographicalContext.geolocation.lon |
principal.location.region_longitude |
Direkt zugeordnet. |
client.geographicalContext.postalCode |
additional.fields.value.string_value |
Wird direkt als Stringwert mit dem Schlüssel Postal code in additional.fields zugeordnet. |
client.geographicalContext.state |
principal.location.state |
Direkt zugeordnet. |
client.ipAddress |
principal.ip , principal.asset.ip |
Direkt zugeordnet. |
client.userAgent.browser |
target.resource.attribute.labels.value |
Direkt zugeordnet, mit Schlüssel Browser . |
client.userAgent.os |
principal.platform |
Wird basierend auf dem Wert der Plattform (LINUX, WINDOWS, MAC) zugeordnet. |
client.userAgent.rawUserAgent |
network.http.user_agent , network.http.parsed_user_agent |
Direkt zugeordnet und geparst. |
client.zone |
additional.fields.value.string_value |
Wird direkt als Stringwert mit dem Schlüssel zone in additional.fields zugeordnet. |
debugContext.debugData.behaviors |
security_result.description , security_result.detection_fields |
Direkt der Beschreibung zugeordnet. Einzelne Verhaltensweisen werden extrahiert und als Erkennungsfelder hinzugefügt. |
debugContext.debugData.changedAttributes |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel changedAttributes . |
debugContext.debugData.clientAddress |
principal.ip , principal.asset.ip |
Wird direkt zugeordnet, wenn request.ipChain und client.ipAddress fehlen. |
debugContext.debugData.deviceFingerprint |
target.asset.asset_id |
Direkt zugeordnet, Präfix device_finger_print: . |
debugContext.debugData.dtHash |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel dtHash . |
debugContext.debugData.factor |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel factor . |
debugContext.debugData.factorIntent |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel factorIntent . |
debugContext.debugData.logOnlySecurityData.risk.reasons |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel Risk Reasons . |
debugContext.debugData.privilegeGranted |
target.user.attribute.roles |
Sie werden in einzelne Berechtigungen unterteilt und als Rollen mit Name und Beschreibung hinzugefügt. |
debugContext.debugData.pushOnlyResponseType |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel pushOnlyResponseType . |
debugContext.debugData.pushWithNumberChallengeResponseType |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel pushWithNumberChallengeResponseType . |
debugContext.debugData.requestUri |
extensions.auth.auth_details |
Direkt zugeordnet. |
debugContext.debugData.suspiciousActivityEventId |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel suspiciousActivityEventId . |
debugContext.debugData.suspiciousActivityEventType |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel suspiciousActivityEventType . |
debugContext.debugData.threatDetections |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel threatDetections . |
debugContext.debugData.threatSuspected |
security_result.detection_fields.value , security_result.threat_status |
Wird als Erkennungsfeld mit dem Schlüssel threatSuspected zugeordnet. Wird verwendet, um den Bedrohungsstatus (AKTIV oder FALSE_POSITIVE) abzuleiten. |
debugContext.debugData.url |
target.url |
Direkt zugeordnet. |
displayMessage |
security_result.summary |
Direkt zugeordnet. |
eventType |
metadata.product_event_type , metadata.event_type |
Direkt product_event_type zugeordnet. Wird verwendet, um event_type (USER_LOGIN, USER_LOGOUT, USER_CHANGE_PASSWORD, USER_CHANGE_PERMISSIONS, USER_DELETION, GROUP_MODIFICATION, SETTING_MODIFICATION, SCHEDULED_TASK_ENABLE, RESOURCE_CREATION, USER_UNCATEGORIZED) abzuleiten. |
legacyEventType |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel legacyEventType . |
outcome.reason |
security_result.category_details |
Direkt zugeordnet. |
outcome.result |
security_result.action |
Wird basierend auf dem Wert einer Aktion zugeordnet (ZULASSEN, ANZÜCKEN, BLOCKIEREN). |
published |
metadata.event_timestamp |
In einen Zeitstempel geparst. |
request.ipChain.n.geographicalContext |
intermediary.location |
Geografische Kontext der Zwischen-IPs in der Anfragekette. |
request.ipChain.n.ip |
intermediary.ip |
IP-Adressen von Intermediären in der Anfragekette. |
securityContext.asNumber |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel asNumber . |
securityContext.asOrg |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel asOrg . |
securityContext.domain |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel domain . |
securityContext.isp |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel isp . |
securityContext.isProxy |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel anonymized IP . |
target.n.alternateId |
target.user.email_addresses /target.user.userid |
Wenn es sich um eine E-Mail-Adresse handelt, die target.user.email_addresses zugeordnet ist. Wenn keine E-Mail-Adresse, wird als target.user.userid verwendet. |
target.n.detailEntry.clientAppId |
target.asset_id |
Direkt zugeordnet, Präfix Client_app_id: . |
target.n.detailEntry.methodTypeUsed |
target.resource_ancestors.attribute.labels.value |
Direkt zugeordnet, mit dem Schlüssel methodTypeUsed , wenn der Zieltyp „AuthenticatorEnrollment“ ist. |
target.n.detailEntry.methodUsedVerifiedProperties |
target.resource_ancestors.attribute.labels.value |
Direkt zugeordnet, mit Schlüssel methodUsedVerifiedProperties , wenn der Zieltyp „AuthenticatorEnrollment“ ist. |
target.n.detailEntry.policyType |
target.resource_ancestors.attribute.labels.value |
Direkt zugeordnet, mit Schlüssel Policy Type . |
target.n.detailEntry.signOnModeType |
security_result.detection_fields.value |
Direkt zugeordnet, mit Schlüssel signOnModeType . |
target.n.displayName |
target.user.user_display_name / target.application / target.resource.name |
Zuordnung nach Zieltyp. |
target.n.id |
target.user.product_object_id / target.resource.product_object_id / target.resource_ancestors.product_object_id |
Zuordnung nach Zieltyp. |
target.n.type |
target.user.attribute.roles.name / target.resource.resource_subtype / target.resource_ancestors.resource_subtype |
Zuordnung nach Zieltyp. |
transaction.id |
network.session_id |
Direkt zugeordnet. |
transaction.type |
additional.fields.value.string_value |
Wird direkt als Stringwert mit dem Schlüssel type in additional.fields zugeordnet. |
uuid |
metadata.product_log_id |
Direkt zugeordnet. |
– | metadata.vendor_name |
Legen Sie Okta fest. |
– | metadata.product_name |
Legen Sie Okta fest. |
– | extensions.auth.type |
Legen Sie SSO fest. |
– | is_alert |
Für security.threat.detected - und user.account.report_suspicious_activity_by_enduser -Ereignisse auf „true“ setzen. |
– | is_significant |
Für security.threat.detected - und user.account.report_suspicious_activity_by_enduser -Ereignisse auf „true“ setzen. |
Änderungen
2024-05-16
- Wenn
is_alert
undis_significant
wahr sind, legen Siesecurity_result.alert_state
alsALERTING
fest.
2024-03-05
- Das Feld
security_result.action
wurde aktualisiert, um anzugeben, ob der Traffic zugelassen oder blockiert wurde.
2024-02-16
Fehlerkorrektur:
- Wenn
target.0.type
User
oderAppUser
ist, wirdtarget.0.alternateId
target.user.userid
zugeordnet. - Wenn
target.1.type
User
oderAppUser
ist, wirdtarget.1.alternateId
target.user.userid
zugeordnet.
2023-12-14
securityContext.asNumber
wurdesecurity_result.detection_fields
zugeordnet.legacyEventType
wurdesecurity_result.detection_fields
zugeordnet.conditional_check
wurde vor dem Festlegen vonmetadata.event_type
hinzugefügt.
2023-06-28
- Der vollständige Wert von
debugContext.debugData.suspiciousActivityEventType
wurdesecurity_result.detection_fields
zugeordnet. - Der vollständige Wert von
debugContext.debugData.logOnlySecurityData.behaviors.New Device
wurdesecurity_result.detection_fields
zugeordnet.
2023-06-09
- Das Feld
debugContext.debugData.deviceFingerprint
isttarget.asset.asset_id
zugeordnet. - Der vollständige Wert von
debugContext.debugData.risk.reasons
wurdesecurity_result.detection_fields
zugeordnet.
2023-05-17
- Das Feld „authenticationContext.externalSessionId“ ist „network.parent_session_id“ zugeordnet.
- Das Feld „debugContext.debugData.pushOnlyResponseType“ wird „security_result.detection_fields.key/value“ zugeordnet.
- Das Feld „debugContext.debugData.factor“ wird „security_result.detection_fields.key/value“ zugeordnet.
- Das Feld „debugContext.debugData.factorIntent“ ist „security_result.detection_fields.key/value“ zugeordnet.
- Das Feld „debugContext.debugData.pushWithNumberChallengeResponseType“ wird „security_result.detection_fields.key/value“ zugeordnet.
- Das Feld „debugContext.debugData.dtHash“ ist „security_result.detection_fields.key/value“ zugeordnet.
- Das Feld „client.userAgent.rawUserAgent“ wird „network.http.user_agent“ zugeordnet.
- Die Zuordnung unter „security_result.action“ wurde von „ALLOW_WITH_MODIFICATION“ in den enum-Wert „CHALLENGE“ geändert.
- Für den Ereignistyp „system.api_token.create“ wurde „metadata.event_type“ von „USER_UNCATEGORIZED“ in „RESOURCE_CREATION“ geändert.
2023-04-28
Fehlerkorrektur:
- Modifizierte Zuordnung von
security_result.threat_status
zuACTIVE
, wenndebugContext.debugData.threatSuspected
=true
, andernfalls zuFALSE_POSITIVE
.
2023-03-24
logOnlySecurityData
-Felder wurdensecurity_result.detection_fields
zugeordnet.- Außerdem wurde der Parsefehler behoben, indem
DEFERRED
zur Aktionsliste hinzugefügt wurde.
2023-04-11
- Die Felder, die
http.user_agent
zugeordnet waren, wurden aufhttp.parsed_user_agent
umgestellt. target.displayName
wurdetarget.resource_ancestors.name
zugeordnet.targetfield.detailEntry.methodTypeUsed
wurdetarget.resource_ancestors.attribute.labels
zugeordnet.targetfield.detailEntry.methodUsedVerifiedProperties
wurdetarget.resource_ancestors.attribute.labels
zugeordnet.
2023-02-20
metadata.event_type
wurde vonUSER_LOGIN
inSTATUS_UPDATE
geändert, wobeieventType
=user.authentication.auth_via_AD_agent
ist
2022-12-14
debugContext.debugData.changedAttributes
wurdesecurity_result.detection_fields
zugeordnet.- Null-Prüfung für
detail.actor.alternateId
hinzugefügt.
2022-11-17
- Das Feld
target[n].alternateId
isttarget.resource.attribute.labels
zugeordnet. - Das Feld
detail.target.0.alternateId
isttarget.resource.attribute.labels
zugeordnet.
2022-11-08
Fehlerkorrektur:
- Es wurde eine Bedingung für die korrekte E-Mail-Prüfung für das Feld
user_email
hinzugefügt. - Es wurde eine Prüfung hinzugefügt, ob das Feld
Action1
nicht inRATE_LIMIT
enthalten ist. - Null- und Unbekannt-Prüfung für
actor.displayName
hinzugefügt.
2022-11-04
- Unterstützung für Protokolle mit mehreren Ereignissen hinzugefügt
2022-10-15
signOnModeType
wurdesecurity_result.detection_fields
zugeordnet.authenticationProvider
wurdesecurity_result.detection_fields
zugeordnet.credentialProvider
wurdesecurity_result.detection_fields
zugeordnet.device
wurdeadditional.fields
zugeordnet.zone
wurdeadditional.fields
zugeordnet.type
wurdeadditional.fields
zugeordnet.
2022-10-14
Fehlerkorrektur:
- Bedingte Prüfung für „principal.user.email_addresses“ und „target.user.email_addresses“ hinzugefügt.
- Grok-Regel hinzugefügt, um für das Feld „request.ipChain.0.ip“, das „principal.ip“ zugeordnet ist, eine gültige IP-Adresse zu prüfen.
- Die Bedingung „on_error“ für das Feld „debugContext.debugData.url“, das auf „target.url“ zugeordnet ist, wurde hinzugefügt.
2022-10-03
client.userAgent.os
wurdeprincipal.platform
zugeordnet.client.device
wurdeprincipal.asset.type
zugeordnet.anonymized IP
(hartcodierter String) wurde auf security_result.detection_fields.key und der Wert „securityContext.isProxy“ auf den entsprechenden Wert von security_result.detection_fields.value abgebildet.
2022-09-16
- „securityContext.asOrg“ wurde „security_result.category_details“ zugeordnet.
- „securityContext.isProxy“ ist auf „security_result.detection_fields“ zugeordnet.
- „securityContext.domain“ ist auf „security_result.detection_fields“ zugeordnet.
- „securityContext.isp“ ist auf „security_result.detection_fields“ zugeordnet.
- „debugContext.debugData.risk.level“ wird auf „security_result.severity“ zugeordnet.
- „debugContext.debugData.risk.reasons“ wird auf „security_result.detection_fields“ zugeordnet.
2022-08-12
- Die neu aufgenommenen Protokolle wurden analysiert und den folgenden Feldern zugeordnet:
- „detail.uuid“ ist mit „metadata.product_log_id“ verknüpft.
- „detail.eventType“ wird auf „metadata.product_event_type“ zugeordnet
- „detail.actor.id“ ist auf „principal.user.product_object_id“ zugeordnet.
- if 'detail.actor.alternateId' mapped to 'principal.user.userid' else
- „detail.actor.alternateId“ ist auf „principal.user.email_addresses“ zugeordnet.
- „detail.actor.displayName“ ist „principal.user.user_display_name“ zugeordnet.
- „detail.actor.type“ ist auf „.principal.user.attribute.roles“ zugeordnet.
- „detail.client.ipChain.0.ip“ ist „principal.ip“ zugeordnet.
- „detail.client.ipChain.0.geographicalContext.state“ wird auf „principal.location.state“ zugeordnet.
- „detail.client.ipChain.0.geographicalContext.city“ wird auf „principal.location.city“ zugeordnet.
- „detail.client.ipChain.0.geographicalContext.country“ wird auf „principal.location.country_or_region“ zugeordnet.
- „detail.debugContext.debugData.requestUri“ ist auf „target.url“ zugeordnet.
- „detail.target.0.type“ ist auf „target.resource.resource_subtype“ zugeordnet.
- „detail.target.0.id“ ist auf „target.resource.resource.product_object_id“ zugeordnet.
- „detail.target.0.displayName“ ist auf „target.resource.resource_subtype“ zugeordnet.
- „detail.target.0.detailEntry.policyType“ ist auf „target.resource_ancestors.attribute.labels“ zugeordnet.
- „detail.outcome.reason“ wurde „security_result.category_details“ zugeordnet.
- „detail.debugContext.debugData.threatSuspected“ wurde in „security_result.detection_fields“ umgewandelt.
- „detail.displayMessage“ wurde „security_result.summary“ zugeordnet.
- „detail.outcome.result“ wurde „security_result.action“ zugeordnet.
- „detail.severity“ ist „security_result.severity“ zugeordnet.
- „detail.transaction.id“ ist mit „network.session_id“ verknüpft.
- „detail.debugContext.debugData.requestUri“ ist auf „extensions.auth.auth_details“ zugeordnet.
2022-07-08
- Die Zuordnung für
actor.type
wurde vonprincipal.user.role_name
zuprincipal.user.attribute.roles
geändert. - Die Zuordnung für
target.0.type
wurde vontarget.user.role_name
zutarget.user.attribute.roles
geändert. - Die Zuordnung für
target.1.type
wurde vontarget.user.role_name
zutarget.user.attribute.roles
geändert.
2022-06-15
Optimierung:
- für
target.0.type
=Token
. target.0.detailEntry.clientAppId
wurdetarget.asset_id
zugeordnet.- Bedingte Prüfung für das Feld „transaction.id“, das dem UDM-Feld „network.session_id“ zugeordnet ist, hinzugefügt.
2022-06-03
Optimierung:
- debugContext.debugData.privilegeGranted wurde zusätzlich zu target.user.attribute.roles.name zugeordnet.
- debugContext.debugData.requestUri wurde in extensions.auth.auth_details geändert.
- debugContext.debugData.suspiciousActivityEventId, debugContext.debugData.threatDetections und debugContext.debugData.threatSuspected wurden security_result.detection_fields zugeordnet.
2022-03-22
Optimierung:
- debugContext.debugData.behaviors mapped to security_result.description.
- debugContext.debugData.threatSuspected wird security_result.threat_status zugeordnet.
- debugContext.debugData.risk wird auf security_result.severity zugeordnet.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten