Collecter les journaux Imperva WAF

Compatible avec :

Ce document explique comment collecter les journaux du pare-feu applicatif Web (WAF) Imperva vers Google Security Operations à l'aide d'une API (extraction) ou d'Amazon S3 (envoi). L'analyseur transforme les journaux des formats SYSLOG+KV, JSON, CEF et LEEF en un modèle de données unifié (UDM). Il traite différentes structures de journaux, extrait les champs pertinents, les normalise en attributs UDM et enrichit les données avec des informations contextuelles pour une analyse de sécurité améliorée.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Type d'ingestion (API ou Amazon S3) qui correspond le mieux à vos exigences de configuration.
  • Instance Google SecOps.
  • Accès privilégié à AWS.
  • Accès privilégié à Imperva WAF.

Collecter les journaux Imperva WAF à l'aide de l'API

Configurer un utilisateur en lecture seule pour Imperva WAF

  1. Connectez-vous à la console Imperva avec un compte privilégié.
  2. Accédez à Paramètres > Utilisateurs et rôles.
  3. Cliquez sur Ajouter un utilisateur.
  4. Renseignez les champs obligatoires :
    • Nom d'utilisateur : saisissez un nom d'utilisateur unique.
    • Mot de passe : définissez un mot de passe sécurisé.
    • Adresse e-mail : indiquez l'adresse e-mail de l'utilisateur.
    • Dans la section Rôles, sélectionnez le rôle Lecteur.
  5. Cliquez sur Enregistrer pour créer l'utilisateur avec un accès en lecture seule.

Facultatif : Configurer l'utilisateur Reader en tant qu'utilisateur "API uniquement"

  1. Dans la liste Utilisateurs, recherchez l'utilisateur que vous venez de créer.
  2. Cliquez sur le bouton Actions (trois points) à côté du nom de l'utilisateur.
  3. Sélectionnez Définir comme utilisateur API uniquement.

Générer l'ID et la clé API

  1. Dans la liste Utilisateurs, sélectionnez l'utilisateur que vous venez de créer.
  2. Sélectionnez Paramètres, puis cliquez sur Clés API.
  3. Cliquez sur Ajouter une clé API.
  4. Renseignez les champs obligatoires :
    • Nom : saisissez un nom descriptif pour la clé API.
    • Facultatif : Description : saisissez une description facultative.
    • Dans la liste La clé API expirera dans, sélectionnez Jamais.
    • Pour l'activer, sélectionnez État.
  5. Cliquez sur Enregistrer.

Le système affiche l'ID et la clé API. Copiez et enregistrez ces identifiants, car ils ne s'afficheront plus.

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 :

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux WAF Imperva Incapsula).
  5. Sélectionnez API tierce comme type de source.
  6. Sélectionnez Imperva comme type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :
    • En-tête HTTP d'authentification : saisissez l'ID et la clé de l'API Imperva sur deux lignes : apiId:<YOUR_API_ID> et apiKey:<YOUR_API_KEY>.
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • En-tête HTTP d'authentification : saisissez l'ID et la clé de l'API Imperva sur deux lignes : apiId:<YOUR_API_ID> et apiKey:<YOUR_API_KEY>.

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.

Collecter les journaux Imperva WAF à l'aide d'Amazon S3

Configurer AWS IAM et S3

  1. Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur : Créer un bucket.
  2. Enregistrez le nom et la région du bucket pour une utilisation ultérieure.
  3. Créez un utilisateur en suivant ce guide de l'utilisateur : Créer un utilisateur IAM.
  4. Sélectionnez l'utilisateur créé.
  5. Sélectionnez l'onglet Informations d'identification de sécurité.
  6. Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
  7. Sélectionnez Service tiers comme Cas d'utilisation.
  8. Cliquez sur Suivant.
  9. Facultatif : Ajoutez un tag de description.
  10. Cliquez sur Créer une clé d'accès.
  11. Cliquez sur Download .csv file (Télécharger le fichier .csv), puis enregistrez la clé d'accès et la clé d'accès secrète pour une utilisation ultérieure.
  12. Cliquez sur OK.
  13. Sélectionnez l'onglet Autorisations.
  14. Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
  15. Sélectionnez Ajouter des autorisations.
  16. Sélectionnez Joindre directement des règles.
  17. Recherchez et sélectionnez la règle AmazonS3FullAccess.
  18. Cliquez sur Suivant.
  19. Cliquez sur Ajouter des autorisations.

