Esse analisador extrai campos dos registros JSON do firewall de aplicativos da Web (WAF) do Cloudflare, transforma e mapeia para o modelo de dados unificado (UDM). Ele processa várias ações do Cloudflare, enriquecendo os dados com metadados e informações de rede antes de estruturar a saída no formato UDM.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
Nome: insira um nome exclusivo que atenda aos requisitos de nome de bucket (por exemplo, cloudflare-waf).
Escolha onde armazenar seus dados: selecione um local.
Escolha uma classe de armazenamento para seus dados: selecione uma classe de armazenamento padrão para o bucket ou escolha Classe automática para gerenciamento automático da classe de armazenamento.
Escolha como controlar o acesso a objetos: selecione não para aplicar a prevenção de acesso público e escolha um modelo de controle de acesso para os objetos do bucket.
Classe de armazenamento: escolha com base nas suas necessidades (por exemplo, Padrão).
Clique em Criar.
Conceder permissões de bucket ao usuário do IAM do Cloudflare
Em Google Cloud, acesse Storage>Navegador>Bucket>Permissões.
Adicione a conta logpush@cloudflare-data.iam.gserviceaccount.com com permissão de administrador de objetos do Storage.
Criar um job de Logpush para registros do WAF usando a interface do Cloudflare
Faça login no Cloudflare.
Acesse Análise e registros>Logpush.
Selecione Criar um job Logpush.
Em Selecionar um destino, escolha Google Cloud Storage.
Insira os seguintes detalhes de destino:
Bucket: Google Cloud Nome do bucket de armazenamento
Caminho: local do bucket no contêiner de armazenamento
Selecione Organizar registros em subpastas diárias.
Clique em Continuar.
Selecione o conjunto de dados Segurança (WAF) para enviar ao armazenamento.
Configure o job logpush:
Digite o Nome do job.
Em "Se os registros corresponderem", selecione os eventos que você quer incluir e/ou remover dos registros. Consulte Filtros para mais informações. Nem todos os conjuntos de dados têm essa opção disponível.
Nos campos Enviar o seguinte, você pode enviar todos os registros para o destino de armazenamento ou escolher seletivamente quais registros quer enviar.
Clique em Enviar.
Configurar feeds
Para configurar um feed, siga estas etapas:
Acesse Configurações do SIEM>Feeds.
Clique em Adicionar novo feed.
Na próxima página, clique em Configurar um único feed.
No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do WAF do Cloudflare).
Selecione Google Cloud Storage como o Tipo de origem.
Selecione WAF do Cloudflare como o Tipo de registro.
Clique em Receber conta de serviço.
Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
URI do GCS: o URL do Cloud Storage.
O URI é um: selecione Diretório que inclui subdiretórios.
Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento do UDM
Campo de registro
Mapeamento do UDM
Lógica
Action
security_result.action_details
O valor de Action do registro bruto é atribuído diretamente a esse campo do UDM.
Action
security_result.action
O valor desse campo é derivado do campo Action no registro bruto. Se Action for "allow", o campo UDM será definido como ALLOW. Se Action for "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" ou "managedchallengeinteractivesolved", o campo UDM será definido como ALLOW_WITH_MODIFICATION. Se Action for "drop", "block" ou "connectionclose", o campo UDM será definido como BLOCK. Se Action for "challengefailed" ou "jschallengefailed", o campo UDM será definido como FAIL. Caso contrário, será definido como UNKNOWN_ACTION.
ClientASN
network.asn
O valor de ClientASN do registro bruto é atribuído diretamente a esse campo de UDM depois de ser convertido em uma string.
ClientASNDescription
additional.fields.key
A chave é definida estaticamente como "ClientASNDescription".
ClientASNDescription
additional.fields.value.string_value
O valor de ClientASNDescription do registro bruto é atribuído diretamente a esse campo do UDM.
ClientCountry
principal.location.country_or_region
O valor de ClientCountry do registro bruto é atribuído diretamente a esse campo do UDM.
ClientIP
principal.ip
O valor de ClientIP do registro bruto é atribuído diretamente a esse campo do UDM.
ClientRefererHost
intermediary.hostname
O valor de ClientRefererHost do registro bruto é atribuído diretamente a esse campo do UDM.
ClientRefererPath
network.http.referral_url
O valor de ClientRefererPath do registro bruto é atribuído diretamente a esse campo do UDM.
ClientRequestHost
target.hostname
O valor de ClientRequestHost do registro bruto é atribuído diretamente a esse campo do UDM.
ClientRequestMethod
network.http.method
O valor de ClientRequestMethod do registro bruto é atribuído diretamente a esse campo do UDM.
ClientRequestPath
target.file.full_path
O valor de ClientRequestPath do registro bruto é atribuído diretamente a esse campo do UDM.
ClientRequestProtocol
network.application_protocol
A parte do protocolo de ClientRequestProtocol (por exemplo, "HTTP" de "HTTP/1.1") é extraído usando grok, convertido para letras maiúsculas e atribuído a esse campo da UDM.
ClientRequestUserAgent
network.http.user_agent
O valor de ClientRequestUserAgent do registro bruto é atribuído diretamente a esse campo do UDM.
Datetime
metadata.event_timestamp
O valor de Datetime do registro bruto é analisado como um carimbo de data/hora RFC 3339 e atribuído a esse campo da UDM.
EdgeColoCode
additional.fields.key
A chave é definida estaticamente como "EdgeColoCode".
EdgeColoCode
additional.fields.value.string_value
O valor de EdgeColoCode do registro bruto é atribuído diretamente a esse campo do UDM.
EdgeResponseStatus
network.http.response_code
O valor de EdgeResponseStatus do registro bruto é atribuído diretamente a esse campo da UDM e convertido em um número inteiro.
Kind
metadata.product_event_type
O valor de Kind do registro bruto é atribuído diretamente a esse campo do UDM.
Metadata.filter
target.resource.attribute.labels.value
O valor de Metadata.filter do registro bruto é atribuído ao campo value de um rótulo em target.resource.attribute.labels. O key desse marcador é definido estaticamente como "Filtro de metadados".
Metadata.type
target.resource.attribute.labels.value
O valor de Metadata.type do registro bruto é atribuído ao campo value de um rótulo em target.resource.attribute.labels. O key desse marcador é definido estaticamente como "Tipo de metadados". O valor desse campo é derivado com base na presença e nos valores de ClientIP, ClientRequestHost e app_protocol. Consulte o código do analisador para conferir a lógica específica. Definido estaticamente como "Cloudflare". Definido estaticamente como "Agregador de registros do Cloudflare". Definido estaticamente como "CLOUDFLARE_WAF".
RayID
metadata.product_log_id
O valor de RayID do registro bruto é atribuído diretamente a esse campo do UDM.
RuleID
security_result.rule_id
O valor de RuleID do registro bruto é atribuído diretamente a esse campo do UDM.
Source
security_result.rule_name
O valor de Source do registro bruto é atribuído diretamente a esse campo do UDM.
timestamp
metadata.event_timestamp, events.timestamp
O valor de timestamp do registro bruto é atribuído diretamente a esses campos da UDM.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-21 UTC."],[[["\u003cp\u003eThis guide explains how to collect and ingest Cloudflare Web Application Firewall (WAF) logs into Google SecOps, using a parser that transforms and maps the data to the Unified Data Model (UDM).\u003c/p\u003e\n"],["\u003cp\u003eTo start, you need a Google SecOps instance, privileged access to both Google Cloud and Cloudflare, and a Cloudflare Enterprise plan to create a Google Cloud Storage bucket and set the necessary permissions.\u003c/p\u003e\n"],["\u003cp\u003eA Logpush job must be created within the Cloudflare UI, specifying the Google Cloud Storage bucket as the destination and selecting the "Security (WAF)" dataset for log collection.\u003c/p\u003e\n"],["\u003cp\u003eWithin Google SecOps, a new feed must be configured, selecting "Google Cloud Storage" as the source and "Cloudflare WAF" as the log type, also adding necessary details like the GCS URI and source deletion options.\u003c/p\u003e\n"],["\u003cp\u003eThe Cloudflare WAF logs are mapped to the UDM format, including mapping \u003ccode\u003eAction\u003c/code\u003e, \u003ccode\u003eClientIP\u003c/code\u003e, \u003ccode\u003eClientASN\u003c/code\u003e, \u003ccode\u003eClientRequestHost\u003c/code\u003e and other key fields to their corresponding UDM fields like \u003ccode\u003esecurity_result.action_details\u003c/code\u003e, \u003ccode\u003eprincipal.ip\u003c/code\u003e, and \u003ccode\u003etarget.hostname\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Collect Cloudflare WAF logs\n===========================\n\nSupported in: \nGoogle secops [SIEM](/chronicle/docs/secops/google-secops-siem-toc)\n| **Note:** This feature is covered by [Pre-GA Offerings Terms](https://chronicle.security/legal/service-terms/) of the Google Security Operations Service Specific Terms. Pre-GA features might have limited support, and changes to pre-GA features might not be compatible with other pre-GA versions. For more information, see the [Google SecOps Technical Support Service guidelines](https://chronicle.security/legal/technical-support-services-guidelines/) and the [Google SecOps Service Specific Terms](https://chronicle.security/legal/service-terms/).\n\nThis parser extracts fields from Cloudflare Web Application Firewall (WAF) JSON logs, transforms and maps them to the Unified Data Model (UDM). It handles various Cloudflare actions, enriching the data with metadata and network information before structuring the output into the UDM format.\n\nBefore you begin\n----------------\n\nEnsure that you have the following prerequisites:\n\n- Google SecOps instance.\n- Privileged access to Google Cloud.\n- Cloudflare Enterprise plan.\n- Privileged access to Cloudflare.\n\nCreate a Google Cloud Storage Bucket\n------------------------------------\n\n1. Sign in to the Google Cloud console.\n2. Go to the **Cloud Storage Buckets** page.\n\n [Go to Buckets](https://console.cloud.google.com/storage/browser)\n3. Click **Create**.\n\n4. Configure the bucket:\n\n - **Name** : enter a unique name that meets the bucket name requirements (for example, **cloudflare-waf**).\n - **Choose where to store your data**: select a location.\n - **Choose a storage class for your data** : either select a **default storage class** for the bucket, or select **Autoclass** for automatic storage class management.\n - **Choose how to control access to objects** : select **not** to enforce **public access prevention** , and select an **access control model** for your bucket's objects.\n\n | **Note:** If public access prevention is already enforced by your project's organization policy, the **Prevent public access** checkbox is locked.\n - **Storage class** : Choose based on your needs (for example, **Standard**).\n5. Click **Create**.\n\n| **Note:** Do not set a retention policy, as the last data entry may need to be overwritten in case of a timeout.\n\nGrant bucket permissions to Cloudflare IAM user\n-----------------------------------------------\n\n1. In Google Cloud, go to **Storage** \\\u003e **Browser** \\\u003e **Bucket** \\\u003e **Permissions**.\n2. Add the account logpush@cloudflare-data.iam.gserviceaccount.com with Storage Object Admin permission.\n\nCreate a Logpush Job for WAF Logs using Cloudflare UI\n-----------------------------------------------------\n\n1. Sign in to Cloudflare.\n2. Go to **Analytics \\& Logs** \\\u003e **Logpush**.\n3. Select **Create a Logpush job**.\n4. In **Select a destination** , choose **Google Cloud Storage**.\n5. Enter the following destination details:\n - **Bucket**: Google Cloud Storage bucket name\n - **Path**: Bucket location within the storage container\n - Select **Organize logs into daily subfolders**\n6. Click **Continue**.\n\n| **Note:** To prove ownership, Cloudflare will send a file to your designated destination. To find the token, select the Open button in the **Overview** tab of the ownership challenge file, then paste it into the Cloudflare dashboard to verify your access to the bucket. Enter the Ownership Token and select Continue.\n\n1. Select the **Security (WAF)** dataset to push to the storage.\n2. Configure the logpush job:\n - Enter the **Job name**.\n - Under If logs match, you can select the events to include and/or remove from your logs. Refer to **Filters** for more information. Not all datasets have this option available.\n - In **Send the following** fields, you can choose to either push all logs to your storage destination or selectively choose which logs you want to push.\n3. Click **Submit**.\n\nSet up feeds\n------------\n\nTo configure a feed, follow these steps:\n\n1. Go to **SIEM Settings** \\\u003e **Feeds**.\n2. Click **Add New Feed**.\n3. On the next page, click **Configure a single feed**.\n4. In the **Feed name** field, enter a name for the feed (for example, **Cloudflare WAF Logs**).\n5. Select **Google Cloud Storage V2** as the **Source type**.\n6. Select **Cloudflare WAF** as the **Log type**.\n7. Click **Get Service Account**.\n8. Click **Next**.\n9. Specify values for the following input parameters:\n\n - **Storage Bucket URI**: the Cloud Storage URL.\n - **Source deletion options**: select the deletion option according to your preference.\n\n | **Note:** If you select the `Delete transferred files` or `Delete transferred files and empty directories` option, make sure that you granted appropriate permissions to the service account. \\* **Maximum File Age**: Includes files modified in the last number of days. Default is 180 days.\n10. Click **Next**.\n\n11. Review your new feed configuration in the **Finalize** screen, and then click **Submit**.\n\nUDM Mapping Table\n-----------------\n\n**Need more help?** [Get answers from Community members and Google SecOps professionals.](https://security.googlecloudcommunity.com/google-security-operations-2)"]]