Raccogliere i log di Auth0

Supportato in:

Panoramica

Questo parser estrae gli eventi di log di Auth0 dai messaggi in formato JSON. Inizializza i campi UDM, analizza il payload JSON, mappa i campi pertinenti allo schema UDM e classifica gli eventi in base al campo type, impostando azioni di sicurezza e tipi di eventi appropriati.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps.
  • Account Auth0 con le autorizzazioni necessarie.

Configurare i feed

Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:

  • Impostazioni SIEM > Feed
  • Hub dei contenuti > Pacchetti di contenuti

Configura i feed da Impostazioni SIEM > Feed

Per configurare un feed:

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Auth0 Logs).
  5. Seleziona Webhook come Tipo di origine.
  6. Seleziona AUTH_ZERO come Tipo di log.
  7. Fai clic su Avanti.
  8. (Facoltativo) Specifica i valori per i seguenti parametri di input:
    • Delimitatore di suddivisione: il delimitatore utilizzato per separare le righe di log, ad esempio \n.
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
    • Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
  9. Fai clic su Avanti.
  10. Controlla la configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
  11. Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
  12. Copia e memorizza la chiave segreta. Non puoi visualizzare di nuovo questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.
  13. Nella scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni sull'endpoint. Devi specificare questo URL dell'endpoint nell'applicazione client.
  14. Fai clic su Fine.

Configurare i feed dall'hub dei contenuti

Specifica i valori per i seguenti campi:

  • Delimitatore di suddivisione: il delimitatore utilizzato per separare le righe di log, ad esempio \n.

Opzioni avanzate

  • Nome feed: un valore precompilato che identifica il feed.
  • Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
  • Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
  • Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.

  • Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.

  • Copia e memorizza la chiave segreta. Non puoi visualizzare di nuovo questa chiave segreta. Se necessario, puoi rigenerare una nuova chiave segreta, ma questa azione rende obsoleta la chiave segreta precedente.

  • Nella scheda Dettagli, copia l'URL dell'endpoint del feed dal campo Informazioni sull'endpoint. Devi specificare questo URL dell'endpoint nell'applicazione client.

Crea una chiave API per il feed webhook

  1. Vai alla consoleGoogle Cloud > Credenziali.

    Vai a credenziali

  2. Fai clic su Crea credenziali e poi seleziona Chiave API.

  3. Limita l'accesso della chiave API all'API Chronicle.

Specifica l'URL dell'endpoint

  1. Nella tua applicazione client, specifica l'URL dell'endpoint HTTPS fornito nel feed webhook.
  2. Attiva l'autenticazione specificando la chiave API e la chiave segreta come parte dell'intestazione personalizzata nel seguente formato:

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

    Consiglio: specifica la chiave API come intestazione anziché nell'URL. Se il client webhook non supporta le intestazioni personalizzate, puoi specificare la chiave API e la chiave segreta utilizzando parametri di ricerca nel seguente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Sostituisci quanto segue:

  • ENDPOINT_URL: l'URL dell'endpoint del feed.
  • API_KEY: la chiave API per l'autenticazione a Google Security Operations.
  • SECRET: la chiave segreta che hai generato per autenticare il feed.

Configura il webhook Auth0 per Google SecOps

  1. Accedi alla dashboard Auth0.
  2. Vai a Monitoraggio > Stream.
  3. Fai clic su Crea stream di log.
  4. Fai clic sul pulsante Webhook personalizzato e assegnagli un nome a tua scelta. Ad esempio: Webhook Google SecOps.
  5. Configura quanto segue:
    • URL payload: inserisci l'URL dell'endpoint API Google SecOps.
    • Content-Type: imposta l'intestazione Content-Type su application/json. Indica a Google SecOps il formato dei dati inviati.
    • (Facoltativo) Token di autorizzazione: configura un secret per una maggiore sicurezza. Verrà utilizzato per verificare l'autenticità delle richieste webhook.

Personalizza il payload: puoi personalizzare il payload inviato a Google SecOps modificando la categoria evento. In questo modo puoi selezionare punti dati specifici dall'evento Auth0 e formattarli in base alle esigenze di Google SecOps. Per informazioni dettagliate sulle variabili di contesto e sulle opzioni di scripting disponibili, consulta la documentazione di Auth0. Assicurati che il payload finale sia conforme al formato UDM di Google SecOps previsto.

  1. Fai clic su Salva per creare il webhook.
  2. Attiva l'evento associato all'hook (ad esempio, registra un nuovo utente, accedi).
  3. Verifica che i log vengano inviati a Google SecOps controllando il feed nella console Google SecOps.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
