Collecter les journaux Cloudflare WAF
Cet analyseur extrait les champs des journaux JSON du pare-feu applicatif Web (WAF) Cloudflare, puis les transforme et les mappe au modèle de données unifié (UDM). Il gère diverses actions Cloudflare, en enrichissant les données avec des métadonnées et des informations réseau avant de structurer la sortie au format UDM.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
- Instance Google SecOps.
- Accès privilégié à Google Cloud.
- Formule Cloudflare Enterprise.
- Accès privilégié à Cloudflare.
Créer un bucket de stockage Google Cloud
- Connectez-vous à la console Google Cloud .
Accédez à la page Buckets Cloud Storage.
Cliquez sur Créer.
Configurez le bucket :
- Name (Nom) : saisissez un nom unique qui répond aux exigences de dénomination des buckets (par exemple, cloudflare-waf).
- Choisissez où stocker vos données : sélectionnez un emplacement.
- Choisir une classe de stockage pour vos données : sélectionnez une classe de stockage par défaut pour le bucket, ou bien classe automatique pour une gestion automatique des classes de stockage.
- Choisir comment contrôler l'accès aux objets : sélectionnez non pour appliquer la protection contre l'accès public, puis sélectionnez un modèle de contrôle des accès pour les objets de votre bucket.
- Classe de stockage : choisissez en fonction de vos besoins (par exemple, Standard).
Cliquez sur Créer.
Accorder des autorisations de bucket à l'utilisateur Cloudflare IAM
- Dans Google Cloud, accédez à Storage > Browser > Bucket > Permissions (Stockage > Navigateur > Bucket > Autorisations).
- Ajoutez le compte logpush@cloudflare-data.iam.gserviceaccount.com avec l'autorisation "Administrateur des objets de l'espace de stockage".
Créer un job Logpush pour les journaux WAF à l'aide de l'interface utilisateur Cloudflare
- Connectez-vous à Cloudflare.
- Accédez à Analytics & Logs > Logpush.
- Sélectionnez Create a Logpush job (Créer un job Logpush).
- Dans Sélectionner une destination, sélectionnez Google Cloud Stockage.
- Saisissez les informations suivantes sur la destination :
- Bucket : nom du bucket Storage Google Cloud
- Chemin d'accès : emplacement du bucket dans le conteneur de stockage
- Sélectionnez Organiser les journaux dans des sous-dossiers quotidiens.
- Cliquez sur Continuer.
- Sélectionnez l'ensemble de données Sécurité (WAF) à transférer vers le stockage.
- Configurez le job logpush :
- Saisissez le nom de la tâche.
- Sous "Si les journaux correspondent", vous pouvez sélectionner les événements à inclure et/ou à supprimer de vos journaux. Pour en savoir plus, consultez Filtres. Cette option n'est pas disponible pour tous les ensembles de données.
- Dans les champs Envoyer les éléments suivants, vous pouvez choisir d'envoyer tous les journaux vers votre destination de stockage ou de sélectionner ceux que vous souhaitez envoyer.
- Cliquez sur Envoyer.
Configurer des flux
Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :
- Paramètres SIEM> Flux
- Plate-forme de contenu > Packs de contenu
Configurer des flux à partir de Paramètres SIEM > Flux
Pour configurer un flux, procédez comme suit :
- Accédez à Paramètres SIEM > Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Cloudflare WAF).
- Sélectionnez Google Cloud Storage comme Type de source.
- Sélectionnez Cloudflare WAF comme type de journal.
- Cliquez sur Obtenir un compte de service.
- Cliquez sur Suivant.
Spécifiez les valeurs des paramètres d'entrée suivants :
- URI GCS : URL Cloud Storage.
- URI is a (L'URI est un) : sélectionnez Directory which includes subdirectories (Répertoire incluant des sous-répertoires).
- Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
- URI GCS : URL Cloud Storage.
- URI is a (L'URI est un) : sélectionnez Directory which includes subdirectories (Répertoire incluant des sous-répertoires).
- Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
Options avancées
- Nom du flux : valeur préremplie qui identifie le flux.
- Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
- Espace de noms de l'élément : espace de noms associé au flux.
- Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
Action |
security_result.action_details |
La valeur de Action du journal brut est directement attribuée à ce champ UDM. |
Action |
security_result.action |
La valeur de ce champ est dérivée du champ Action du journal brut. Si Action est défini sur "allow", le champ UDM est défini sur ALLOW . Si Action est défini sur "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" ou "managedchallengeinteractivesolved", le champ UDM est défini sur ALLOW_WITH_MODIFICATION . Si Action est défini sur "drop", "block" ou "connectionclose", le champ UDM est défini sur BLOCK . Si Action est défini sur "challengefailed" ou "jschallengefailed", le champ UDM est défini sur FAIL . Sinon, la valeur est définie sur UNKNOWN_ACTION . |
ClientASN |
network.asn |
La valeur de ClientASN du journal brut est directement attribuée à ce champ UDM après avoir été convertie en chaîne. |
ClientASNDescription |
additional.fields.key |
La clé est définie de manière statique sur "ClientASNDescription". |
ClientASNDescription |
additional.fields.value.string_value |
La valeur de ClientASNDescription du journal brut est directement attribuée à ce champ UDM. |
ClientCountry |
principal.location.country_or_region |
La valeur de ClientCountry du journal brut est directement attribuée à ce champ UDM. |
ClientIP |
principal.ip |
La valeur de ClientIP du journal brut est directement attribuée à ce champ UDM. |
ClientRefererHost |
intermediary.hostname |
La valeur de ClientRefererHost du journal brut est directement attribuée à ce champ UDM. |
ClientRefererPath |
network.http.referral_url |
La valeur de ClientRefererPath du journal brut est directement attribuée à ce champ UDM. |
ClientRequestHost |
target.hostname |
La valeur de ClientRequestHost du journal brut est directement attribuée à ce champ UDM. |
ClientRequestMethod |
network.http.method |
La valeur de ClientRequestMethod du journal brut est directement attribuée à ce champ UDM. |
ClientRequestPath |
target.file.full_path |
La valeur de ClientRequestPath du journal brut est directement attribuée à ce champ UDM. |
ClientRequestProtocol |
network.application_protocol |
Partie protocole de ClientRequestProtocol (par exemple, "HTTP" de "HTTP/1.1") est extrait à l'aide de grok, converti en majuscules et attribué à ce champ UDM. |
ClientRequestUserAgent |
network.http.user_agent |
La valeur de ClientRequestUserAgent du journal brut est directement attribuée à ce champ UDM. |
Datetime |
metadata.event_timestamp |
La valeur de Datetime du journal brut est analysée en tant qu'horodatage RFC 3339 et attribuée à ce champ UDM. |
EdgeColoCode |
additional.fields.key |
La clé est définie de manière statique sur "EdgeColoCode". |
EdgeColoCode |
additional.fields.value.string_value |
La valeur de EdgeColoCode du journal brut est directement attribuée à ce champ UDM. |
EdgeResponseStatus |
network.http.response_code |
La valeur de EdgeResponseStatus du journal brut est directement attribuée à ce champ UDM et convertie en entier. |
Kind |
metadata.product_event_type |
La valeur de Kind du journal brut est directement attribuée à ce champ UDM. |
Metadata.filter |
target.resource.attribute.labels.value |
La valeur de Metadata.filter du journal brut est attribuée au champ value d'un libellé dans target.resource.attribute.labels . Le key de ce libellé est défini de manière statique sur "Filtre de métadonnées". |
Metadata.type |
target.resource.attribute.labels.value |
La valeur de Metadata.type du journal brut est attribuée au champ value d'un libellé dans target.resource.attribute.labels . Le key de ce libellé est défini de manière statique sur "Type de métadonnées". La valeur de ce champ est dérivée en fonction de la présence et des valeurs de ClientIP , ClientRequestHost et app_protocol . Consultez le code du parseur pour connaître la logique spécifique. Défini de manière statique sur "Cloudflare". Défini de manière statique sur "Cloudflare log Aggregator". Valeur statique définie sur "CLOUDFLARE_WAF". |
RayID |
metadata.product_log_id |
La valeur de RayID du journal brut est directement attribuée à ce champ UDM. |
RuleID |
security_result.rule_id |
La valeur de RuleID du journal brut est directement attribuée à ce champ UDM. |
Source |
security_result.rule_name |
La valeur de Source du journal brut est directement attribuée à ce champ UDM. |
timestamp |
metadata.event_timestamp , events.timestamp |
La valeur de timestamp du journal brut est directement attribuée à ces champs UDM. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.