Collecter les journaux Imperva WAF
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
- Connectez-vous à la console Imperva avec un compte privilégié.
- Accédez à Paramètres > Utilisateurs et rôles.
- Cliquez sur Ajouter un utilisateur.
- 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.
- 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"
- Dans la liste Utilisateurs, recherchez l'utilisateur que vous venez de créer.
- Cliquez sur le bouton Actions (trois points) à côté du nom de l'utilisateur.
- Sélectionnez Définir comme utilisateur API uniquement.
Générer l'ID et la clé API
- Dans la liste Utilisateurs, sélectionnez l'utilisateur que vous venez de créer.
- Sélectionnez Paramètres, puis cliquez sur Clés API.
- Cliquez sur Ajouter une clé API.
- 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.
- 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 :
- 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 WAF Imperva Incapsula).
- Sélectionnez API tierce comme type de source.
- Sélectionnez Imperva comme type de journal.
- Cliquez sur Suivant.
- 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>
etapiKey:<YOUR_API_KEY>
.
- En-tête HTTP d'authentification : saisissez l'ID et la clé de l'API Imperva sur deux lignes :
- Cliquez sur Suivant.
- 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>
etapiKey:<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
- Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur : Créer un bucket.
- Enregistrez le nom et la région du bucket pour une utilisation ultérieure.
- Créez un utilisateur en suivant ce guide de l'utilisateur : Créer un utilisateur IAM.
- Sélectionnez l'utilisateur créé.
- Sélectionnez l'onglet Informations d'identification de sécurité.
- Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
- Sélectionnez Service tiers comme Cas d'utilisation.
- Cliquez sur Suivant.
- Facultatif : Ajoutez un tag de description.
- Cliquez sur Créer une clé d'accès.
- 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.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des règles.
- Recherchez et sélectionnez la règle AmazonS3FullAccess.
- Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations.
Configurer la connexion Imperva WAF Amazon S3
- Connectez-vous à la console Imperva avec un compte privilégié.
- Accédez à Journaux> Configuration des journaux.
- Sélectionnez Amazon S3.
- 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
.
- 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é.
- Sélectionnez CEF comme format pour les fichiers journaux.
- 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
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Ajouter.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
Imperva WAF Logs
). - Sélectionnez Amazon S3 comme Type de source.
- Sélectionnez Imperva comme type de journal.
- Cliquez sur Suivant.
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.
Cliquez sur Suivant.
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 new detection_fieldsentry with key cs1Labeland value cs1. |
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 new detection_fieldsentry with key cs3Labeland value cs3`. |
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.