Auth0-Logs erfassen
Übersicht
Dieser Parser extrahiert Auth0-Logereignisse aus JSON-formatierten Nachrichten. Es initialisiert UDM-Felder, parst die JSON-Nutzlast, ordnet relevante Felder dem UDM-Schema zu und kategorisiert Ereignisse anhand des Felds type. Dabei werden entsprechende Sicherheitsaktionen und Ereignistypen festgelegt.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Google SecOps-Instanz.
- Auth0-Konto mit den erforderlichen Berechtigungen.
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:
- SIEM-Einstellungen > Feeds
- Content Hub> Content-Pakete
Feeds über „SIEM-Einstellungen“ > „Feeds“ einrichten
So konfigurieren Sie einen Feed:
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. Auth0 Logs (Auth0-Protokolle).
- Wählen Sie Webhook als Quelltyp aus.
- Wählen Sie AUTH_ZERO als Log type (Protokolltyp) aus.
- Klicken Sie auf Weiter.
- Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
\n
. - Asset-Namespace: der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
- Klicken Sie auf Weiter.
- Prüfen Sie die Feedkonfiguration auf dem Bildschirm Finalize (Abschließen) und klicken Sie dann auf Submit (Senden).
- Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
- Kopieren Sie den geheimen Schlüssel und speichern Sie ihn. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen geheimen Schlüssel generieren. Dadurch wird der vorherige geheime Schlüssel jedoch ungültig.
- Kopieren Sie auf dem Tab Details die Feed-Endpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
- Klicken Sie auf Fertig.
Feeds über den Content Hub einrichten
Geben Sie Werte für die folgenden Felder an:
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
\n
.
Erweiterte Optionen
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
- Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
- Asset-Namespace: Der Namespace, der dem Feed zugeordnet ist.
Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
Kopieren Sie den geheimen Schlüssel und speichern Sie ihn. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen geheimen Schlüssel generieren. Dadurch wird der vorherige geheime Schlüssel jedoch ungültig.
Kopieren Sie auf dem Tab Details die Feed-Endpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
API-Schlüssel für den Webhook-Feed erstellen
Rufen Sie die Google Cloud Console > Anmeldedaten auf.
Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.
Schränken Sie den API-Schlüsselzugriff auf die Chronicle API ein.
Endpunkt-URL angeben
- Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed bereitgestellt wird.
Aktivieren Sie die Authentifizierung, indem Sie den API-Schlüssel und den geheimen Schlüssel als Teil des benutzerdefinierten Headers im folgenden Format angeben:
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 Headern unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mit Suchparametern im folgenden Format angeben:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Ersetzen Sie Folgendes:
ENDPOINT_URL
: Die URL des Feed-Endpunkts.API_KEY
: Der API-Schlüssel für die Authentifizierung bei Google Security Operations.SECRET
: Der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.
Auth0-Webhook für Google SecOps konfigurieren
- Rufen Sie das Auth0-Dashboard auf.
- Rufen Sie Monitoring > Streams auf.
- Klicken Sie auf Logstream erstellen.
- Klicken Sie auf die Schaltfläche Benutzerdefinierter Webhook und geben Sie ihr einen Namen Ihrer Wahl. Beispiel: Google SecOps Webhook.
- Konfigurieren Sie Folgendes:
- Nutzlast-URL: Geben Sie die Google SecOps API-Endpunkt-URL ein.
- Content-Type: Legen Sie den Content-Type-Header 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 sie nach Bedarf für Google SecOps formatieren. Weitere Informationen zu den verfügbaren Kontextvariablen und Scripting-Optionen finden Sie in der Auth0-Dokumentation. Die endgültige Nutzlast muss dem erwarteten Google SecOps UDM-Format entsprechen.
- Klicken Sie auf Speichern, um den Webhook zu erstellen.
- Lösen Sie das Ereignis aus, das mit dem Hook verknüpft ist (z. B. einen neuen Nutzer registrieren, sich anmelden).
- Prüfen Sie in der Google SecOps-Konsole, 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 ISO8601-Format geparst. |
description |
metadata.description |
Direkt aus dem Feld description zugeordnet. |
details.error |
security_result.detection_fields |
Zugeordnet aus dem Feld „details.error “. Der Schlüssel ist „Error“. |
details.error.oauthError |
security_result.detection_fields |
Zugeordnet aus dem Feld „details.error.oauthError “. Der Schlüssel ist „oauthError“. |
details.error.type |
security_result.detection_fields |
Zugeordnet aus dem Feld „details.error.type “. Der Schlüssel ist „oauth_error_type“. |
details.ipOnAllowlist |
security_result.detection_fields |
Zugeordnet aus dem Feld „details.ipOnAllowlist “. Der Schlüssel ist „ipOnAllowlist“. |
details.link |
target.url |
Direkt aus dem Feld details.link zugeordnet, sofern vorhanden. Andernfalls wird der Wert aus anderen Feldern abgeleitet (siehe unten). |
details.request.auth.strategy |
security_result.detection_fields |
Zugeordnet aus dem Feld „details.request.auth.strategy “. Der Schlüssel ist „Strategie“. |
details.request.body.app_metadata.blockedReason |
security_result.detection_fields |
Zugeordnet aus dem Feld „details.request.body.app_metadata.blockedReason “. Der 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 |
Zugeordnet aus dem Feld „details.request.body.app_metadata.migrated “. Der Schlüssel ist „migrated“. |
details.request.channel |
security_result.detection_fields |
Zugeordnet aus dem Feld „details.request.channel “. Der Schlüssel ist „channel“. |
details.request.method |
network.http.method |
Direkt aus dem Feld details.request.method zugeordnet, nachdem es in Großbuchstaben konvertiert wurde. |
details.request.path |
target.url |
Direkt aus dem Feld details.request.path zugeordnet, wenn details.link nicht vorhanden ist. Andernfalls wird der Wert 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 |
Zugeordnet aus dem Feld „details.response.body.email_verified “. Der 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 |
Direkt aus dem Feld details.response.statusCode zugeordnet, nachdem es in eine Ganzzahl konvertiert wurde. |
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 wird der Wert 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 |
Zugeordnet aus dem Feld „details.stats.loginsCount “. Der Schlüssel ist „loginsCount“. |
details.requiresVerification |
security_result.detection_fields |
Zugeordnet aus dem Feld „details.requiresVerification “. Der 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 |
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 |
Zugeordnet aus dem Feld „js_data.details.body.email_verified “. Der Schlüssel ist „email_verified“. |
js_data.details.body.is_signup |
security_result.detection_fields |
Zugeordnet aus dem Feld „js_data.details.body.is_signup “. Der Schlüssel ist „is_signup“. |
js_data.details.body.transaction.redirect_uri |
target.url |
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 |
Zugeordnet aus dem Feld „js_data.scope “. Der Schlüssel ist „scope“. |
js_data.tracking_id |
security_result.detection_fields |
Zugeordnet aus dem Feld „js_data.tracking_id “. Der 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 |
Auf „AUTH_ZERO“ festgelegt. |
metadata.vendor_name |
metadata.vendor_name |
Auf „AUTH_ZERO“ festgelegt. |
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. Spezifische Zuordnungen finden Sie im Parsercode. |
strategy |
security_result.detection_fields |
Wird aus dem Feld strategy zugeordnet. Der Schlüssel ist „Strategie“. |
strategy_type |
security_result.detection_fields |
Wird aus dem Feld strategy_type zugeordnet. Der Schlüssel ist „strategy_type“. |
target.user.email_addresses |
target.user.email_addresses |
Direkt aus dem Feld user_name zugeordnet, wenn es sich um eine E-Mail-Adresse handelt. Andernfalls wird es aus anderen Feldern abgeleitet (siehe oben). |
target.user.userid |
target.user.userid |
Direkt aus dem Feld user_id oder details.response.body.user_id oder user_name abgeleitet, 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. Wird auf „MACHINE“ gesetzt, wenn security_result.action „ALLOW“ und type „slo“, „sapi“, „s“, „ss“ oder „ssa“ ist. Auf „OTP“ festlegen, wenn extensions.auth.type „MACHINE“ und type „slo“ ist. Wird durch eine Kombination von Feldern bestimmt, darunter type , client_name , ip , hostname und has_user . Spezifische Zuordnungen finden Sie im Parsercode. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten