Auth0-Protokolle erfassen

Unterstützt in:

Übersicht

Dieser Parser extrahiert Auth0-Logereignisse aus JSON-formatierten Nachrichten. Es initialisiert UDM-Felder, analysiert die JSON-Nutzlast, ordnet relevante Felder dem UDM-Schema zu und kategorisiert Ereignisse anhand des Felds type, wobei entsprechende Sicherheitsaktionen und Ereignistypen festgelegt werden.

Hinweise

  • Sie benötigen eine Google SecOps-Instanz.
  • Ein Auth0-Konto mit den erforderlichen Berechtigungen.

Feed in Google SecOps für die Aufnahme von Auth0-Protokollen konfigurieren

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Auth0-Protokolle.
  4. Wählen Sie als Quelltyp Webhook aus.
  5. Wählen Sie AUTH_ZERO als Protokolltyp aus.
  6. Klicken Sie auf Weiter.
  7. Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
    • Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B. \n.
    • Asset-Namespace: der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  8. Klicken Sie auf Weiter.
  9. Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
  10. Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.
  11. Kopieren und speichern Sie den geheimen Schlüssel. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen Secret-Schlüssel generieren. Dadurch wird der vorherige Secret-Schlüssel jedoch ungültig.
  12. Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
  13. Klicken Sie auf Fertig.

API-Schlüssel für den Webhook-Feed erstellen

  1. Rufen Sie die Google Cloud Console > Anmeldedaten auf.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.

  3. Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.

Endpunkt-URL angeben

  1. Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
  2. Aktiviere die Authentifizierung, indem du den API-Schlüssel und den geheimen Schlüssel als Teil der benutzerdefinierten Kopfzeile im folgenden Format angibst:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Empfehlung: Geben Sie den API-Schlüssel als Header an, anstatt ihn in der URL anzugeben. Wenn Ihr Webhook-Client keine benutzerdefinierten Header unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mithilfe von Suchparametern im folgenden Format angeben:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Ersetzen Sie Folgendes:

  • ENDPOINT_URL: die URL des Feedendpunkts.
  • API_KEY: Der API-Schlüssel, mit dem Sie sich bei Google Security Operations authentifizieren.
  • SECRET: der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.

Auth0-Webhook für Google SecOps konfigurieren

  1. Rufen Sie das Auth0-Dashboard auf.
  2. Gehen Sie zu Monitoring > Streams.
  3. Klicken Sie auf Log-Stream erstellen.
  4. Klicken Sie auf die Schaltfläche Benutzerdefinierter Webhook und geben Sie einen Namen für den Webhook ein. Beispiel: Google SecOps-Webhook.
  5. Konfigurieren Sie Folgendes:
    • Nutzlast-URL: Geben Sie die Endpunkt-URL der Google SecOps API ein.
    • Content-Type: Legen Sie den Header Content-Type auf application/json fest. So wird Google SecOps das Format der gesendeten Daten mitgeteilt.
    • Optional: Autorisierungstoken: Konfigurieren Sie ein Secret für zusätzliche Sicherheit. Damit wird die Authentizität der Webhook-Anfragen überprüft.

Nutzlast anpassen: Sie können die an Google SecOps gesendete Nutzlast anpassen, indem Sie die Ereigniskategorie ändern. So können Sie bestimmte Datenpunkte aus dem Auth0-Ereignis auswählen und nach Bedarf für Google SecOps formatieren. Weitere Informationen zu verfügbaren Kontextvariablen und Scripting-Optionen finden Sie in der Auth0-Dokumentation. Die endgültige Nutzlast muss dem erwarteten UDM-Format von Google SecOps entsprechen.

  1. Klicken Sie auf Speichern, um den Webhook zu erstellen.
  2. Das mit dem Hook verknüpfte Ereignis auslösen (z. B. einen neuen Nutzer registrieren oder sich anmelden).
  3. Prüfen Sie in der Google SecOps Console, ob die Logs an Google SecOps gesendet werden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
