Coletar registros do WAF da Imperva
Este documento explica como coletar registros do firewall de aplicativos da Web (WAF) da Imperva para o Google Security Operations usando uma API (extração) ou o Amazon S3 (envio). O analisador transforma registros dos formatos SYSLOG+KV, JSON, CEF e LEEF em um modelo de dados unificado (UDM). Ele processa várias estruturas de registros, extrai campos relevantes, os normaliza em atributos da UDM e enriquece os dados com informações contextuais para melhorar a análise de segurança.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Tipo de ingestão (API ou Amazon S3) que melhor se adapta aos seus requisitos de configuração.
- Instância do Google SecOps.
- Acesso privilegiado à AWS.
- Acesso privilegiado ao WAF da Imperva.
Coletar registros do WAF da Imperva usando a API
Configurar um usuário somente leitura para o WAF da Imperva
- Faça login no Console do Imperva com uma conta privilegiada.
- Acesse Configurações > Usuários e papéis.
- Clique em Adicionar usuário.
- Preencha os campos obrigatórios:
- Nome de usuário: insira um nome de usuário exclusivo.
- Senha: defina uma senha forte.
- E-mail: informe o endereço de e-mail do usuário.
- Na seção Papéis, selecione o papel Leitor.
- Clique em Salvar para criar o usuário com acesso somente leitura.
Opcional: configurar o usuário leitor como somente API
- Na lista Usuários, localize o usuário recém-criado.
- Clique no botão Ações (três pontos) ao lado do nome do usuário.
- Selecione Definir como usuário somente de API.
Gerar o ID e a chave de API
- Na lista Usuários, selecione o usuário recém-criado.
- Selecione Configurações e clique em Chaves de API.
- Clique em Adicionar chave de API.
- Preencha os campos obrigatórios:
- Nome: insira um nome descritivo para a chave de API.
- Opcional: Descrição: informe uma descrição opcional.
- Na lista A chave de API vai expirar em, selecione Nunca.
- Para ativar, selecione Status.
- Clique em Salvar.
O sistema mostra o ID e a chave da API. Copie e salve essas credenciais, porque elas não serão mostradas novamente.
Configurar feeds
Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:
- Configurações do SIEM > Feeds
- Central de conteúdo > Pacotes de conteúdo
Configure feeds em "Configurações do SIEM" > "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 Imperva Incapsula.
- Selecione API de terceiros como o Tipo de origem.
- Selecione Imperva como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- Cabeçalho HTTP de autenticação: insira o ID e a chave da API do Imperva em duas linhas:
apiId:<YOUR_API_ID>
eapiKey:<YOUR_API_KEY>
.
- Cabeçalho HTTP de autenticação: insira o ID e a chave da API do Imperva em duas linhas:
- Clique em Próxima.
- Revise a configuração do feed na tela Finalizar e clique em Enviar.
Configurar feeds na Central de conteúdo
Especifique valores para os seguintes campos:
- Cabeçalho HTTP de autenticação: insira o ID e a chave da API do Imperva em duas linhas:
apiId:<YOUR_API_ID>
eapiKey:<YOUR_API_KEY>
.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Tipo de origem: método usado para coletar registros no Google SecOps.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
Coletar registros do WAF da Imperva usando o Amazon S3
Configurar o AWS IAM e o S3
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket
- Salve o Nome e a Região do bucket para uso posterior.
- Crie um usuário seguindo este guia: Como criar um usuário do IAM.
- Selecione o usuário criado.
- Selecione a guia Credenciais de segurança.
- Clique em Criar chave de acesso na seção Chaves de acesso.
- Selecione Serviço de terceiros como o Caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Download .csv file e salve a Chave de acesso e a Chave de acesso secreta para uso posterior.
- Clique em Concluído.
- Selecione a guia Permissões.
- Clique em Adicionar permissões na seção Políticas de permissões.
- Selecione Adicionar permissões.
- Selecione Anexar políticas diretamente.
- Pesquise e selecione a política AmazonS3FullAccess.
- Clique em Próxima.
- Clique em Adicionar permissões
Configurar a conexão do Imperva WAF com o Amazon S3
- Faça login no Console do Imperva com uma conta privilegiada.
- Acesse Registros > Configuração de registros.
- Selecione Amazon S3.
- Preencha os campos obrigatórios:
- Chave de acesso
- Chave do secret
- Caminho: insira o caminho no seguinte formato:
<Amazon S3 bucket name>/<log folder>
; por exemplo:MyBucket/MyIncapsulaLogFolder
.
- Clique em Testar conexão para realizar um ciclo de teste completo em que um arquivo de teste é transferido para a pasta designada.
- Selecione o formato dos arquivos de registro como CEF.
- Por padrão, os arquivos de registro são compactados. Defina a opção para não compactar arquivos.
Configurar um feed no Google SecOps para ingerir registros do WAF da Imperva do Amazon S3
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed, por exemplo,
Imperva WAF Logs
. - Selecione Amazon S3 como o Tipo de origem.
- Selecione Imperva como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- Região: a região em que o bucket do Amazon S3 está localizado.
- URI do S3: o URI do bucket.
s3://your-log-bucket-name/
- Substitua
your-log-bucket-name
pelo nome real do bucket.
- URI é um: selecione Diretório ou 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.
- ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.
- Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.
- Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
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 da UDM | Lógica |
---|---|---|
account_id | target.user.userid | O ID da conta do objeto JSON |
age | security_result.action | Se act for allowed , alert , começar com REQ_PASSED ou começar com REQ_CACHED , defina como ALLOW . Se act for deny , blocked , começar com REQ_BLOCKED ou começar com REQ_CHALLENGE , defina como BLOCK . Se act corresponder à regex (?i)REQ_BAD , defina como FAIL . Caso contrário, defina como UNKNOWN_ACTION . |
app | network.application_protocol | Renomeado de kv.app . Convertido para maiúsculas. |
calCountryOrRegion | principal.location.country_or_region | Renomeado de calCountryOrRegion . |
gato | security_result.action_details | Se cat começar com REQ_PASSED ou REQ_CACHED , defina action como ALLOW e action_details como uma descrição baseada no valor de cat . Se cat começar com REQ_BAD , defina action como FAIL e action_details como uma descrição com base no valor de cat . Se cat começar com REQ_BLOCKED ou REQ_CHALLENGE , defina action como BLOCK e action_details como uma descrição baseada no valor de cat . |
cicode | principal.location.city | Renomeado de cicode . |
classified_client | security_result.detection_fields | Se classified_client não estiver vazio, crie uma nova entrada detection_fields com a chave classified_client e o valor classified_client . |
client.domain | principal.hostname, principal.asset.hostname | Renomeado de client.domain . |
client.geo.country_iso_code | principal.location.country_or_region | Renomeado de client.geo.country_iso_code . |
client.ip | principal.ip, principal.asset.ip | Mesclado com principal.ip e principal.asset.ip . |
cn1 | network.http.response_code | Renomeado de cn1 . Convertido em número inteiro. |
context_key | target.resource.name | Renomeado de context_key . |
país | principal.location.country_or_region | Renomeado de country . |
credentials_leaked | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave credentials_leaked e o valor credentials_leaked . |
cs1 | security_result.detection_fields | Se cs1 não estiver vazio, NA ou `, create a new detection_fieldsentry with key cs1Labeland value cs1`. |
cs1Label | security_result.detection_fields | Usado como a chave para a entrada detection_fields criada com base em cs1 . |
cs2 | security_result.detection_fields | Se cs2 não estiver vazio, crie uma nova entrada detection_fields com a chave cs2Label e o valor cs2 . |
cs2Label | security_result.detection_fields | Usado como a chave para a entrada detection_fields criada com base em cs2 . |
cs3 | security_result.detection_fields | Se cs3 não estiver vazio, - ou `, create a new detection_fieldsentry with key cs3Labeland value cs3`. |
cs3Label | security_result.detection_fields | Usado como a chave para a entrada detection_fields criada com base em cs3 . |
cs4 | security_result.detection_fields | Se cs4 não estiver vazio, crie uma nova entrada detection_fields com a chave cs4Label e o valor cs4 . |
cs4Label | security_result.detection_fields | Usado como a chave para a entrada detection_fields criada com base em cs4 . |
cs5 | security_result.detection_fields | Se cs5 não estiver vazio, crie uma nova entrada detection_fields com a chave cs5Label e o valor cs5 . |
cs5Label | security_result.detection_fields | Usado como a chave para a entrada detection_fields criada com base em cs5 . |
cs6 | principal.application | Renomeado de cs6 . |
cs7 | principal.location.region_latitude | Se cs7Label for latitude , renomeado como principal.location.region_latitude . Convertido para ponto flutuante. |
cs7Label | Se cs7Label for latitude , será usado para determinar o mapeamento de cs7 . |
|
cs8 | principal.location.region_longitude | Se cs8Label for longitude , renomeado como principal.location.region_longitude . Convertido para ponto flutuante. |
cs8Label | Se cs8Label for longitude , será usado para determinar o mapeamento de cs8 . |
|
cs9 | security_result.rule_name, extensions.vulns.vulnerabilities.name | Se cs9 não estiver vazio, defina como security_result.rule_name e crie uma nova entrada vulnerabilities com o nome cs9 . |
Cliente | target.user.user_display_name | Renomeado de Customer . |
declared_client | security_result.detection_fields | Se declared_client não estiver vazio, crie uma nova entrada detection_fields com a chave declared_client e o valor declared_client . |
description | security_result.threat_name | Renomeado de description . |
deviceExternalId | network.community_id | Renomeado de deviceExternalId . |
deviceReceiptTime | metadata.event_timestamp | Analisado como uma data e definido como metadata.event_timestamp . Se estiver vazio, log_timestamp ou kv.start será usado. |
dhost | target.hostname | Renomeado de kv.dhost . |
dproc | security_result.category_details | Renomeado de dproc . |
dpt | target.port | Renomeado de kv.dpt . Convertido em número inteiro. |
dst | target.ip, target.asset.ip | Se dst não estiver vazio, será mesclado em target.ip e target.asset.ip . |
dstPort | target.port | Renomeado de dstPort . Convertido em número inteiro. |
duser | target.user.userid | Se duser não corresponder à regex .*?Alert.* e não estiver vazio, será renomeado como target.user.userid . |
end | security_result.detection_fields | Se end não estiver vazio, crie uma nova entrada detection_fields com a chave event_end_time e o valor end . |
event.id | O ID do evento do objeto JSON | |
event.provider | principal.user.user_display_name | Renomeado de event.provider . |
failed_logins_last_24h | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave failed_logins_last_24h e o valor failed_logins_last_24h . |
fileId | network.session_id | Renomeado de fileId . |
filePermission | security_result.detection_fields | Se filePermission não estiver vazio, crie uma nova entrada detection_fields com a chave filePermission e o valor filePermission . |
fileType | security_result.detection_fields | Se fileType não estiver vazio, crie uma nova entrada detection_fields com a chave fileType e o valor fileType . |
Impressão digital | security_result.detection_fields | Se fingerprint não estiver vazio, crie uma nova entrada detection_fields com a chave log_imperva_fingerprint e o valor fingerprint . |
flexString1 | network.http.response_code | Renomeado de kv.flexString1 . Convertido em número inteiro. |
http.request.body.bytes | network.sent_bytes | Convertido para número inteiro sem sinal. Renomeado de http.request.body.bytes . |
http.request.method | network.http.method | Renomeado de http.request.method . |
imperva.abp.apollo_rule_versions | security_result.detection_fields | Para cada entrada em imperva.abp.apollo_rule_versions , crie uma entrada detection_fields com a chave apollo_rule_versions_{index} e o valor igual à entrada. |
imperva.abp.bot_behaviors | security_result.detection_fields | Para cada entrada em imperva.abp.bot_behaviors , crie uma entrada detection_fields com a chave bot_behaviors_{index} e o valor igual à entrada. |
imperva.abp.bot_deciding_condition_ids | security_result.detection_fields | Para cada entrada em imperva.abp.bot_deciding_condition_ids , crie uma entrada detection_fields com a chave bot_deciding_condition_ids_{index} e o valor igual à entrada. |
imperva.abp.bot_deciding_condition_names | security_result.detection_fields | Para cada entrada em imperva.abp.bot_deciding_condition_names , crie uma entrada detection_fields com a chave bot_deciding_condition_names_{index} e o valor igual à entrada. |
imperva.abp.bot_triggered_condition_ids | security_result.detection_fields | Para cada entrada em imperva.abp.bot_triggered_condition_ids , crie uma entrada detection_fields com a chave bot_triggered_condition_ids_{index} e o valor igual à entrada. |
imperva.abp.bot_triggered_condition_names | security_result.detection_fields | Para cada entrada em imperva.abp.bot_triggered_condition_names , crie uma entrada detection_fields com a chave bot_triggered_condition_names_{index} e o valor igual à entrada. |
imperva.abp.bot_violations | security_result.detection_fields | Para cada entrada em imperva.abp.bot_violations , crie uma entrada detection_fields com a chave bot_violations_{index} e o valor igual à entrada. |
imperva.abp.customer_request_id | network.session_id | Renomeado de imperva.abp.customer_request_id . |
imperva.abp.headers_accept_encoding | security_result.detection_fields | Se imperva.abp.headers_accept_encoding não estiver vazio, crie uma nova entrada detection_fields com a chave Accept Encoding e o valor imperva.abp.headers_accept_encoding . |
imperva.abp.headers_accept_language | security_result.detection_fields | Se imperva.abp.headers_accept_language não estiver vazio, crie uma nova entrada detection_fields com a chave Accept Language e o valor imperva.abp.headers_accept_language . |
imperva.abp.headers_connection | security_result.detection_fields | Se imperva.abp.headers_connection não estiver vazio, crie uma nova entrada detection_fields com a chave headers_connection e o valor imperva.abp.headers_connection . |
imperva.abp.headers_referer | network.http.referral_url | Renomeado de imperva.abp.headers_referer . |
imperva.abp.hsig | security_result.detection_fields | Se imperva.abp.hsig não estiver vazio, crie uma nova entrada detection_fields com a chave hsig e o valor imperva.abp.hsig . |
imperva.abp.monitor_action | security_result.action, security_result.severity | Se imperva.abp.monitor_action corresponder à regex (?i)allow , defina security_action como ALLOW e severity como INFORMATIONAL . Se imperva.abp.monitor_action corresponder à regex (?i)captcha ou (?i)block , defina security_action como BLOCK . |
imperva.abp.pid | principal.process.pid | Renomeado de imperva.abp.pid . |
imperva.abp.policy_id | security_result.detection_fields | Se imperva.abp.policy_id não estiver vazio, crie uma nova entrada detection_fields com a chave Policy Id e o valor imperva.abp.policy_id . |
imperva.abp.policy_name | security_result.detection_fields | Se imperva.abp.policy_name não estiver vazio, crie uma nova entrada detection_fields com a chave Policy Name e o valor imperva.abp.policy_name . |
imperva.abp.random_id | additional.fields | Se imperva.abp.random_id não estiver vazio, crie uma nova entrada additional.fields com a chave Random Id e o valor imperva.abp.random_id . |
imperva.abp.request_type | principal.labels | Se imperva.abp.request_type não estiver vazio, crie uma nova entrada principal.labels com a chave request_type e o valor imperva.abp.request_type . |
imperva.abp.selector | security_result.detection_fields | Se imperva.abp.selector não estiver vazio, crie uma nova entrada detection_fields com a chave selector e o valor imperva.abp.selector . |
imperva.abp.selector_derived_id | security_result.detection_fields | Se imperva.abp.selector_derived_id não estiver vazio, crie uma nova entrada detection_fields com a chave selector_derived_id e o valor imperva.abp.selector_derived_id . |
imperva.abp.tls_fingerprint | security_result.description | Renomeado de imperva.abp.tls_fingerprint . |
imperva.abp.token_id | target.resource.product_object_id | Renomeado de imperva.abp.token_id . |
imperva.abp.zuid | additional.fields | Se imperva.abp.zuid não estiver vazio, crie uma nova entrada additional.fields com a chave zuid e o valor imperva.abp.zuid . |
imperva.additional_factors | additional.fields | Para cada entrada em imperva.additional_factors , crie uma entrada additional.fields com a chave additional_factors_{index} e o valor igual à entrada. |
imperva.audit_trail.event_action | security_result.detection_fields | Se imperva.audit_trail.event_action não estiver vazio, crie uma nova entrada detection_fields com a chave imperva.audit_trail.event_action e o valor imperva.audit_trail.event_action_description . |
imperva.audit_trail.event_action_description | security_result.detection_fields | Usado como o valor da entrada detection_fields criada com base em imperva.audit_trail.event_action . |
imperva.audit_trail.event_context | security_result.detection_fields | Se imperva.audit_trail.event_context não estiver vazio, crie uma nova entrada detection_fields com a chave imperva.audit_trail.event_context e o valor imperva.audit_trail.event_context_description . |
imperva.audit_trail.event_context_description | security_result.detection_fields | Usado como o valor da entrada detection_fields criada com base em imperva.audit_trail.event_context . |
imperva.country | principal.location.country_or_region | Renomeado de imperva.country . |
imperva.declared_client | security_result.detection_fields | Se imperva.declared_client não estiver vazio, crie uma nova entrada detection_fields com a chave declared_client e o valor imperva.declared_client . |
imperva.device_reputation | additional.fields | Para cada entrada em imperva.device_reputation , crie uma nova entrada additional.fields com a chave device_reputation e um valor de lista que contenha a entrada. |
imperva.domain_risk | security_result.detection_fields | Se imperva.domain_risk não estiver vazio, crie uma nova entrada detection_fields com a chave domain_risk e o valor imperva.domain_risk . |
imperva.failed_logins_last_24h | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave failed_logins_last_24h e o valor failed_logins_last_24h . |
imperva.fingerprint | security_result.detection_fields | Se imperva.fingerprint não estiver vazio, crie uma nova entrada detection_fields com a chave log_imperva_fingerprint e o valor imperva.fingerprint . |
imperva.ids.account_id | metadata.product_log_id | Renomeado de imperva.ids.account_id . |
imperva.ids.account_name | metadata.product_event_type | Renomeado de imperva.ids.account_name . |
imperva.ids.site_id | additional.fields | Se imperva.ids.site_id não estiver vazio, crie uma nova entrada additional.fields com a chave site_id e o valor imperva.ids.site_id . |
imperva.ids.site_name | additional.fields | Se imperva.ids.site_name não estiver vazio, crie uma nova entrada additional.fields com a chave site_name e o valor imperva.ids.site_name . |
imperva.referrer | network.http.referral_url | Renomeado de imperva.referrer . |
imperva.request_session_id | network.session_id | Renomeado de imperva.request_session_id . |
imperva.request_user | security_result.detection_fields | Se imperva.request_user não estiver vazio, crie uma nova entrada detection_fields com a chave request_user e o valor imperva.request_user . |
imperva.risk_level | security_result.severity_details | Renomeado de imperva.risk_level . |
imperva.risk_reason | security_result.description | Renomeado de imperva.risk_reason . |
imperva.significant_domain_name | security_result.detection_fields | Se imperva.significant_domain_name não estiver vazio, crie uma nova entrada detection_fields com a chave significant_domain_name e o valor imperva.significant_domain_name . |
imperva.violated_directives | security_result.detection_fields | Para cada entrada em imperva.violated_directives , crie uma entrada detection_fields com a chave violated_directives e o valor igual à entrada. |
em | network.received_bytes | Renomeado de in . Convertido para número inteiro sem sinal. |
log_timestamp | metadata.event_timestamp | Se deviceReceiptTime e kv.start estiverem vazios, defina como metadata.event_timestamp . |
mensagem | metadata.description | Se message não estiver vazio e event.provider , imperva.ids.account_name e client.ip estiverem vazios, defina como metadata.description . |
postbody | security_result.detection_fields | Se postbody não estiver vazio, crie uma nova entrada detection_fields com a chave post_body_info e o valor postbody . |
proto | network.application_protocol | Renomeado de proto . |
protoVer | network.tls.version, network.tls.cipher | Se protoVer não estiver vazio, será analisado para extrair tls_version e tls_cipher , que serão renomeados como network.tls.version e network.tls.cipher , respectivamente. |
solicitação | target.url | Renomeado de kv.request . |
requestClientApplication | network.http.user_agent | Renomeado de requestClientApplication . |
requestMethod | network.http.method | Renomeado de requestMethod . Convertido para maiúsculas. |
resource_id | target.resource.id | Renomeado de resource_id . |
resource_type_key | target.resource.type | Renomeado de resource_type_key . |
rt | metadata.event_timestamp | Analisado para extrair deviceReceiptTime , que é analisado como uma data e definido como metadata.event_timestamp . |
security_result.action | security_result.action | Combinado com o valor do campo _action . |
security_result.severity | security_result.severity | Se sevs for error ou warning , defina como HIGH . Se sevs for critical , defina como CRITICAL . Se sevs for medium ou notice , defina como MEDIUM . Se sevs for information ou info , defina como LOW . |
server.domain | target.hostname, target.asset.hostname | Renomeado de server.domain . |
server.geo.name | target.location.name | Renomeado de server.geo.name . |
gravidade, | security_result.threat_id | Renomeado de severity . |
siteid | security_result.detection_fields | Se siteid não estiver vazio, crie uma nova entrada detection_fields com a chave siteid e o valor siteid . |
sourceServiceName | target.hostname | Renomeado de kv.sourceServiceName . |
spt | principal.port | Renomeado de kv.spt . Convertido em número inteiro. |
src | principal.ip, principal.asset.ip | Se src não estiver vazio, será mesclado em principal.ip e principal.asset.ip . |
srcPort | principal.port | Renomeado de srcPort . Convertido em número inteiro. |
start | security_result.detection_fields, metadata.event_timestamp | Se start não estiver vazio, crie uma nova entrada detection_fields com a chave event_start_time e o valor start . Também analisado como uma data e definido como metadata.event_timestamp se deviceReceiptTime estiver vazio. |
successful_logins_last_24h | security_result.detection_fields | Convertido em string. Se não estiver vazio, crie uma nova entrada detection_fields com a chave successful_logins_last_24h e o valor successful_logins_last_24h . |
suid | target.user.userid | Renomeado de suid . |
tempo | metadata.event_timestamp | Convertido em string. Analisado como uma data e definido como metadata.event_timestamp . |
type_key | metadata.product_event_type | Renomeado de type_key . |
url | target.process.file.full_path | Se url.path não estiver vazio ou for / , defina como target.process.file.full_path . |
url | target.url | Renomeado de url . Se qstr não estiver vazio, será anexado a url com um separador ? . |
user.email | principal.user.email_addresses | Se user.email não estiver vazio e corresponder à regex ^.+@.+$ , será mesclado em principal.user.email_addresses . |
user_agent | network.http.user_agent | Renomeado de user_agent . |
user_agent.original | network.http.parsed_user_agent | Se user_agent.original não estiver vazio ou for * , será convertido em parseduseragent e renomeado como network.http.parsed_user_agent . |
user_details | principal.user.email_addresses | Se user_details não estiver vazio e corresponder à regex ^.+@.+$ , será mesclado em principal.user.email_addresses . |
user_id | principal.user.userid | Renomeado de user_id . |
ver | network.tls.version, network.tls.cipher | Se ver não estiver vazio, será analisado para extrair tls_version e tls_cipher , que serão renomeados como network.tls.version e network.tls.cipher , respectivamente. |
xff | intermediary.ip, intermediary.asset.ip, intermediary.hostname, intermediary.asset.hostname | Se xff não estiver vazio, será processado para extrair endereços IP e nomes de host. Os endereços IP são mesclados em intermediary.ip e intermediary.asset.ip . Os nomes de host são definidos como intermediary.hostname e intermediary.asset.hostname . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.