Configurer la connexion Imperva WAF Amazon S3

  1. Connectez-vous à la console Imperva avec un compte privilégié.
  2. Accédez à Journaux> Configuration des journaux.
  3. Sélectionnez Amazon S3.
  4. Renseignez les champs obligatoires :
    • Clé d'accès
    • Clé secrète
    • Chemin d'accès : saisissez le chemin d'accès au format suivant : <Amazon S3 bucket name>/<log folder>. Exemple : MyBucket/MyIncapsulaLogFolder.
  5. Cliquez sur Tester la connexion pour effectuer un cycle de test complet au cours duquel un fichier de test est transféré vers le dossier désigné.
  6. Sélectionnez CEF comme format pour les fichiers journaux.
  7. Par défaut, les fichiers journaux sont compressés. Définissez l'option pour ne pas compresser les fichiers.

Configurer un flux dans Google SecOps pour ingérer les journaux Imperva WAF depuis Amazon S3

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Imperva WAF Logs).
  4. Sélectionnez Amazon S3 comme Type de source.
  5. Sélectionnez Imperva comme type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :

    • Région : région dans laquelle se trouve le bucket Amazon S3.
    • URI S3 : URI du bucket.
      • s3://your-log-bucket-name/
      • Remplacez your-log-bucket-name par le nom réel du bucket.
    • L'URI est : sélectionnez Répertoire ou Répertoire incluant des sous-répertoires.
    • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
    • ID de clé d'accès : clé d'accès utilisateur ayant accès au bucket S3.
    • Clé d'accès secrète : clé secrète de l'utilisateur ayant accès au bucket S3.
    • Espace de noms de l'élément : espace de noms de l'élément.
    • Libellés d'ingestion : libellé à appliquer aux événements de ce flux.
  8. Cliquez sur Suivant.

  9. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Table de mappage UDM

