Duo-Nutzerkontext-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Duo-Nutzerkontext-Logs mithilfe einer API in Google Security Operations aufnehmen. Der Parser verarbeitet JSON-Daten, ordnet Nutzerinformationen (einschließlich der Zuordnung von Alias-Nutzernamen zu E‑Mail-Adressen, Gruppen, Telefonnummern und Gerätedetails) dem UDM zu und erfasst den Status des Nutzerkontos. Außerdem werden verschachtelte Datenstrukturen verarbeitet und mehrere Datentransformationen und ‑zusammenführungen durchgeführt, um das endgültige UDM-Ereignis zu erstellen.

Hinweise

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

Admin API-Anwendung konfigurieren und Schlüssel abrufen

  1. Melden Sie sich als Administrator im Duo-Admin-Steuerfeld an.
  2. Klicken Sie in der linken Seitenleiste auf Anwendungen > Anwendungen verwalten.
  3. Klicken Sie auf die Schaltfläche Anwendung hinzufügen.
  4. Geben Sie in das Suchfeld Admin API ein und klicken Sie neben Duo Admin API auf Hinzufügen.
  5. Auf dem nächsten Bildschirm werden die folgenden Informationen angezeigt:
    • Integrationsschlüssel:Ein String wie DIYYYYYYYYYYYYYY.
    • Geheimer Schlüssel: ein String mit 40 Zeichen.
    • API-Hostname: Zum Beispiel api-abcd1234.duosecurity.com.
  6. Kopieren und speichern Sie den Integrationsschlüssel, den geheimen Schlüssel und den API-Hostname an einem sicheren Ort.
  7. Scrollen Sie zu Einstellungen und legen Sie Berechtigungen auf Leseberechtigung für Ressource erteilen fest.
  8. Klicken Sie auf Änderungen speichern.