client_id principal.asset.product_object_id Direkt aus dem Feld client_id zugeordnet.
client_name principal.hostname Direkt aus dem Feld client_name zugeordnet.
connection security_result.description Direkt aus dem Feld connection zugeordnet.
connection_id security_result.rule_id Direkt aus dem Feld connection_id zugeordnet.
date metadata.event_timestamp Wird aus dem Feld date im ISO 8601-Format geparst.
description metadata.description Direkt aus dem Feld description zugeordnet.
details.error security_result.detection_fields Aus dem Feld details.error zugeordnet. Schlüssel ist „Error“.
details.error.oauthError security_result.detection_fields Aus dem Feld details.error.oauthError zugeordnet. Schlüssel ist „oauthError“.
details.error.type security_result.detection_fields Aus dem Feld details.error.type zugeordnet. Schlüssel ist „oauth_error_type“.
details.ipOnAllowlist security_result.detection_fields Aus dem Feld details.ipOnAllowlist zugeordnet. Schlüssel ist „ipOnAllowlist“.
details.link target.url Wird direkt aus dem Feld details.link zugeordnet, sofern vorhanden, andernfalls aus anderen Feldern abgeleitet (siehe unten).
details.request.auth.strategy security_result.detection_fields Aus dem Feld details.request.auth.strategy zugeordnet. Schlüssel ist „strategy“.
details.request.body.app_metadata.blockedReason security_result.detection_fields Aus dem Feld details.request.body.app_metadata.blockedReason zugeordnet. Schlüssel ist „blockedReason“.
details.request.body.app_metadata.customer_id target.user.product_object_id Direkt aus dem Feld details.request.body.app_metadata.customer_id zugeordnet.
details.request.body.app_metadata.migrated security_result.detection_fields Aus dem Feld details.request.body.app_metadata.migrated zugeordnet. Schlüssel ist „migrated“.
details.request.channel security_result.detection_fields Aus dem Feld details.request.channel zugeordnet. Schlüssel ist „channel“.
details.request.method network.http.method Wird direkt aus dem Feld details.request.method nach Umwandlung in Großbuchstaben zugeordnet.
details.request.path target.url Wird direkt aus dem Feld details.request.path zugeordnet, wenn details.link nicht vorhanden ist, andernfalls aus anderen Feldern abgeleitet (siehe unten).
details.response.body.email target.user.email_addresses Direkt aus dem Feld details.response.body.email zugeordnet.
details.response.body.email_verified security_result.detection_fields Aus dem Feld details.response.body.email_verified zugeordnet. Schlüssel ist „email_verified“.
details.response.body.nickname target.user.user_display_name Direkt aus dem Feld details.response.body.nickname zugeordnet.
details.response.body.user_id target.user.userid Direkt aus dem Feld details.response.body.user_id zugeordnet.
details.response.statusCode network.http.response_code Wird direkt aus dem Feld details.response.statusCode nach der Umwandlung in einen Ganzzahlwert zugeordnet.
details.return_to target.url Wird direkt aus dem Feld details.return_to zugeordnet, wenn details.link und details.request.path nicht vorhanden sind, andernfalls aus anderen Feldern abgeleitet (siehe unten).
details.session_id network.session_id Direkt aus dem Feld details.session_id zugeordnet.
details.stats.loginsCount additional.fields Aus dem Feld details.stats.loginsCount zugeordnet. Schlüssel ist „loginsCount“.
details.requiresVerification security_result.detection_fields Aus dem Feld details.requiresVerification zugeordnet. Schlüssel ist „requiresVerification“.
details.to target.user.email_addresses Direkt aus dem Feld details.to zugeordnet.
hostname target.hostname Direkt aus dem Feld hostname zugeordnet.
ip principal.ip Direkt aus dem Feld ip zugeordnet.
js_data.audience target.url Wird direkt aus dem Feld js_data.audience zugeordnet, wenn details.link, details.request.path und details.return_to nicht vorhanden sind.
js_data.details.body.email_verified security_result.detection_fields Aus dem Feld js_data.details.body.email_verified zugeordnet. Schlüssel ist „email_verified“.
js_data.details.body.is_signup security_result.detection_fields Aus dem Feld js_data.details.body.is_signup zugeordnet. Schlüssel ist „is_signup“.
js_data.details.body.transaction.redirect_uri target.url Wird direkt aus dem Feld js_data.details.body.transaction.redirect_uri zugeordnet, wenn details.link, details.request.path, details.return_to und js_data.audience nicht vorhanden sind.
js_data.scope security_result.detection_fields Aus dem Feld js_data.scope zugeordnet. Schlüssel ist „scope“.
js_data.tracking_id security_result.detection_fields Aus dem Feld js_data.tracking_id zugeordnet. Schlüssel ist „tracking_id“.
log_id metadata.product_log_id Direkt aus dem Feld log_id zugeordnet.
metadata.log_type metadata.log_type Direkt aus dem Feld log_type zugeordnet.
metadata.product_name metadata.product_name Legen Sie diesen Wert auf „AUTH_ZERO“ fest.
metadata.vendor_name metadata.vendor_name Legen Sie diesen Wert auf „AUTH_ZERO“ fest.
metadata.product_event_type metadata.product_event_type Direkt aus dem Feld type zugeordnet.
network.http.parsed_user_agent network.http.parsed_user_agent Aus dem Feld user_agent geparst.
network.http.user_agent network.http.user_agent Direkt aus dem Feld user_agent zugeordnet.
security_result.action security_result.action Wird durch das Feld type (ALLOW oder BLOCK) bestimmt. Im Parsercode finden Sie bestimmte Zuordnungen.
strategy security_result.detection_fields Aus dem Feld strategy zugeordnet. Schlüssel ist „strategy“.
strategy_type security_result.detection_fields Aus dem Feld strategy_type zugeordnet. Schlüssel ist „strategy_type“.
target.user.email_addresses target.user.email_addresses Wird direkt aus dem Feld user_name zugeordnet, wenn es sich um eine E-Mail-Adresse handelt, andernfalls aus anderen Feldern (siehe oben).
target.user.userid target.user.userid Wird direkt aus dem Feld user_id oder details.response.body.user_id oder user_name zugeordnet, wenn user_id nicht vorhanden ist.
user_agent network.http.user_agent Direkt aus dem Feld user_agent zugeordnet.
user_id target.user.userid Direkt aus dem Feld user_id zugeordnet.
user_name target.user.email_addresses Direkt aus dem Feld user_name zugeordnet. Legen Sie „MACHINE“ fest, wenn security_result.action „ALLOW“ und type „slo“, „sapi“, „s“, „ss“ oder „ssa“ ist. Legen Sie „OTP“ fest, wenn extensions.auth.type „MACHINE“ und type „slo“ ist. Wird durch eine Kombination von Feldern wie type, client_name, ip, hostname und has_user bestimmt. Im Parsercode finden Sie bestimmte Zuordnungen.

Änderungen

2024-03-07

  • Fehlerkorrektur:
  • „data.user_name“ wurde auf „target.user.email_addresses“ zugeordnet.
  • „data.details.body.email_verified“ und „data.details.body.is_signup“ wurden in „security_result.detection_fields“ zugeordnet.
  • „data.details.body.transaction.redirect_uri“ wurde „target.url“ zugeordnet.

2023-06-19

  • Neu erstellter Parser.