Champ du journal Mappage UDM Logique
account_id target.user.userid ID du compte à partir de l'objet JSON
agir security_result.action Si act est allowed, alert, commence par REQ_PASSED ou commence par REQ_CACHED, définissez la valeur sur ALLOW. Si act est deny, blocked, commence par REQ_BLOCKED ou commence par REQ_CHALLENGE, définissez la valeur sur BLOCK. Si act correspond à l'expression régulière (?i)REQ_BAD, la valeur est définie sur FAIL. Sinon, définissez-la sur UNKNOWN_ACTION.
application network.application_protocol Nom remplacé par kv.app. Converti en majuscules.
calCountryOrRegion principal.location.country_or_region Nom remplacé par calCountryOrRegion.
cat security_result.action_details Si cat commence par REQ_PASSED ou REQ_CACHED, définissez action sur ALLOW et action_details sur une description basée sur la valeur de cat. Si cat commence par REQ_BAD, définissez action sur FAIL et action_details sur une description basée sur la valeur de cat. Si cat commence par REQ_BLOCKED ou REQ_CHALLENGE, définissez action sur BLOCK et action_details sur une description basée sur la valeur de cat.
cicode principal.location.city Nom remplacé par cicode.
classified_client security_result.detection_fields Si classified_client n'est pas vide, créez une entrée detection_fields avec la clé classified_client et la valeur classified_client.
client.domain principal.hostname, principal.asset.hostname Nom remplacé par client.domain.
client.geo.country_iso_code principal.location.country_or_region Nom remplacé par client.geo.country_iso_code.
client.ip principal.ip, principal.asset.ip Fusionné avec principal.ip et principal.asset.ip.
cn1 network.http.response_code Nom remplacé par cn1. Converti en entier.
context_key target.resource.name Nom remplacé par context_key.
pays principal.location.country_or_region Nom remplacé par country.
credentials_leaked security_result.detection_fields Converti en chaîne. Si elle n'est pas vide, créez une entrée detection_fields avec la clé credentials_leaked et la valeur credentials_leaked.
cs1 security_result.detection_fields Si cs1 n'est pas vide, NA ou , create a newdetection_fieldsentry with keycs1Labeland valuecs1.
cs1Label security_result.detection_fields Utilisé comme clé pour l'entrée detection_fields créée à partir de cs1.
cs2 security_result.detection_fields Si cs2 n'est pas vide, créez une entrée detection_fields avec la clé cs2Label et la valeur cs2.
cs2Label security_result.detection_fields Utilisé comme clé pour l'entrée detection_fields créée à partir de cs2.
cs3 security_result.detection_fields Si cs3 n'est pas vide, - ou `, create a newdetection_fieldsentry with keycs3Labeland valuecs3`.
cs3Label security_result.detection_fields Utilisé comme clé pour l'entrée detection_fields créée à partir de cs3.
cs4 security_result.detection_fields Si cs4 n'est pas vide, créez une entrée detection_fields avec la clé cs4Label et la valeur cs4.
cs4Label security_result.detection_fields Utilisé comme clé pour l'entrée detection_fields créée à partir de cs4.
cs5 security_result.detection_fields Si cs5 n'est pas vide, créez une entrée detection_fields avec la clé cs5Label et la valeur cs5.
cs5Label security_result.detection_fields Utilisé comme clé pour l'entrée detection_fields créée à partir de cs5.
cs6 principal.application Nom remplacé par cs6.
cs7 principal.location.region_latitude Si cs7Label est latitude, il est renommé principal.location.region_latitude. Convertie en float.
cs7Label Si cs7Label est défini sur latitude, il est utilisé pour déterminer le mappage de cs7.
cs8 principal.location.region_longitude Si cs8Label est longitude, il est renommé principal.location.region_longitude. Convertie en float.
cs8Label Si cs8Label est défini sur longitude, il est utilisé pour déterminer le mappage de cs8.
cs9 security_result.rule_name, extensions.vulns.vulnerabilities.name Si cs9 n'est pas vide, définissez-le sur security_result.rule_name et créez une entrée vulnerabilities avec le nom cs9.
Client target.user.user_display_name Nom remplacé par Customer.
declared_client security_result.detection_fields Si declared_client n'est pas vide, créez une entrée detection_fields avec la clé declared_client et la valeur declared_client.
description security_result.threat_name Nom remplacé par description.
deviceExternalId network.community_id Nom remplacé par deviceExternalId.
deviceReceiptTime metadata.event_timestamp Analysé comme une date et défini sur metadata.event_timestamp. Si ce champ est vide, log_timestamp ou kv.start est utilisé à la place.
dhost target.hostname Nom remplacé par kv.dhost.
dproc security_result.category_details Nom remplacé par dproc.
dpt target.port Nom remplacé par kv.dpt. Converti en entier.
dst target.ip, target.asset.ip Si dst n'est pas vide, il est fusionné dans target.ip et target.asset.ip.
dstPort target.port Nom remplacé par dstPort. Converti en entier.
duser target.user.userid Si duser ne correspond pas à l'expression régulière .*?Alert.* et n'est pas vide, il est renommé target.user.userid.
end security_result.detection_fields Si end n'est pas vide, créez une entrée detection_fields avec la clé event_end_time et la valeur end.
event.id ID de l'événement provenant de l'objet JSON
event.provider principal.user.user_display_name Nom remplacé par event.provider.
failed_logins_last_24h security_result.detection_fields Converti en chaîne. Si elle n'est pas vide, créez une entrée detection_fields avec la clé failed_logins_last_24h et la valeur failed_logins_last_24h.
fileId network.session_id Nom remplacé par fileId.
filePermission security_result.detection_fields Si filePermission n'est pas vide, créez une entrée detection_fields avec la clé filePermission et la valeur filePermission.
fileType security_result.detection_fields Si fileType n'est pas vide, créez une entrée detection_fields avec la clé fileType et la valeur fileType.
fingerprint security_result.detection_fields Si fingerprint n'est pas vide, créez une entrée detection_fields avec la clé log_imperva_fingerprint et la valeur fingerprint.
flexString1 network.http.response_code Nom remplacé par kv.flexString1. Converti en entier.
http.request.body.bytes network.sent_bytes Converti en entier non signé. Nom remplacé par http.request.body.bytes.
http.request.method network.http.method Nom remplacé par http.request.method.
imperva.abp.apollo_rule_versions security_result.detection_fields Pour chaque entrée dans imperva.abp.apollo_rule_versions, créez une entrée detection_fields avec la clé apollo_rule_versions_{index} et une valeur égale à l'entrée.
imperva.abp.bot_behaviors security_result.detection_fields Pour chaque entrée dans imperva.abp.bot_behaviors, créez une entrée detection_fields avec la clé bot_behaviors_{index} et une valeur égale à l'entrée.
imperva.abp.bot_deciding_condition_ids security_result.detection_fields Pour chaque entrée dans imperva.abp.bot_deciding_condition_ids, créez une entrée detection_fields avec la clé bot_deciding_condition_ids_{index} et une valeur égale à l'entrée.
imperva.abp.bot_deciding_condition_names security_result.detection_fields Pour chaque entrée dans imperva.abp.bot_deciding_condition_names, créez une entrée detection_fields avec la clé bot_deciding_condition_names_{index} et une valeur égale à l'entrée.
imperva.abp.bot_triggered_condition_ids security_result.detection_fields Pour chaque entrée dans imperva.abp.bot_triggered_condition_ids, créez une entrée detection_fields avec la clé bot_triggered_condition_ids_{index} et une valeur égale à l'entrée.
imperva.abp.bot_triggered_condition_names security_result.detection_fields Pour chaque entrée dans imperva.abp.bot_triggered_condition_names, créez une entrée detection_fields avec la clé bot_triggered_condition_names_{index} et une valeur égale à l'entrée.
imperva.abp.bot_violations security_result.detection_fields Pour chaque entrée dans imperva.abp.bot_violations, créez une entrée detection_fields avec la clé bot_violations_{index} et une valeur égale à l'entrée.
imperva.abp.customer_request_id network.session_id Nom remplacé par imperva.abp.customer_request_id.
imperva.abp.headers_accept_encoding security_result.detection_fields Si imperva.abp.headers_accept_encoding n'est pas vide, créez une entrée detection_fields avec la clé Accept Encoding et la valeur imperva.abp.headers_accept_encoding.
imperva.abp.headers_accept_language security_result.detection_fields Si imperva.abp.headers_accept_language n'est pas vide, créez une entrée detection_fields avec la clé Accept Language et la valeur imperva.abp.headers_accept_language.
imperva.abp.headers_connection security_result.detection_fields Si imperva.abp.headers_connection n'est pas vide, créez une entrée detection_fields avec la clé headers_connection et la valeur imperva.abp.headers_connection.
imperva.abp.headers_referer network.http.referral_url Nom remplacé par imperva.abp.headers_referer.
imperva.abp.hsig security_result.detection_fields Si imperva.abp.hsig n'est pas vide, créez une entrée detection_fields avec la clé hsig et la valeur imperva.abp.hsig.
imperva.abp.monitor_action security_result.action, security_result.severity Si imperva.abp.monitor_action correspond à l'expression régulière (?i)allow, définissez security_action sur ALLOW et severity sur INFORMATIONAL. Si imperva.abp.monitor_action correspond à l'expression régulière (?i)captcha ou (?i)block, définissez security_action sur BLOCK.
imperva.abp.pid principal.process.pid Nom remplacé par imperva.abp.pid.
imperva.abp.policy_id security_result.detection_fields Si imperva.abp.policy_id n'est pas vide, créez une entrée detection_fields avec la clé Policy Id et la valeur imperva.abp.policy_id.
imperva.abp.policy_name security_result.detection_fields Si imperva.abp.policy_name n'est pas vide, créez une entrée detection_fields avec la clé Policy Name et la valeur imperva.abp.policy_name.
imperva.abp.random_id additional.fields Si imperva.abp.random_id n'est pas vide, créez une entrée additional.fields avec la clé Random Id et la valeur imperva.abp.random_id.
imperva.abp.request_type principal.labels Si imperva.abp.request_type n'est pas vide, créez une entrée principal.labels avec la clé request_type et la valeur imperva.abp.request_type.
imperva.abp.selector security_result.detection_fields Si imperva.abp.selector n'est pas vide, créez une entrée detection_fields avec la clé selector et la valeur imperva.abp.selector.
imperva.abp.selector_derived_id security_result.detection_fields Si imperva.abp.selector_derived_id n'est pas vide, créez une entrée detection_fields avec la clé selector_derived_id et la valeur imperva.abp.selector_derived_id.
imperva.abp.tls_fingerprint security_result.description Nom remplacé par imperva.abp.tls_fingerprint.
imperva.abp.token_id target.resource.product_object_id Nom remplacé par imperva.abp.token_id.
imperva.abp.zuid additional.fields Si imperva.abp.zuid n'est pas vide, créez une entrée additional.fields avec la clé zuid et la valeur imperva.abp.zuid.
imperva.additional_factors additional.fields Pour chaque entrée dans imperva.additional_factors, créez une entrée additional.fields avec la clé additional_factors_{index} et une valeur égale à l'entrée.
imperva.audit_trail.event_action security_result.detection_fields Si imperva.audit_trail.event_action n'est pas vide, créez une entrée detection_fields avec la clé imperva.audit_trail.event_action et la valeur imperva.audit_trail.event_action_description.
imperva.audit_trail.event_action_description security_result.detection_fields Utilisé comme valeur pour l'entrée detection_fields créée à partir de imperva.audit_trail.event_action.
imperva.audit_trail.event_context security_result.detection_fields Si imperva.audit_trail.event_context n'est pas vide, créez une entrée detection_fields avec la clé imperva.audit_trail.event_context et la valeur imperva.audit_trail.event_context_description.
imperva.audit_trail.event_context_description security_result.detection_fields Utilisé comme valeur pour l'entrée detection_fields créée à partir de imperva.audit_trail.event_context.
imperva.country principal.location.country_or_region Nom remplacé par imperva.country.
imperva.declared_client security_result.detection_fields Si imperva.declared_client n'est pas vide, créez une entrée detection_fields avec la clé declared_client et la valeur imperva.declared_client.
imperva.device_reputation additional.fields Pour chaque entrée de imperva.device_reputation, créez une entrée additional.fields avec la clé device_reputation et une valeur de liste contenant l'entrée.
imperva.domain_risk security_result.detection_fields Si imperva.domain_risk n'est pas vide, créez une entrée detection_fields avec la clé domain_risk et la valeur imperva.domain_risk.
imperva.failed_logins_last_24h security_result.detection_fields Converti en chaîne. Si elle n'est pas vide, créez une entrée detection_fields avec la clé failed_logins_last_24h et la valeur failed_logins_last_24h.
imperva.fingerprint security_result.detection_fields Si imperva.fingerprint n'est pas vide, créez une entrée detection_fields avec la clé log_imperva_fingerprint et la valeur imperva.fingerprint.
imperva.ids.account_id metadata.product_log_id Nom remplacé par imperva.ids.account_id.
imperva.ids.account_name metadata.product_event_type Nom remplacé par imperva.ids.account_name.
imperva.ids.site_id additional.fields Si imperva.ids.site_id n'est pas vide, créez une entrée additional.fields avec la clé site_id et la valeur imperva.ids.site_id.
imperva.ids.site_name additional.fields Si imperva.ids.site_name n'est pas vide, créez une entrée additional.fields avec la clé site_name et la valeur imperva.ids.site_name.
imperva.referrer network.http.referral_url Nom remplacé par imperva.referrer.
imperva.request_session_id network.session_id Nom remplacé par imperva.request_session_id.
imperva.request_user security_result.detection_fields Si imperva.request_user n'est pas vide, créez une entrée detection_fields avec la clé request_user et la valeur imperva.request_user.
imperva.risk_level security_result.severity_details Nom remplacé par imperva.risk_level.
imperva.risk_reason security_result.description Nom remplacé par imperva.risk_reason.
imperva.significant_domain_name security_result.detection_fields Si imperva.significant_domain_name n'est pas vide, créez une entrée detection_fields avec la clé significant_domain_name et la valeur imperva.significant_domain_name.
imperva.violated_directives security_result.detection_fields Pour chaque entrée dans imperva.violated_directives, créez une entrée detection_fields avec la clé violated_directives et une valeur égale à l'entrée.
dans network.received_bytes Nom remplacé par in. Converti en entier non signé.
log_timestamp metadata.event_timestamp Si deviceReceiptTime et kv.start sont vides, définissez la valeur sur metadata.event_timestamp.
message metadata.description Si message n'est pas vide et que event.provider, imperva.ids.account_name et client.ip sont tous vides, définissez la valeur sur metadata.description.
postbody security_result.detection_fields Si postbody n'est pas vide, créez une entrée detection_fields avec la clé post_body_info et la valeur postbody.
proto network.application_protocol Nom remplacé par proto.
protoVer network.tls.version, network.tls.cipher Si protoVer n'est pas vide, il est analysé pour extraire tls_version et tls_cipher, qui sont ensuite renommés network.tls.version et network.tls.cipher, respectivement.
request target.url Nom remplacé par kv.request.
requestClientApplication network.http.user_agent Nom remplacé par requestClientApplication.
requestMethod network.http.method Nom remplacé par requestMethod. Converti en majuscules.
resource_id target.resource.id Nom remplacé par resource_id.
resource_type_key target.resource.type Nom remplacé par resource_type_key.
rt metadata.event_timestamp Analysé pour extraire deviceReceiptTime, qui est ensuite analysé en tant que date et défini sur metadata.event_timestamp.
security_result.action security_result.action Fusionné avec la valeur du champ _action.
security_result.severity security_result.severity Si sevs est error ou warning, définissez la valeur sur HIGH. Si sevs est défini sur critical, définissez-le sur CRITICAL. Si sevs est medium ou notice, définissez la valeur sur MEDIUM. Si sevs est information ou info, définissez la valeur sur LOW.
server.domain target.hostname, target.asset.hostname Nom remplacé par server.domain.
server.geo.name target.location.name Nom remplacé par server.geo.name.
de gravité, security_result.threat_id Nom remplacé par severity.
siteid security_result.detection_fields Si siteid n'est pas vide, créez une entrée detection_fields avec la clé siteid et la valeur siteid.
sourceServiceName target.hostname Nom remplacé par kv.sourceServiceName.
spt principal.port Nom remplacé par kv.spt. Converti en entier.
src principal.ip, principal.asset.ip Si src n'est pas vide, il est fusionné dans principal.ip et principal.asset.ip.
srcPort principal.port Nom remplacé par srcPort. Converti en entier.
start security_result.detection_fields, metadata.event_timestamp Si start n'est pas vide, créez une entrée detection_fields avec la clé event_start_time et la valeur start. Également analysé comme une date et défini sur metadata.event_timestamp si deviceReceiptTime est vide.
successful_logins_last_24h security_result.detection_fields Converti en chaîne. Si elle n'est pas vide, créez une entrée detection_fields avec la clé successful_logins_last_24h et la valeur successful_logins_last_24h.
suid target.user.userid Nom remplacé par suid.
temps metadata.event_timestamp Converti en chaîne. Analysé comme une date et défini sur metadata.event_timestamp.
type_key metadata.product_event_type Nom remplacé par type_key.
url target.process.file.full_path Si url.path n'est pas vide ou /, définissez-le sur target.process.file.full_path.
url target.url Nom remplacé par url. Si qstr n'est pas vide, il est ajouté à url avec un séparateur ?.
user.email principal.user.email_addresses Si user.email n'est pas vide et correspond à l'expression régulière ^.+@.+$, il est fusionné dans principal.user.email_addresses.
user_agent network.http.user_agent Nom remplacé par user_agent.
user_agent.original network.http.parsed_user_agent Si user_agent.original n'est pas vide ou *, converti en parseduseragent et renommé network.http.parsed_user_agent.
user_details principal.user.email_addresses Si user_details n'est pas vide et correspond à l'expression régulière ^.+@.+$, il est fusionné dans principal.user.email_addresses.
user_id principal.user.userid Nom remplacé par user_id.
ver network.tls.version, network.tls.cipher Si ver n'est pas vide, il est analysé pour extraire tls_version et tls_cipher, qui sont ensuite renommés network.tls.version et network.tls.cipher, respectivement.
xff intermediary.ip, intermediary.asset.ip, intermediary.hostname, intermediary.asset.hostname Si xff n'est pas vide, il est traité pour extraire les adresses IP et les noms d'hôte. Les adresses IP sont fusionnées dans intermediary.ip et intermediary.asset.ip. Les noms d'hôte sont définis sur intermediary.hostname et intermediary.asset.hostname.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.