client_id principal.asset.product_object_id Mappato direttamente dal campo client_id.
client_name principal.hostname Mappato direttamente dal campo client_name.
connection security_result.description Mappato direttamente dal campo connection.
connection_id security_result.rule_id Mappato direttamente dal campo connection_id.
date metadata.event_timestamp Analizzato dal campo date utilizzando il formato ISO8601.
description metadata.description Mappato direttamente dal campo description.
details.error security_result.detection_fields Mappato dal campo details.error. La chiave è "Errore".
details.error.oauthError security_result.detection_fields Mappato dal campo details.error.oauthError. La chiave è "oauthError".
details.error.type security_result.detection_fields Mappato dal campo details.error.type. La chiave è "oauth_error_type".
details.ipOnAllowlist security_result.detection_fields Mappato dal campo details.ipOnAllowlist. La chiave è "ipOnAllowlist".
details.link target.url Mappato direttamente dal campo details.link, se presente, altrimenti derivato da altri campi (vedi sotto).
details.request.auth.strategy security_result.detection_fields Mappato dal campo details.request.auth.strategy. La chiave è "strategy".
details.request.body.app_metadata.blockedReason security_result.detection_fields Mappato dal campo details.request.body.app_metadata.blockedReason. La chiave è "blockedReason".
details.request.body.app_metadata.customer_id target.user.product_object_id Mappato direttamente dal campo details.request.body.app_metadata.customer_id.
details.request.body.app_metadata.migrated security_result.detection_fields Mappato dal campo details.request.body.app_metadata.migrated. La chiave è "migrated".
details.request.channel security_result.detection_fields Mappato dal campo details.request.channel. La chiave è "channel".
details.request.method network.http.method Mappato direttamente dal campo details.request.method dopo la conversione in maiuscolo.
details.request.path target.url Mappato direttamente dal campo details.request.path se details.link non è presente, altrimenti derivato da altri campi (vedi sotto).
details.response.body.email target.user.email_addresses Mappato direttamente dal campo details.response.body.email.
details.response.body.email_verified security_result.detection_fields Mappato dal campo details.response.body.email_verified. La chiave è "email_verified".
details.response.body.nickname target.user.user_display_name Mappato direttamente dal campo details.response.body.nickname.
details.response.body.user_id target.user.userid Mappato direttamente dal campo details.response.body.user_id.
details.response.statusCode network.http.response_code Mappato direttamente dal campo details.response.statusCode dopo la conversione in numero intero.
details.return_to target.url Mappato direttamente dal campo details.return_to se details.link e details.request.path non sono presenti, altrimenti derivato da altri campi (vedi sotto).
details.session_id network.session_id Mappato direttamente dal campo details.session_id.
details.stats.loginsCount additional.fields Mappato dal campo details.stats.loginsCount. La chiave è "loginsCount".
details.requiresVerification security_result.detection_fields Mappato dal campo details.requiresVerification. La chiave è "requiresVerification".
details.to target.user.email_addresses Mappato direttamente dal campo details.to.
hostname target.hostname Mappato direttamente dal campo hostname.
ip principal.ip Mappato direttamente dal campo ip.
js_data.audience target.url Mappato direttamente dal campo js_data.audience se details.link, details.request.path e details.return_to non sono presenti.
js_data.details.body.email_verified security_result.detection_fields Mappato dal campo js_data.details.body.email_verified. La chiave è "email_verified".
js_data.details.body.is_signup security_result.detection_fields Mappato dal campo js_data.details.body.is_signup. La chiave è "is_signup".
js_data.details.body.transaction.redirect_uri target.url Mappato direttamente dal campo js_data.details.body.transaction.redirect_uri se details.link, details.request.path, details.return_to e js_data.audience non sono presenti.
js_data.scope security_result.detection_fields Mappato dal campo js_data.scope. La chiave è "scope".
js_data.tracking_id security_result.detection_fields Mappato dal campo js_data.tracking_id. La chiave è "tracking_id".
log_id metadata.product_log_id Mappato direttamente dal campo log_id.
metadata.log_type metadata.log_type Mappato direttamente dal campo log_type.
metadata.product_name metadata.product_name Imposta su "AUTH_ZERO".
metadata.vendor_name metadata.vendor_name Imposta su "AUTH_ZERO".
metadata.product_event_type metadata.product_event_type Mappato direttamente dal campo type.
network.http.parsed_user_agent network.http.parsed_user_agent Analizzato dal campo user_agent.
network.http.user_agent network.http.user_agent Mappato direttamente dal campo user_agent.
security_result.action security_result.action Determinato dal campo type (ALLOW o BLOCK). Visualizza il codice del parser per mappature specifiche.
strategy security_result.detection_fields Mappato dal campo strategy. La chiave è "strategy".
strategy_type security_result.detection_fields Mappato dal campo strategy_type. La chiave è "strategy_type".
target.user.email_addresses target.user.email_addresses Mappato direttamente dal campo user_name se è un indirizzo email, altrimenti derivato da altri campi (vedi sopra).
target.user.userid target.user.userid Mappato direttamente dal campo user_id o details.response.body.user_id o user_name se user_id non è presente.
user_agent network.http.user_agent Mappato direttamente dal campo user_agent.
user_id target.user.userid Mappato direttamente dal campo user_id.
user_name target.user.email_addresses Mappato direttamente dal campo user_name. Imposta "MACHINE" se security_result.action è "ALLOW" e type è "slo", "sapi", "s", "ss" o "ssa". Imposta su "OTP" se extensions.auth.type è "MACHINE" e type è "slo". Determinato da una combinazione di campi, tra cui type, client_name, ip, hostname e has_user. Visualizza il codice del parser per mappature specifiche.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.