Raccogliere i log di Cloudflare

Supportato in:

Questo documento spiega come importare i log di Cloudflare in Google Security Operations utilizzando Webhook (destinazione HTTP) o Google Cloud Storage. Cloudflare produce dati operativi sotto forma di log per DNS, richieste HTTP, eventi firewall, Zero Trust e CASB. Questa integrazione ti consente di inviare questi log a Google SecOps per l'analisi e il monitoraggio.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps.
  • Account Cloudflare Enterprise con Logpush attivato.
  • Per il metodo Webhook: accesso con privilegi alla console Google Cloud.
  • Per il metodo GCS: accesso con privilegi a Google Cloud Storage.

Metodo 1: configura l'esportazione dei log di Cloudflare utilizzando il webhook (destinazione HTTP)

Questo metodo consente di trasmettere in streaming i log di Cloudflare direttamente a Google Security Operations senza spazio di archiviazione intermedio, riducendo i costi e semplificando la configurazione.

Configurare un feed webhook in Google SecOps

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Cloudflare Webhook).
  5. Seleziona Webhook come Tipo di origine.
  6. Seleziona Cloudflare come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:
    • Delimitatore di divisione: \n.
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
  9. Fai clic su Avanti.
  10. Controlla la nuova 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 salva la chiave segreta, perché non potrai più visualizzarla.
  13. Vai alla scheda Dettagli.
  14. Copia l'URL dell'endpoint del feed dal campo Endpoint Information (Informazioni sull'endpoint).
  15. Fai clic su Fine.

Crea una chiave API per il feed Webhook

  1. Vai alla pagina Credenziali della console Google Cloud.
  2. Seleziona il tuo progetto (quello associato alla tua istanza di Google SecOps).
  3. Fai clic su Crea credenziali > Chiave API.
  4. Fai clic su Modifica chiave API.
  5. In Restrizioni delle API, seleziona Limita chiave.
  6. Nel menu a discesa Seleziona API, cerca e seleziona API Chronicle.
  7. Fai clic su Salva.
  8. Copia il valore della chiave API.

Configura la destinazione HTTP Cloudflare Logpush

  1. Accedi alla dashboard di Cloudflare.
  2. Seleziona l'account aziendale o il dominio che vuoi utilizzare con Logpush.
  3. Vai ad Analytics e log > Log.
  4. Fai clic su Crea un job Logpush.
  5. In Seleziona una destinazione, scegli Destinazione HTTP.
  6. Inserisci l'URL dell'endpoint HTTP con i parametri di autenticazione:

    <ENDPOINT_URL>?header_X-goog-api-key=<API_KEY>&header_X-Webhook-Access-Key=<SECRET_KEY>
    

    Sostituisci quanto segue:

    • <ENDPOINT_URL>: l'URL dell'endpoint del feed di Google SecOps.
    • <API_KEY>: la chiave API della console Google Cloud (codificata tramite URL se contiene caratteri speciali).
    • <SECRET_KEY>: la chiave segreta del feed webhook (con codifica URL se contiene caratteri speciali).
  7. Fai clic su Continua.

  8. Seleziona il set di dati da inviare (ad esempio Richieste HTTP, Log DNS, Eventi firewall, Log di controllo, Log Zero Trust, Risultati CASB).

  9. Configura il job Logpush:

    • Inserisci il Nome del job.
    • In Se i log corrispondono, configura facoltativamente i filtri.
    • In Invia i seguenti campi, seleziona i campi da includere.
    • Scegli il formato del timestamp:
      • RFC 3339 (consigliato per Google SecOps)
      • Unix (secondi dall'epoca)
      • UnixNano (nanosecondi dall'epoca)
    • Configura la frequenza di campionamento, se necessario.
  10. Fai clic su Invia per creare il job Logpush.

Verificare l'integrazione webhook

Dopo la configurazione, i log dovrebbero essere visualizzati in Google SecOps entro pochi minuti. Per verificare:

  1. Vai a Indagine > Ricerca SIEM.
  2. Cerca i log con l'etichetta di importazione configurata.
  3. Verifica che i log di Cloudflare vengano analizzati correttamente.

Metodo 2: configura l'esportazione dei log di Cloudflare utilizzando Google Cloud Storage

Crea un bucket Google Cloud Storage

  1. Accedi alla console Google Cloud.
  2. Vai alla pagina Cloud Storage > Bucket.
  3. Fai clic su Crea.
  4. Nella pagina Crea un bucket, inserisci le informazioni del bucket:
    • Nome: inserisci un nome univoco che soddisfi i requisiti del nome del bucket (ad esempio cloudflare-data).
    • Tipo di località: seleziona un tipo di località e una regione.
    • Per attivare lo spazio dei nomi gerarchico, fai clic sulla freccia di espansione per espandere Ottimizza per workload orientati ai file e con uso intensivo dei dati, poi seleziona Abilita uno spazio dei nomi gerarchico in questo bucket.
  5. Fai clic su Crea.

Concedere le autorizzazioni Cloudflare al bucket

  1. Nella console Cloud Storage, seleziona il bucket GCS (ad esempio cloudflare-data).
  2. Fai clic sulla scheda Autorizzazioni.
  3. Fai clic su Concedi l'accesso.
  4. Nel campo Aggiungi entità, inserisci logpush@cloudflare-data.iam.gserviceaccount.com.
  5. Nel menu a discesa Assegna i ruoli, seleziona Storage Object Admin.
  6. Fai clic su Salva.

Configurare Cloudflare Logpush in Cloud Storage

  1. Accedi alla dashboard di Cloudflare.
  2. Seleziona l'account aziendale o il dominio che vuoi utilizzare con Logpush.
  3. Vai ad Analytics e log > Log.
  4. Fai clic su Crea un job Logpush.
  5. In Seleziona una destinazione, scegli Google Cloud Storage.
  6. Inserisci il percorso del bucket GCS (ad esempio, cloudflare-data/logs/).
  7. Fai clic su Continua.

  8. Inserisci il token di proprietà e fai clic su Continua.

  9. Seleziona il set di dati da trasferire allo spazio di archiviazione.

  10. Configura il job Logpush:

    • Inserisci il Nome del job.
    • Nella sezione Se i log corrispondono, puoi selezionare gli eventi da includere e/o rimuovere dai log.
    • In Invia i seguenti campi, scegli i campi da inviare.
    • Scegli il formato del timestamp:
      • RFC 3339 (consigliato per Google SecOps)
      • Unix (secondi dall'epoca)
      • UnixNano (nanosecondi dall'epoca)
    • Configura la frequenza di campionamento, se necessario.
  11. Fai clic su Invia.

Configura un feed in Google SecOps per importare i log Cloudflare da GCS

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Cloudflare GCS Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Cloudflare come Tipo di log.
  7. Fai clic su Ottieni service account.
  8. Fai clic su Avanti.
  9. Specifica i valori per i seguenti parametri di input:

    • URI bucket Cloud Storage: URL del bucket Google Cloud Storage nel formato gs://my-bucket/<value>/.

    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:

      • Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
      • Elimina file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
    • Età massima del file: include i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.

    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.

  10. Fai clic su Avanti.

  11. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Concedi le autorizzazioni IAM al account di servizio Google SecOps

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (ad esempio, cloudflare-data).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Nel campo Aggiungi entità, incolla l'email dell'account di servizio Google SecOps.
  6. Nel menu a discesa Assegna i ruoli, seleziona Visualizzatore oggetti Storage.
  7. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
ClientIP read_only_udm.principal.asset.ip, read_only_udm.principal.ip Il valore viene estratto dal campo ClientIP.
ClientRequestHost read_only_udm.target.asset.hostname, read_only_udm.target.hostname Il valore viene estratto dal campo ClientRequestHost.
ClientRequestMethod read_only_udm.network.http.method Il valore viene estratto dal campo ClientRequestMethod.
ClientRequestURI read_only_udm.target.url Il valore viene estratto dal campo ClientRequestURI. Se il campo ClientRequestHost non è vuoto, il valore viene concatenato al campo ClientRequestHost.
ClientSrcPort read_only_udm.principal.port Il valore viene estratto dal campo ClientSrcPort.
ClientRequestUserAgent read_only_udm.network.http.user_agent Il valore viene estratto dal campo ClientRequestUserAgent.
ClientSSLCipher read_only_udm.network.tls.cipher Il valore viene estratto dal campo ClientSSLCipher.
ClientSSLProtocol read_only_udm.network.tls.version Il valore viene estratto dal campo ClientSSLProtocol.
Country read_only_udm.target.location.country_or_region Il valore viene estratto dal campo Paese.
CreatedAt read_only_udm.metadata.event_timestamp Il valore viene estratto dal campo CreatedAt.
Datetime read_only_udm.metadata.event_timestamp Il valore viene estratto dal campo Data/ora.
DestinationIP read_only_udm.target.asset.ip, read_only_udm.target.ip Il valore viene estratto dal campo DestinationIP.
DestinationPort read_only_udm.target.port Il valore viene estratto dal campo DestinationPort.
DeviceID read_only_udm.principal.asset_id Il valore viene estratto dal campo DeviceID e ha il prefisso "Cloudflare:".
DeviceName read_only_udm.principal.asset.hostname, read_only_udm.principal.hostname Il valore viene estratto dal campo DeviceName.
DstIP read_only_udm.target.asset.ip, read_only_udm.target.ip Il valore viene tratto dal campo DstIP.
DstPort read_only_udm.target.port Il valore viene estratto dal campo DstPort.
EdgeResponseBytes read_only_udm.network.received_bytes Il valore viene estratto dal campo EdgeResponseBytes.
EdgeResponseStatus read_only_udm.network.http.response_code Il valore viene tratto dal campo EdgeResponseStatus.
EdgeServerIP read_only_udm.target.asset.ip, read_only_udm.target.ip Il valore viene estratto dal campo EdgeServerIP.
Email read_only_udm.principal.user.email_addresses, read_only_udm.target.user.email_addresses Il valore viene estratto dal campo Email.
FirewallMatchesActions read_only_udm.security_result.action Il valore è impostato su "ALLOW" se il campo FirewallMatchesAction è "allow", "Allow", "ALLOW", "skip", "SKIP" o "Skip", "ALLOW_WITH_MODIFICATION" se il campo FirewallMatchesAction è "challengeSolved" o "jschallengeSolved", "BLOCK" se il campo FirewallMatchesAction è "drop" o "block", "UNKNOWN_ACTION" se il campo FirewallMatchesAction non è vuoto.
FirewallMatchesRuleIDs read_only_udm.security_result.rule_id Il valore viene preso dal campo FirewallMatchesRuleIDs.
FirewallMatchesSources read_only_udm.security_result.rule_name Il valore viene estratto dal campo FirewallMatchesSources.
HTTPMethod read_only_udm.network.http.method Il valore viene estratto dal campo HTTPMethod.
HTTPHost read_only_udm.target.hostname Il valore viene estratto dal campo HTTPHost.
HTTPVersion read_only_udm.network.application_protocol Il valore viene estratto dal campo HTTPVersion. Se il valore contiene "HTTP", viene sostituito con "HTTP".
IPAddress read_only_udm.target.asset.ip, read_only_udm.target.ip Il valore viene estratto dal campo IPAddress.
IsIsolated read_only_udm.about.labels, read_only_udm.security_result.about.resource.attribute.labels Il valore viene estratto dal campo IsIsolated e convertito in una stringa.
Location read_only_udm.principal.location.name Il valore viene estratto dal campo Località.
OriginIP read_only_udm.intermediary.ip, read_only_udm.target.asset.ip, read_only_udm.target.ip Il valore viene estratto dal campo OriginIP.
OriginPort read_only_udm.target.port Il valore viene estratto dal campo OriginPort.
OwnerID read_only_udm.target.user.product_object_id Il valore viene estratto dal campo OwnerID.
Policy read_only_udm.security_result.rule_name Il valore viene estratto dal campo Policy.
PolicyID read_only_udm.security_result.rule_id Il valore viene estratto dal campo PolicyID.
PolicyName read_only_udm.security_result.rule_name Il valore viene estratto dal campo PolicyName.
Protocol read_only_udm.network.ip_protocol Il valore viene estratto dal campo Protocollo e convertito in maiuscolo.
QueryCategoryIDs read_only_udm.security_result.about.labels, read_only_udm.security_result.about.resource.attribute.labels Il valore viene estratto dal campo QueryCategoryIDs.
QueryName read_only_udm.network.dns.questions.name Il valore viene estratto dal campo QueryName.
QueryNameReversed read_only_udm.network.dns.questions.name Il valore viene estratto dal campo QueryNameReversed.
QuerySize read_only_udm.network.sent_bytes Il valore viene estratto dal campo QuerySize.
QueryType read_only_udm.network.dns.questions.type Il valore viene estratto dal campo QueryType. Se il valore è uno dei tipi di record DNS noti, viene mappato al valore numerico corrispondente. In caso contrario, il valore viene convertito in una stringa.
RData read_only_udm.network.dns.answers Il valore viene estratto dal campo RData. Il campo del tipo viene convertito in un numero intero senza segno.
RayID read_only_udm.metadata.product_log_id Il valore viene estratto dal campo RayID.
Referer read_only_udm.network.http.referral_url Il valore viene estratto dal campo Referer.
RequestID read_only_udm.metadata.product_log_id Il valore viene estratto dal campo RequestID.
ResolverDecision read_only_udm.security_result.summary Il valore viene estratto dal campo ResolverDecision.
ResourceID read_only_udm.target.resource.id, read_only_udm.target.resource.product_object_id Il valore viene estratto dal campo ResourceID.
ResourceType read_only_udm.target.resource.resource_subtype Il valore viene estratto dal campo ResourceType.
SNI read_only_udm.network.tls.client.server_name Il valore viene estratto dal campo SNI.
SecurityAction read_only_udm.security_result.action Il valore è impostato su "ALLOW" se il campo SecurityAction è vuoto o se il campo sec_action è vuoto, su "ALLOW_WITH_MODIFICATION" se il campo SecurityAction è "challengeSolved" o "jschallengeSolved", su "BLOCK" se il campo SecurityAction è "drop" o "block".
SecurityLevel read_only_udm.security_result.severity Il valore viene estratto dal campo SecurityLevel e mappato al valore di gravità UDM corrispondente.
SessionID read_only_udm.network.session_id Il valore viene estratto dal campo SessionID.
SessionStartTime read_only_udm.metadata.event_timestamp Il valore viene estratto dal campo SessionStartTime.
SourceIP read_only_udm.principal.asset.ip, read_only_udm.principal.ip, read_only_udm.src.asset.ip, read_only_udm.src.ip Il valore viene estratto dal campo SourceIP.
SourcePort read_only_udm.principal.port, read_only_udm.src.port Il valore viene estratto dal campo SourcePort.
SrcIP read_only_udm.principal.asset.ip, read_only_udm.principal.ip Il valore viene estratto dal campo SrcIP.
SrcPort read_only_udm.principal.port Il valore viene preso dal campo SrcPort.
TemporaryAccessDuration read_only_udm.network.session_duration.seconds Il valore viene estratto dal campo TemporaryAccessDuration.
Timestamp read_only_udm.metadata.event_timestamp Il valore viene estratto dal campo Timestamp.
Transport read_only_udm.network.ip_protocol Il valore viene estratto dal campo Trasporto e convertito in maiuscolo.
URL read_only_udm.target.url Il valore viene estratto dal campo URL.
UserAgent read_only_udm.network.http.user_agent Il valore viene estratto dal campo UserAgent.
UserID read_only_udm.principal.user.product_object_id Il valore viene estratto dal campo UserID.
UserUID read_only_udm.target.user.product_object_id Il valore viene estratto dal campo UserUID.
VirtualNetworkID read_only_udm.principal.resource.product_object_id Il valore viene estratto dal campo VirtualNetworkID.
WAFAction read_only_udm.security_result.about.labels, read_only_udm.security_result.about.resource.attribute.labels Il valore viene estratto dal campo WAFAction.
WAFAttackScore read_only_udm.security_result.about.resource.attribute.labels Il valore viene estratto dal campo WAFAttackScore.
WAFFlags read_only_udm.security_result.about.resource.attribute.labels Il valore viene estratto dal campo WAFFlags.
WAFProfile read_only_udm.security_result.about.labels, read_only_udm.security_result.about.resource.attribute.labels Il valore viene preso dal campo WAFProfile.
WAFRCEAttackScore read_only_udm.security_result.about.resource.attribute.labels Il valore viene estratto dal campo WAFRCEAttackScore.
WAFRuleID read_only_udm.security_result.about.labels, read_only_udm.security_result.about.resource.attribute.labels, read_only_udm.security_result.threat_id Il valore viene estratto dal campo WAFRuleID.
WAFRuleMessage read_only_udm.security_result.rule_name, read_only_udm.security_result.threat_name Il valore viene estratto dal campo WAFRuleMessage.
WAFSQLiAttackScore read_only_udm.security_result.about.resource.attribute.labels Il valore viene estratto dal campo WAFSQLiAttackScore.
WAFXSSAttackScore read_only_udm.security_result.about.resource.attribute.labels Il valore viene estratto dal campo WAFXSSAttackScore.
ZoneID read_only_udm.additional.fields Il valore viene estratto dal campo ZoneID.
read_only_udm.metadata.log_type Il valore è impostato su "CLOUDFLARE".
read_only_udm.metadata.product_name Il valore è impostato su "Cloudflare Gateway DNS" se il log è un log DNS, "Cloudflare Gateway HTTP" se il log è un log HTTP di Gateway, "Cloudflare Audit" se il log è un audit log o "Web Application Firewall" in caso contrario.
read_only_udm.metadata.vendor_name Il valore è impostato su "Cloudflare".
read_only_udm.network.application_protocol Il valore è impostato su "DNS" se il log è un log DNS, su "HTTP" se il campo HTTPVersion contiene "HTTP" o sul valore del campo Protocollo convertito in maiuscolo se il campo Protocollo non è vuoto e non è "tls" o "TLS".
read_only_udm.network.direction Il valore è impostato su "OUTBOUND" se il campo EgressIP non è vuoto.
read_only_udm.network.http.parsed_user_agent Il valore viene estratto dal campo UserAgent o ClientRequestUserAgent e analizzato utilizzando il filtro parseduseragent.
read_only_udm.extensions.auth.type Il valore è impostato su "MACHINE" se il campo Azione è "login" o "logout".
read_only_udm.metadata.event_type Il valore è impostato su "NETWORK_DNS" se il log è un log DNS, "NETWORK_CONNECTION" se il log è un log HTTP del gateway, "USER_RESOURCE_ACCESS" se il log è un audit log e i campi ActorIP e ActorEmail sono vuoti, "USER_RESOURCE_UPDATE_CONTENT" se il log è un audit log e i campi ResourceType e newvalue non sono vuoti, "USER_LOGIN" se il campo Action è "login", "USER_LOGOUT" se il campo Action è "logout", "USER_RESOURCE_ACCESS" se il campo Email non è vuoto e corrisponde al formato dell'indirizzo email o "NETWORK_CONNECTION" se i campi EgressIP e SourceIP non sono vuoti o se i campi OriginIP e SourceIP non sono vuoti.
read_only_udm.target.file.mime_type Il valore viene estratto dal campo EdgeResponseContentType.
read_only_udm.target.location.country_or_region Il valore viene estratto dal campo Paese.
read_only_udm.target.resource.id Il valore viene estratto dal campo AccountID o dal campo ResourceID.
read_only_udm.target.resource.product_object_id Il valore viene estratto dal campo AccountID, AppUUID o ResourceID.
read_only_udm.target.user.product_object_id Il valore viene estratto dal campo OwnerID o UserUID.

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