Feeds einrichten

  1. Rufen Sie die SIEM-Einstellungen> Feeds auf.
  2. Klicken Sie auf + Neuen Feed hinzufügen.
  3. Geben Sie im Feld Feed name einen Namen für den Feed ein, z. B. Duo Users Logs.
  4. Wählen Sie Drittanbieter-API als Quelltyp aus.
  5. Wählen Sie den Protokolltyp Duo-Nutzerkontext aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie Werte für die folgenden Eingabeparameter an:
    • Nutzername: Geben Sie den zuvor kopierten Integrationsschlüssel ein.
    • Secret: Geben Sie den zuvor kopierten Secret Key (geheimen Schlüssel) ein.
    • API-Hostname: Geben Sie die Duo API-Server-URL an (z. B. api-abcd1234.duosecurity.com).
    • Asset-Namespace: Der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  8. Klicken Sie auf Weiter.
  9. Prüfen Sie die Feedkonfiguration auf dem Bildschirm Finalize (Abschließen) und klicken Sie dann auf Submit (Senden).

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
access_device.browser event.idm.entity.entity.resource.attribute.labels.value Der Wert wird direkt aus dem Feld access_device.browser übernommen oder aus surfaced_auth.access_device.browser, wenn das Feld leer ist. Der Schlüssel ist auf „access_device browser“ gesetzt.
access_device.browser_version event.idm.entity.entity.resource.attribute.labels.value Der Wert wird direkt aus dem Feld access_device.browser_version übernommen oder aus surfaced_auth.access_device.browser_version, wenn das Feld leer ist. Der Schlüssel ist auf „access_device browser_version“ gesetzt.
access_device.ip.address event.idm.entity.entity.ip Der Wert wird direkt aus dem Feld access_device.ip.address übernommen oder aus surfaced_auth.access_device.ip, wenn das Feld leer ist.
access_device.location.city event.idm.entity.entity.location.city Der Wert wird direkt aus dem Feld access_device.location.city übernommen oder aus surfaced_auth.access_device.location.city, wenn das Feld leer ist.
access_device.location.country event.idm.entity.entity.location.country_or_region Der Wert wird direkt aus dem Feld access_device.location.country übernommen oder aus surfaced_auth.access_device.location.country, wenn das Feld leer ist.
access_device.location.state event.idm.entity.entity.location.state Der Wert wird direkt aus dem Feld access_device.location.state übernommen oder aus surfaced_auth.access_device.location.state, wenn das Feld leer ist.
access_device.os event.idm.entity.entity.asset.platform_software.platform Der Wert wird aus dem Feld access_device.os abgeleitet oder aus surfaced_auth.access_device.os, wenn das Feld leer ist. Wenn der Wert (unabhängig von der Groß-/Kleinschreibung) mit „ios“ oder „mac“ übereinstimmt, wird das UDM-Feld auf „MAC“ gesetzt. Wenn es mit „windows“ übereinstimmt, wird das UDM-Feld auf „WINDOWS“ gesetzt. Wenn es mit „linux“ übereinstimmt, wird das UDM-Feld auf „LINUX“ gesetzt.
access_device.os_version event.idm.entity.entity.asset.platform_software.platform_version Der Wert wird direkt aus dem Feld access_device.os_version übernommen oder aus surfaced_auth.access_device.os_version, wenn das Feld leer ist.
action.details event.idm.entity.sec_result.action_details Der Wert wird aus diesem Feld übernommen, wenn action leer ist.
action.name event.idm.entity.sec_result.detection_fields.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „action_name“ festgelegt.
activity_id event.idm.entity.sec_result.detection_fields.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „activity_id“ festgelegt.
actor.details.created event.idm.entity.entity.user.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „created“ gesetzt.
actor.details.email event.idm.entity.entity.user.email_addresses Der Wert wird direkt aus dem Feld übernommen.
actor.details.groups.key event.idm.entity.entity.user.group_identifiers Der Wert wird direkt aus dem Feld übernommen.
actor.details.groups.name event.idm.entity.entity.user.group_identifiers Der Wert wird direkt aus dem Feld übernommen.
actor.details.last_login event.idm.entity.entity.user.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „last_login“ gesetzt.
actor.details.status event.idm.entity.entity.user.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „status“ festgelegt.
actor.key event.idm.entity.entity.resource.product_object_id Der Wert wird direkt aus dem Feld übernommen.
actor.name event.idm.entity.entity.user.user_display_name Der Wert wird direkt aus dem Feld übernommen oder surfaced_auth.user.name, wenn das Feld leer ist.
actor.type event.idm.entity.entity.user.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „actor type“ festgelegt.
akey event.idm.entity.metadata.product_entity_id Der Wert wird direkt aus dem Feld übernommen oder ist sekey, wenn akey leer ist.
application event.idm.entity.entity.application Der Wert wird direkt aus dem Feld übernommen.
collection_time.seconds, create_time.seconds event.idm.entity.metadata.collected_timestamp.seconds, event.timestamp.seconds Der größere Wert von collection_time.seconds und create_time.seconds wird sowohl für collected_timestamp.seconds als auch für timestamp.seconds auf oberster Ebene verwendet.
collection_time.nanos, create_time.nanos event.idm.entity.metadata.collected_timestamp.nanos, event.timestamp.nanos Der Nanosekundenwert, der dem größeren Wert von collection_time.seconds und create_time.seconds entspricht, wird sowohl für collected_timestamp.nanos als auch für timestamp.nanos auf oberster Ebene verwendet.
email event.idm.entity.entity.user.email_addresses Der Wert wird direkt aus dem Feld übernommen.
explanations event.idm.entity.entity.resource.attribute.labels Die Schlüssel/Wert-Paare in jedem Objekt im explanations-Array werden in Labels umgewandelt. Dem Schlüssel für jedes Label wird „explanation “ vorangestellt.
firstname event.idm.entity.entity.user.first_name Der Wert wird direkt aus dem Feld übernommen.
from_common_netblock event.idm.entity.entity.resource.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „from_common_netblock“ gesetzt.
from_new_user event.idm.entity.entity.resource.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „from_new_user“ gesetzt.
groups.N.name (N=0..10) event.idm.entity.entity.user.group_identifiers Der Wert wird direkt aus dem Feld übernommen.
lastname event.idm.entity.entity.user.last_name Der Wert wird direkt aus dem Feld übernommen.
low_risk_ip event.idm.entity.entity.resource.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „low_risk_ip“ gesetzt.
phones.0.model event.idm.entity.relations.entity.asset.hardware.model Der Wert wird direkt aus dem Feld übernommen.
phones.0.number event.idm.entity.entity.user.phone_numbers Der Wert wird direkt aus dem Feld übernommen.
phones.0.phone_id event.idm.entity.relations.entity.asset.product_object_id Der Wert wird direkt aus dem Feld übernommen.
phones.0.platform event.idm.entity.relations.entity.asset.hardware.manufacturer Der Wert wird direkt aus dem Feld übernommen.
priority_event event.idm.entity.entity.resource.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel wird auf „priority_event“ festgelegt.
realname event.idm.entity.entity.user.user_display_name Der Wert wird direkt aus dem Feld übernommen.
sekey event.idm.entity.metadata.product_entity_id Der Wert wird direkt aus dem Feld übernommen, wenn akey leer ist.
state event.idm.entity.entity.resource.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „state“ gesetzt.
status event.idm.entity.entity.user.attribute.labels.value, event.idm.entity.entity.user.user_authentication_status Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel für das Label ist auf „status“ festgelegt. Der Wert wird auch verwendet, um die user_authentication_status zu bestimmen. „active“ und „bypass“ werden „ACTIVE“ zugeordnet, „disabled“ und „pending deletion“ werden „SUSPENDED“ zugeordnet und „locked out“ wird „NO_ACTIVE_CREDENTIALS“ zugeordnet.
surfaced_auth.access_device.browser event.idm.entity.entity.resource.attribute.labels.value Der Wert wird aus diesem Feld übernommen, wenn access_device.browser leer ist. Der Schlüssel ist auf „surfaced_auth access_device browser“ gesetzt.
surfaced_auth.access_device.browser_version event.idm.entity.entity.resource.attribute.labels.value Der Wert wird aus diesem Feld übernommen, wenn access_device.browser_version leer ist. Der Schlüssel ist auf „surfaced_auth access_device browser_version“ gesetzt.
surfaced_auth.access_device.ip event.idm.entity.entity.ip Der Wert wird aus diesem Feld übernommen, wenn access_device.ip.address leer ist.
surfaced_auth.access_device.location.city event.idm.entity.entity.location.city Der Wert wird aus diesem Feld übernommen, wenn access_device.location.city leer ist.
surfaced_auth.access_device.location.country event.idm.entity.entity.location.country_or_region Der Wert wird aus diesem Feld übernommen, wenn access_device.location.country leer ist.
surfaced_auth.access_device.location.state event.idm.entity.entity.location.state Der Wert wird aus diesem Feld übernommen, wenn access_device.location.state leer ist.
surfaced_auth.access_device.os event.idm.entity.entity.asset.platform_software.platform Der Wert wird aus diesem Feld übernommen, wenn access_device.os leer ist. Die Logik für die Zuordnung zum UDM-Feld ist dieselbe wie für access_device.os.
surfaced_auth.access_device.os_version event.idm.entity.entity.asset.platform_software.platform_version Der Wert wird aus diesem Feld übernommen, wenn access_device.os_version leer ist.
surfaced_auth.user.key event.idm.entity.entity.user.userid Der Wert wird aus diesem Feld übernommen, wenn username leer ist.
surfaced_auth.user.name event.idm.entity.entity.user.user_display_name Der Wert wird aus diesem Feld übernommen, wenn actor.name leer ist.
target.details.biometrics_status event.idm.entity.entity.asset.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „biometrics_status“ festgelegt.
target.details.country_code event.idm.entity.entity.asset.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „country_code“ festgelegt.
target.details.extension event.idm.entity.entity.asset.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „extension“ gesetzt.
target.details.manufacturer event.idm.entity.entity.asset.hardware.manufacturer Der Wert wird direkt aus dem Feld übernommen.
target.details.model event.idm.entity.entity.asset.hardware.model Der Wert wird direkt aus dem Feld übernommen.
target.details.number event.idm.entity.entity.user.phone_numbers Der Wert wird direkt aus dem Feld übernommen.
target.details.os event.idm.entity.entity.asset.software.name Der Wert wird direkt aus dem Feld übernommen.
target.details.os_version event.idm.entity.entity.asset.software.version Der Wert wird direkt aus dem Feld übernommen.
target.details.passcode_status event.idm.entity.entity.asset.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „passcode_status“ festgelegt.
target.details.tampered_status event.idm.entity.entity.asset.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „tampered_status“ gesetzt.
target.key event.idm.entity.entity.asset.asset_id Der Wert wird direkt aus dem Feld übernommen.
target.name event.idm.entity.entity.asset.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „name“ festgelegt.
target.type event.idm.entity.entity.asset.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „type“ festgelegt.
triage_event_uri event.idm.entity.entity.url Der Wert wird direkt aus dem Feld übernommen.
triaged_as_interesting event.idm.entity.entity.resource.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „triaged_as_interesting“ gesetzt.
ts event.timestamp.seconds, event.idm.entity.metadata.collected_timestamp.seconds Der Zeitstempel wird aus diesem Feld geparst, sofern vorhanden, und zwar im ISO8601- oder RFC 3339-Format. Die extrahierten Sekunden und Nanosekunden werden sowohl für timestamp auf oberster Ebene als auch für collected_timestamp verwendet.
type event.idm.entity.entity.resource.attribute.labels.value Der Wert wird direkt aus dem Feld übernommen. Der Schlüssel ist auf „type“ festgelegt.
user_id event.idm.entity.metadata.product_entity_id Der Wert wird direkt aus dem Feld übernommen.
username event.idm.entity.entity.user.userid Der Wert wird direkt aus dem Feld übernommen oder ist surfaced_auth.user.key, wenn username leer ist.
(Parserlogik) event.idm.entity.metadata.vendor_name Fest codiert auf „Duo“.
(Parserlogik) event.idm.entity.metadata.product_name Fest codiert auf „Duo User Context“.
(Parserlogik) event.idm.entity.metadata.entity_type Wird anhand des Vorhandenseins anderer Felder bestimmt. Wenn user_present „true“ ist, wird „USER“ festgelegt. Wenn asset_mid_present „true“ ist, wird es auf „ASSET“ gesetzt. Wenn ip_present „true“ ist, wird es auf „IP_ADDRESS“ gesetzt. Wenn resource_present „true“ ist, wird der Wert auf „RESOURCE“ gesetzt. Andernfalls wird er auf „UNKNOWN_ENTITYTYPE“ gesetzt.
(Parserlogik) event.idm.entity.relations.entity_type Wird auf „ASSET“ gesetzt, wenn phones[0] nicht leer ist.
(Parserlogik) event.idm.entity.relations.relationship Wird auf „OWNS“ gesetzt, wenn phones[0] nicht leer ist.
(Parserlogik) event.idm.entity.relations.entity.asset.type Wird auf „MOBILE“ gesetzt, wenn phones[0] nicht leer ist.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten