Auth0-Protokolle erfassen
Ü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
- 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. Auth0-Protokolle.
- Wählen Sie als Quelltyp Webhook aus.
- Wählen Sie AUTH_ZERO als Protokolltyp aus.
- Klicken Sie auf Weiter.
- 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.
- Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B.
- Klicken Sie auf Weiter.
- Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
- Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.
- 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.
- Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
- Klicken Sie auf Fertig.
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.
Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.
Endpunkt-URL angeben
- Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
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
- Rufen Sie das Auth0-Dashboard auf.
- Gehen Sie zu Monitoring > Streams.
- Klicken Sie auf Log-Stream erstellen.
- Klicken Sie auf die Schaltfläche Benutzerdefinierter Webhook und geben Sie einen Namen für den Webhook ein. Beispiel: Google SecOps-Webhook.
- 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.
- Klicken Sie auf Speichern, um den Webhook zu erstellen.
- Das mit dem Hook verknüpfte Ereignis auslösen (z. B. einen neuen Nutzer registrieren oder sich anmelden).
- 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.