Coletar logs de proxy web do Netskope
Este documento explica como ingerir registros de proxy da Web do Netskope no Google Security Operations usando o Cloud Storage V2.
A Netskope oferece um gateway da Web seguro nativo da nuvem que inspeciona e controla o tráfego da Web em tempo real. Os registros de transações da Web (WebTx) capturam registros detalhados de cada sessão HTTP e HTTPS processada pelo proxy da Netskope, incluindo identidade do usuário, aplicativo, categoria de URL, vereditos de ameaças e DLP e metadados de rede.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Um projeto do Google Cloud com a API Storage do Cloud Storage ativada.
- Permissões para criar e gerenciar buckets do Cloud Storage
- Permissões para gerenciar políticas do Identity and Access Management (IAM) em buckets do Cloud Storage
- Acesso privilegiado ao locatário do Netskope com credenciais de administrador
Opção 1: streaming de registros do Netskope para o Cloud Storage
Use essa opção se você tiver uma assinatura do Netskope Log Streaming ativada no seu locatário. O Netskope Log Streaming envia arquivos de registro do WebTx diretamente para seu bucket do Cloud Storage como arquivos .gzip compactados em um intervalo fixo de 240 segundos.
Criar um bucket do Cloud Storage
- Acesse o console doGoogle Cloud .
- Selecione seu projeto ou crie um novo.
- No menu de navegação, acesse Cloud Storage > Buckets.
- Clique em Criar bucket.
Informe os seguintes detalhes de configuração:
Configuração Valor Nomeie seu bucket Insira um nome globalmente exclusivo, por exemplo, netskope-webtx-logs.Tipo de local Escolha de acordo com suas necessidades (região, birregional, multirregional) Local Selecione o local mais próximo da sua organização (por exemplo, us-central1)Classe de armazenamento Padrão (recomendado para registros acessados com frequência) Controle de acesso Uniforme (recomendado) Ferramentas de proteção Opcional: ativar o controle de versões de objetos ou a política de retenção Clique em Criar.
Crie uma conta de serviço Google Cloud
O streaming de registros do Netskope exige uma conta de serviço Google Cloud com permissões de gravação no seu bucket do Cloud Storage. O arquivo de chave JSON dessa conta de serviço é usado pelo Netskope para autenticação ao enviar arquivos de registro.
- No console Google Cloud , acesse IAM e administrador > Contas de serviço.
- Clique em Criar conta de serviço.
- Informe os seguintes detalhes de configuração:
- Nome da conta de serviço: insira
netskope-log-streaming - Descrição da conta de serviço: insira
Service account for Netskope Log Streaming to push WebTx logs to GCS
- Nome da conta de serviço: insira
- Clique em Criar e continuar.
- Na seção Conceda a essa conta de serviço acesso ao projeto:
- Clique em Selecionar papel.
- Pesquise e selecione Criador de objetos do Storage.
- Clique em Continuar.
- Clique em Concluído.
Gerar a chave JSON
- No console Google Cloud , acesse IAM e administrador > Contas de serviço e clique na conta de serviço
netskope-log-streaming. - Selecione a guia Chaves.
- Clique em Adicionar chave > Criar nova chave.
- Selecione JSON como o tipo de chave.
- Clique em Criar.
O download de um arquivo de chave JSON é feito automaticamente. Salve esse arquivo com segurança. Você vai colar todo o conteúdo desse arquivo no Netskope na próxima seção.
Conceder permissões de gravação em um bucket do Cloud Storage
- No Google Cloud console, acesse Cloud Storage > Buckets.
- Clique no nome do bucket (por exemplo,
netskope-webtx-logs). - Acesse a guia Permissões.
- Clique em Conceder acesso.
- Informe os seguintes detalhes de configuração:
- Adicionar principais: insira o e-mail da conta de serviço (por exemplo,
netskope-log-streaming@YOUR_PROJECT_ID.iam.gserviceaccount.com). - Atribuir papéis: selecione Criador de objetos do Storage.
- Adicionar principais: insira o e-mail da conta de serviço (por exemplo,
Clique em Salvar.
Criar o fluxo de registros
- Faça login no locatário do Netskope com credenciais de administrador.
- Acesse Configurações > Ferramentas > Streaming de registros.
- Clique em Criar stream.
- No campo Nome, insira um nome legível por humanos para o fluxo. Por exemplo,
Google SecOps WebTx GCS. - Selecione GCP Cloud Storage como o tipo de destino.
Informe os seguintes detalhes de configuração:
Bucket: insira o nome do bucket do Cloud Storage (por exemplo,
netskope-webtx-logs).- Caminho (opcional): insira um caminho de pasta no bucket em que os registros serão armazenados (por exemplo, `netskope/webtx/{%Y}`).
Chave privada: cole todo o conteúdo do arquivo de chave JSON gerado na seção anterior como um único objeto JSON que começa com
{e termina com}. Isso inclui os campostype,project_id,private_key_id,private_key,client_emaileclient_id.
Confira as Opções de entrega: a frequência de push é de 240 segundos contínuos.
Clique em Salvar (ou Criar) para ativar o fluxo. O Netskope valida as credenciais gravando um objeto de teste chamado
netskope-test-file.txtno bucket.
Configurar um feed no Google SecOps para ingerir registros do Netskope WebTx do Cloud Storage
Siga estas etapas para criar o feed do Google SecOps e conceder permissões do IAM:
Recuperar a conta de serviço do Google SecOps
O Google SecOps usa uma conta de serviço exclusiva para ler dados do seu bucket do Cloud Storage. Você precisa conceder a essa conta de serviço acesso ao seu bucket.
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Netskope WebTx Logs). - Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Proxy da Web do Netskope como o Tipo de registro.
- Clique em Receber conta de serviço.
Um e-mail exclusivo da conta de serviço será exibido, por exemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopie esse endereço de e-mail para usar na próxima etapa.
Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
URL do bucket de armazenamento: insira o URI do bucket do Cloud Storage com o caminho do prefixo:
gs://netskope-webtx-logs/netskope/webtx/- Substitua:
netskope-webtx-logs: o nome do bucket do Cloud Storage.netskope/webtx/: o prefixo do caminho configurado no Netskope Log Streaming (deixe em branco para a raiz).
- Substitua:
Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:
- Nunca excluir arquivos: nunca exclua arquivos da origem (recomendado para testes).
- Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios da origem após a conclusão de uma busca bem-sucedida.
Idade máxima do arquivo: inclua arquivos modificados nos últimos dias (o padrão é 180 dias).
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.
Conceder permissões do IAM à conta de serviço do Google SecOps
A conta de serviço do Google SecOps precisa de dois papéis no bucket do Cloud Storage: Leitor de objetos do Storage para ler os objetos de registro e um papel no nível do bucket para ler os metadados do bucket.
- Acesse Cloud Storage > Buckets.
- clique no nome do bucket (por exemplo,
netskope-webtx-logs). - Acesse a guia Permissões.
- Clique em Conceder acesso.
- Informe os seguintes detalhes de configuração:
- Adicionar participantes: cole o e-mail da conta de serviço do Google SecOps (por exemplo,
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com). - Atribuir papéis: selecione as duas opções a seguir:
- Leitor de objetos do Storage: lê os objetos de registro.
- Leitor de bucket legado do Storage: lê os metadados do bucket. Se você selecionou a opção de exclusão Excluir arquivos transferidos e diretórios vazios, selecione Gravador de bucket legado do Storage, que também concede a permissão de exclusão.
- Adicionar participantes: cole o e-mail da conta de serviço do Google SecOps (por exemplo,
- Clique em Salvar.
Opção 2: usar o Netskope Cloud Exchange Log Shipper para o Cloud Storage
Use essa opção se você tiver a plataforma Netskope Cloud Exchange implantada com o módulo Log Shipper configurado. O Log Shipper extrai os registros do WebTx do seu locatário do Netskope e os envia como arquivos .gzip compactados para um bucket do Cloud Storage, que o Google SecOps lê por um feed do Cloud Storage V2.
Antes de começar (Cloud Exchange)
Verifique se você atende aos seguintes pré-requisitos adicionais para essa opção:
- Um locatário do Netskope Cloud Exchange com o plug-in Tenant e o módulo Log Shipper já configurados.
- O plug-in de origem do Netskope CLS configurado no Log Shipper (que extrai dados do locatário do Netskope).
- Um bucket do Cloud Storage criado para armazenar registros do WebTx. Se você ainda não tiver criado um, siga as etapas em Criar bucket do Cloud Storage.
- Uma Google Cloud conta de serviço com acesso de gravação ao bucket do Cloud Storage. Se você ainda não tiver uma, siga as etapas em Criar uma conta de serviço do Google Cloud , Gerar a chave JSON e Conceder permissões de gravação em um bucket do Cloud Storage.
Configurar o plug-in de destino do Cloud Storage
- Em Cloud Exchange, acesse Configurações > Plugin Store.
- Pesquise e selecione o plug-in Google Cloud SCC (Google GCS).
- Clique em Configurar novo plug-in ou adicione uma nova configuração de plug-in.
- Informe os seguintes detalhes de configuração:
- Nome da configuração: insira um nome descritivo (por exemplo,
GCS WebTx Destination). - Mapeamento: selecione um arquivo de mapeamento. Para registros do WebTx enviados como arquivos
.gziporiginais, nenhuma transformação de mapeamento é aplicada. - Bucket: insira o nome do bucket do Cloud Storage (por exemplo,
netskope-webtx-logs). - Caminho (opcional): insira um caminho de pasta (por exemplo,
netskope/webtx/). - Arquivo de chave: cole todo o conteúdo do arquivo de chave JSON da conta de serviço, não apenas o valor
private_key.
- Nome da configuração: insira um nome descritivo (por exemplo,
- Clique em Salvar.
- A nova configuração de plug-in vai aparecer na página Log Shipper > Plug-ins.
Configurar uma regra de negócios (opcional)
Por padrão, a regra de negócios Todos filtra todos os alertas e eventos. Se você quiser filtrar especificamente os registros do WebTx, crie uma nova regra de negócios:
- No Log Shipper, acesse Regras de negócios.
- Clique em Criar nova regra.
- Insira um Nome da regra, por exemplo,
WebTx Only. - Configure os filtros para incluir apenas dados do WebTx.
- Clique em Salvar.
Configurar a entrega de registros
- Em Log Shipper, acesse Entrega de registros.
- Clique em Adicionar configuração de entrega de registros.
- Informe os seguintes detalhes de configuração:
- Configuração da origem: selecione o plug-in de origem do CLS do Netskope (por exemplo,
WebTxCLSouNetskope CLS). - Configuração de destino: selecione o plug-in de destino do Cloud Storage que você configurou (por exemplo,
GCS WebTx Destination). - Regra de negócios: selecione uma regra de negócios (por exemplo,
AllouWebTx Only).
- Configuração da origem: selecione o plug-in de origem do CLS do Netskope (por exemplo,
Clique em Salvar.
Para acessar mais dados históricos, clique no ícone Extrair dados históricos nas ações de Entrega de registros.
Selecione um período Histórico de e Até e clique em Extrair.
Configurar um feed no Google SecOps para ingerir registros do Netskope WebTx do Cloud Storage
Siga as mesmas etapas da opção de transmissão de registros do Netskope para criar um feed do Google SecOps e conceder permissões do IAM:
- Recupere a conta de serviço do Google SecOps: crie um feed com o Google Cloud Storage V2 como tipo de origem e o proxy da Web do Netskope como tipo de registro.
- Conceda permissões do IAM à conta de serviço do Google SecOps: conceda os papéis Leitor de objetos do Storage e Leitor de buckets legados do Storage (use Gravador de buckets legados do Storage se estiver usando a opção de exclusão) no bucket do Cloud Storage à conta de serviço do Google SecOps.
Verificar a entrega de registro
Para verificar se os registros do WebTx estão sendo enviados para o bucket do Cloud Storage:
- No Cloud Exchange, acesse Log Shipper > Log Delivery.
- Verifique as colunas Total de registros/WebTx enviados ao receptor externo e Total de WebTx enviados ao bucket de armazenamento para confirmar se os dados estão sendo enviados ao destino.
- No bucket do GCS, confirme se os arquivos
.gzipestão sendo gravados pelo Log Shipper.
Configurar as configurações globais do Log Shipper (opcional)
Somente administradores podem mudar as configurações globais do Log Shipper. Acesse Configurações > Log Shipper. Há duas guias: "Geral" e "Mapeamentos".
Na guia Geral, é possível configurar a estratégia de nova tentativa para entrega de registros:
- Padrão (três novas tentativas): se a entrega de um registro falhar, o Log Shipper vai iniciar três tentativas de enviar os registros ao destino. Se as três tentativas falharem, o lote de registros correspondente será descartado.
Tentar de novo até a entrega bem-sucedida: novas tentativas ilimitadas até a entrega bem-sucedida dos registros.
Você também pode ativar a codificação UTF-8 para alertas, eventos e WebTx e garantir o processamento perfeito de dados codificados em UTF-8. Por padrão, esse recurso fica desativado.
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| applicationType | security_result.detection_fields[].key: "applicationType", security_result.detection_fields[].value: applicationType | Mapeado diretamente do campo CEF correspondente |
| appcategory | security_result.category_details[]: appcategory | Mapeado diretamente do campo CEF correspondente |
| browser | security_result.detection_fields[].key: "browser", security_result.detection_fields[].value: browser | Mapeado diretamente do campo CEF correspondente |
| c-ip | principal.asset.ip[]: c-ip, principal.ip[]: c-ip | Mapeado diretamente do campo JSON correspondente |
| cci | security_result.detection_fields[].key: "cci", security_result.detection_fields[].value: cci | Mapeado diretamente do campo CEF correspondente |
| ccl | security_result.confidence: Derived value, security_result.confidence_details: ccl | security_result.confidence é derivado com base no valor de ccl: "excellent" ou "high" é mapeado para HIGH_CONFIDENCE, "medium" é mapeado para MEDIUM_CONFIDENCE, "low" ou "poor" é mapeado para LOW_CONFIDENCE, e "unknown" ou "not_defined" é mapeado para UNKNOWN_CONFIDENCE. security_result.confidence_details é mapeado diretamente de ccl. |
| clientBytes | network.sent_bytes: clientBytes | Mapeado diretamente do campo CEF correspondente |
| cs-access-method | additional.fields[].key: "accessMethod", additional.fields[].value.string_value: cs-access-method | Mapeado diretamente do campo JSON correspondente |
| cs-app | additional.fields[].key: "x-cs-app", additional.fields[].value.string_value: cs-app, principal.application: cs-app | Mapeado diretamente do campo JSON correspondente |
| cs-app-activity | additional.fields[].key: "x-cs-app-activity", additional.fields[].value.string_value: cs-app-activity | Mapeado diretamente do campo JSON correspondente |
| cs-app-category | additional.fields[].key: "x-cs-app-category", additional.fields[].value.string_value: cs-app-category | Mapeado diretamente do campo JSON correspondente |
| cs-app-cci | additional.fields[].key: "x-cs-app-cci", additional.fields[].value.string_value: cs-app-cci | Mapeado diretamente do campo JSON correspondente |
| cs-app-ccl | additional.fields[].key: "x-cs-app-ccl", additional.fields[].value.string_value: cs-app-ccl | Mapeado diretamente do campo JSON correspondente |
| cs-app-from-user | additional.fields[].key: "x-cs-app-from-user", additional.fields[].value.string_value: cs-app-from-user, principal.user.email_addresses[]: cs-app-from-user | Mapeado diretamente do campo JSON correspondente |
| cs-app-instance-id | additional.fields[].key: "x-cs-app-instance-id", additional.fields[].value.string_value: cs-app-instance-id | Mapeado diretamente do campo JSON correspondente |
| cs-app-object-name | additional.fields[].key: "x-cs-app-object-name", additional.fields[].value.string_value: cs-app-object-name | Mapeado diretamente do campo JSON correspondente |
| cs-app-object-type | additional.fields[].key: "x-cs-app-object-type", additional.fields[].value.string_value: cs-app-object-type | Mapeado diretamente do campo JSON correspondente |
| cs-app-suite | additional.fields[].key: "x-cs-app-suite", additional.fields[].value.string_value: cs-app-suite | Mapeado diretamente do campo JSON correspondente |
| cs-app-tags | additional.fields[].key: "x-cs-app-tags", additional.fields[].value.string_value: cs-app-tags | Mapeado diretamente do campo JSON correspondente |
| cs-bytes | network.sent_bytes: cs-bytes | Mapeado diretamente do campo JSON correspondente |
| cs-content-type | additional.fields[].key: "sc-content-type", additional.fields[].value.string_value: cs-content-type | Mapeado diretamente do campo JSON correspondente |
| cs-dns | target.asset.hostname[]: cs-dns, target.hostname: cs-dns | Mapeado diretamente do campo JSON correspondente |
| cs-host | target.asset.hostname[]: cs-host, target.hostname: cs-host | Mapeado diretamente do campo JSON correspondente |
| cs-method | network.http.method: cs-method | Mapeado diretamente do campo JSON correspondente |
| cs-referer | network.http.referral_url: cs-referer | Mapeado diretamente do campo JSON correspondente |
| cs-uri | additional.fields[].key: "cs-uri", additional.fields[].value.string_value: cs-uri | Mapeado diretamente do campo JSON correspondente |
| cs-uri-path | additional.fields[].key: "x-cs-uri-path", additional.fields[].value.string_value: cs-uri-path | Mapeado diretamente do campo JSON correspondente |
| cs-uri-port | additional.fields[].key: "cs-uri-port", additional.fields[].value.string_value: cs-uri-port | Mapeado diretamente do campo JSON correspondente |
| cs-uri-scheme | network.application_protocol: cs-uri-scheme | Mapeado diretamente do campo JSON correspondente após a conversão para letras maiúsculas |
| cs-user-agent | network.http.parsed_user_agent: user agent analisado, network.http.user_agent: cs-user-agent | network.http.parsed_user_agent é derivado da análise do campo cs-user-agent usando o filtro "parseduseragent". |
| cs-username | principal.user.userid: cs-username | Mapeado diretamente do campo JSON correspondente |
| data | metadata.event_timestamp.seconds: segundos da época dos campos de data e hora, metadata.event_timestamp.nanos: 0 | A data e a hora são combinadas e convertidas em segundos e nanossegundos de época. Os nanossegundos são definidos como 0. |
| device | intermediary.hostname: device | Mapeado diretamente do campo CEF correspondente |
| dst | target.ip[]: dst | Mapeado diretamente do campo CEF correspondente |
| dst_country | target.location.country_or_region: dst_country | Mapeado diretamente do campo grokked correspondente |
| dst_ip | target.asset.ip[]: dst_ip, target.ip[]: dst_ip | Mapeado diretamente do campo grokked correspondente |
| dst_location | target.location.city: dst_location | Mapeado diretamente do campo correspondente do Grok |
| dst_region | target.location.state: dst_region | Mapeado diretamente do campo grokked correspondente |
| dst_zip | Não mapeados | Este campo não está mapeado para a UDM |
| duser | target.user.email_addresses[]: duser, target.user.user_display_name: duser | Mapeado diretamente do campo CEF correspondente |
| dvchost | about.hostname: dvchost, target.asset.hostname[]: dvchost, target.hostname: dvchost | Mapeado diretamente do campo CEF correspondente |
| event_timestamp | metadata.event_timestamp.seconds: event_timestamp | Mapeado diretamente do campo correspondente do Grok |
| nome do host | target.asset.hostname[]: hostname, target.hostname: hostname | Mapeado diretamente do campo CEF correspondente |
| Código do incidente | security_result.detection_fields[].key: "IncidentID", security_result.detection_fields[].value: IncidentID | Mapeado diretamente do campo CEF correspondente |
| intermediário | intermediário: intermediary | Mapeado diretamente do campo CEF correspondente |
| md5 | target.file.md5: md5 | Mapeado diretamente do campo CEF correspondente |
| mensagem | Vários campos de UDM | O campo de mensagem é analisado com base no fato de conter "CEF". Se isso acontecer, ele será tratado como um registro CEF. Caso contrário, ele será analisado como uma string delimitada por espaços ou JSON. |
| mwDetectionEngine | additional.fields[].key: "mwDetectionEngine", additional.fields[].value.string_value: mwDetectionEngine | Mapeado diretamente do campo CEF correspondente |
| mwType | metadata.description: mwType | Mapeado diretamente do campo CEF correspondente |
| os | principal.platform: valor derivado | A plataforma é derivada do campo "os": "Windows" é mapeado para WINDOWS, "MAC" é mapeado para MAC e "LINUX" é mapeado para LINUX. |
| página | network.http.referral_url: page | Mapeado diretamente do campo CEF correspondente |
| referer | network.http.referral_url: referer | Mapeado diretamente do campo CEF correspondente |
| requestClientApplication | network.http.parsed_user_agent: user agent analisado, network.http.user_agent: requestClientApplication | network.http.parsed_user_agent é derivado da análise do campo requestClientApplication usando o filtro "parseduseragent" |
| request_method | network.http.method: request_method | Mapeado diretamente do campo correspondente do Grok |
| rs-status | additional.fields[].key: "rs-status", additional.fields[].value.string_value: rs-status, network.http.response_code: rs-status | Mapeado diretamente do campo JSON correspondente |
| s-ip | target.asset.ip[]: s-ip, target.ip[]: s-ip | Mapeado diretamente do campo JSON correspondente |
| sc-bytes | network.received_bytes: sc-bytes | Mapeado diretamente do campo JSON correspondente |
| sc-content-type | additional.fields[].key: "sc-content-type", additional.fields[].value.string_value: sc-content-type | Mapeado diretamente do campo JSON correspondente |
| sc-status | network.http.response_code: sc-status | Mapeado diretamente do campo JSON correspondente |
| serverBytes | network.received_bytes: serverBytes | Mapeado diretamente do campo CEF correspondente |
| sha256 | target.file.sha256: sha256 | Mapeado diretamente do campo CEF correspondente |
| src | principal.ip[]: src | Mapeado diretamente do campo CEF correspondente |
| src_country | principal.location.country_or_region: src_country | Mapeado diretamente do campo correspondente do Grok |
| src_ip | principal.asset.ip[]: src_ip, principal.ip[]: src_ip | Mapeado diretamente do campo correspondente do Grok |
| src_location | principal.location.city: src_location | Mapeado diretamente do campo grokked correspondente |
| src_region | principal.location.state: src_region | Mapeado diretamente do campo correspondente do Grok |
| src_latitude | Não mapeado | Este campo não está mapeado para a UDM |
| src_longitude | Não mapeado | Este campo não está mapeado para a UDM |
| src_zip | Não mapeado | Este campo não está mapeado para a UDM |
| suser | principal.user.user_display_name: suser | Mapeado diretamente do campo CEF correspondente |
| target_host | target.asset.hostname[]: target_host, target.hostname: target_host | Mapeado diretamente do campo grokked correspondente |
| tempo | metadata.event_timestamp.seconds: segundos da época dos campos de data e hora, metadata.event_timestamp.nanos: 0 | A data e a hora são combinadas e convertidas em segundos e nanossegundos de época. Os nanossegundos são definidos como 0. |
| timestamp | metadata.event_timestamp.seconds: timestamp | Mapeado diretamente do campo CEF correspondente |
| ts | metadata.event_timestamp.seconds: Epoch seconds from ts, metadata.event_timestamp.nanos: 0 | O carimbo de data/hora é convertido em segundos e nanossegundos de época. Os nanossegundos são definidos como 0. |
| url | target.url: url | Mapeado diretamente do campo CEF correspondente |
| user_agent | network.http.parsed_user_agent: user agent analisado, network.http.user_agent: user_agent | network.http.parsed_user_agent é derivado da análise do campo user_agent usando o filtro "parseduseragent". |
| user_key | principal.user.email_addresses[]: user_key | Mapeado diretamente do campo correspondente do Grok |
| versão | Não mapeado | Este campo não está mapeado para a UDM |
| x-c-browser | additional.fields[].key: "x-c-browser", additional.fields[].value.string_value: x-c-browser | Mapeado diretamente do campo JSON correspondente |
| x-c-browser-version | additional.fields[].key: "x-c-browser-version", additional.fields[].value.string_value: x-c-browser-version | Mapeado diretamente do campo JSON correspondente |
| x-c-country | principal.location.country_or_region: x-c-country | Mapeado diretamente do campo JSON correspondente |
| x-c-device | additional.fields[].key: "x-c-device", additional.fields[].value.string_value: x-c-device | Mapeado diretamente do campo JSON correspondente |
| x-c-latitude | principal.location.region_coordinates.latitude: x-c-latitude | Mapeado diretamente do campo JSON correspondente |
| x-c-local-time | security_result.detection_fields[].key: "x-c-local-time", security_result.detection_fields[].value: x-c-local-time | Mapeado diretamente do campo JSON correspondente |
| x-c-location | principal.location.name: x-c-location | Mapeado diretamente do campo JSON correspondente |
| x-c-longitude | principal.location.region_coordinates.longitude: x-c-longitude | Mapeado diretamente do campo JSON correspondente |
| x-c-os | principal.platform: valor derivado | A plataforma é derivada do campo x-c-os: "Windows" é mapeado para WINDOWS, "MAC" é mapeado para MAC e "LINUX" é mapeado para LINUX. |
| x-c-region | principal.location.state: x-c-region | Mapeado diretamente do campo JSON correspondente |
| x-c-zipcode | additional.fields[].key: "x-c-zipcode", additional.fields[].value.string_value: x-c-zipcode | Mapeado diretamente do campo JSON correspondente |
| x-category | additional.fields[].key: "x-category", additional.fields[].value.string_value: x-category | Mapeado diretamente do campo JSON correspondente |
| x-category-id | additional.fields[].key: "x-category-id", additional.fields[].value.string_value: x-category-id | Mapeado diretamente do campo JSON correspondente |
| x-cs-access-method | additional.fields[].key: "accessMethod", additional.fields[].value.string_value: x-cs-access-method | Mapeado diretamente do campo JSON correspondente |
| x-cs-app | principal.application: x-cs-app, additional.fields[].key: "x-cs-app", additional.fields[].value.string_value: x-cs-app | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-activity | additional.fields[].key: "x-cs-app-activity", additional.fields[].value.string_value: x-cs-app-activity | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-category | additional.fields[].key: "x-cs-app-category", additional.fields[].value.string_value: x-cs-app-category | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-cci | additional.fields[].key: "x-cs-app-cci", additional.fields[].value.string_value: x-cs-app-cci | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-from-user | additional.fields[].key: "x-cs-app-from-user", additional.fields[].value.string_value: x-cs-app-from-user | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-object-id | additional.fields[].key: "x-cs-app-object-id", additional.fields[].value.string_value: x-cs-app-object-id | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-object-name | additional.fields[].key: "x-cs-app-object-name", additional.fields[].value.string_value: x-cs-app-object-name | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-object-type | additional.fields[].key: "x-cs-app-object-type", additional.fields[].value.string_value: x-cs-app-object-type | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-suite | additional.fields[].key: "x-cs-app-suite", additional.fields[].value.string_value: x-cs-app-suite | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-tags | additional.fields[].key: "x-cs-app-tags", additional.fields[].value.string_value: x-cs-app-tags | Mapeado diretamente do campo JSON correspondente |
| x-cs-app-to-user | additional.fields[].key: "x-cs-app-to-user", additional.fields[].value.string_value: x-cs-app-to-user | Mapeado diretamente do campo JSON correspondente |
| x-cs-dst-ip | security_result.detection_fields[].key: "x-cs-dst-ip", security_result.detection_fields[].value: x-cs-dst-ip, target.asset.ip[]: x-cs-dst-ip, target.ip[]: x-cs-dst-ip | Mapeado diretamente do campo JSON correspondente |
| x-cs-dst-port | security_result.detection_fields[].key: "x-cs-dst-port", security_result.detection_fields[].value: x-cs-dst-port, target.port: x-cs-dst-port | Mapeado diretamente do campo JSON correspondente |
| x-cs-http-version | security_result.detection_fields[].key: "x-cs-http-version", security_result.detection_fields[].value: x-cs-http-version | Mapeado diretamente do campo JSON correspondente |
| x-cs-page-id | additional.fields[].key: "x-cs-page-id", additional.fields[].value.string_value: x-cs-page-id | Mapeado diretamente do campo JSON correspondente |
| x-cs-session-id | network.session_id: x-cs-session-id | Mapeado diretamente do campo JSON correspondente |
| x-cs-site | additional.fields[].key: "x-cs-site", additional.fields[].value.string_value: x-cs-site | Mapeado diretamente do campo JSON correspondente |
| x-cs-sni | network.tls.client.server_name: x-cs-sni | Mapeado diretamente do campo JSON correspondente |
| x-cs-src-ip | principal.asset.ip[]: x-cs-src-ip, principal.ip[]: x-cs-src-ip, security_result.detection_fields[].key: "x-cs-src-ip", security_result.detection_fields[].value: x-cs-src-ip | Mapeado diretamente do campo JSON correspondente |
| x-cs-src-ip-egress | principal.asset.ip[]: x-cs-src-ip-egress, principal.ip[]: x-cs-src-ip-egress, security_result.detection_fields[].key: "x-cs-src-ip-egress", security_result.detection_fields[].value: x-cs-src-ip-egress | Mapeado diretamente do campo JSON correspondente |
| x-cs-src-port | principal.port: x-cs-src-port, security_result.detection_fields[].key: "x-cs-src-port", security_result.detection_fields[].value: x-cs-src-port | Mapeado diretamente do campo JSON correspondente |
| x-cs-ssl-cipher | network.tls.cipher: x-cs-ssl-cipher | Mapeado diretamente do campo JSON correspondente |
| x-cs-ssl-fronting-error | security_result.detection_fields[].key: "x-cs-ssl-fronting-error", security_result.detection_fields[].value: x-cs-ssl-fronting-error | Mapeado diretamente do campo JSON correspondente |
| x-cs-ssl-handshake-error | security_result.detection_fields[].key: "x-cs-ssl-handshake-error", security_result.detection_fields[].value: x-cs-ssl-handshake-error | Mapeado diretamente do campo JSON correspondente |
| x-cs-ssl-ja3 | network.tls.client.ja3: x-cs-ssl-ja3 | Mapeado diretamente do campo JSON correspondente |
| x-cs-ssl-version | network.tls.version: x-cs-ssl-version | Mapeado diretamente do campo JSON correspondente |
| x-cs-timestamp | metadata.event_timestamp.seconds: x-cs-timestamp | Mapeado diretamente do campo JSON correspondente |
| x-cs-traffic-type | additional.fields[].key: "trafficType", additional.fields[].value.string_value: x-cs-traffic-type | Mapeado diretamente do campo JSON correspondente |
| x-cs-tunnel-src-ip | security_result.detection_fields[].key: "x-cs-tunnel-src-ip", security_result.detection_fields[].value: x-cs-tunnel-src-ip | Mapeado diretamente do campo JSON correspondente |
| x-cs-uri-path | additional.fields[].key: "x-cs-uri-path", additional.fields[].value.string_value: x-cs-uri-path | Mapeado diretamente do campo JSON correspondente |
| x-cs-url | target.url: x-cs-url | Mapeado diretamente do campo JSON correspondente |
| x-cs-userip | security_result.detection_fields[].key: "x-cs-userip", security_result.detection_fields[].value: x-cs-userip | Mapeado diretamente do campo JSON correspondente |
| x-other-category | security_result.category_details[]: x-other-category | Mapeado diretamente do campo JSON correspondente |
| x-other-category-id | security_result.detection_fields[].key: "x-other-category-id", security_result.detection_fields[].value: x-other-category-id | Mapeado diretamente do campo JSON correspondente |
| x-policy-action | security_result.action: valor derivado, security_result.action_details: x-policy-action | security_result.action é derivado da conversão de x-policy-action em maiúsculas. Se o valor em maiúsculas for "ALLOW" ou "BLOCK", ele será usado diretamente. Caso contrário, ele não será mapeado. "security_result.action_details" é mapeado diretamente de "x-policy-action". |
| x-policy-dst-host | security_result.detection_fields[].key: "x-policy-dst-host", security_result.detection_fields[].value: x-policy-dst-host | Mapeado diretamente do campo JSON correspondente |
| x-policy-dst-host-source | security_result.detection_fields[].key: "x-policy-dst-host-source", security_result.detection_fields[].value: x-policy-dst-host-source | Mapeado diretamente do campo JSON correspondente |
| x-policy-dst-ip | security_result.detection_fields[].key: "x-policy-dst-ip", security_result.detection_fields[].value: x-policy-dst-ip | Mapeado diretamente do campo JSON correspondente |
| x-policy-name | security_result.rule_name: x-policy-name | Mapeado diretamente do campo JSON correspondente |
| x-policy-src-ip | security_result.detection_fields[].key: "x-policy-src-ip", security_result.detection_fields[].value: x-policy-src-ip | Mapeado diretamente do campo JSON correspondente |
| x-r-cert-enddate | network.tls.server.certificate.not_after.seconds: segundos da Era Unix de x-r-cert-enddate | A data é convertida em segundos de época. |
| x-r-cert-expired | additional.fields[].key: "x-r-cert-expired", additional.fields[].value.string_value: x-r-cert-expired | Mapeado diretamente do campo JSON correspondente |
| x-r-cert-incomplete-chain | additional.fields[].key: "x-r-cert-incomplete-chain", additional.fields[].value.string_value: x-r-cert-incomplete-chain | Mapeado diretamente do campo JSON correspondente |
| x-r-cert-issuer-cn | network.tls.server.certificate.issuer: x-r-cert-issuer-cn | Mapeado diretamente do campo JSON correspondente |
| x-r-cert-mismatch | additional.fields[].key: "x-r-cert-mismatch", additional.fields[].value.string_value: x-r-cert-mismatch | Mapeado diretamente do campo JSON correspondente |
| x-r-cert-revoked | additional.fields[].key: "x-r-cert-revoked", additional.fields[].value.string_value: x-r-cert-revoked | Mapeado diretamente do campo JSON correspondente |
| x-r-cert-self-signed | additional.fields[].key: "x-r-cert-self-signed", additional.fields[].value.string_value: x-r-cert-self-signed | Mapeado diretamente do campo JSON correspondente |
| x-r-cert-startdate | network.tls.server.certificate.not_before.seconds: segundos da Era Unix de x-r-cert-startdate | A data é convertida em segundos de época. |
| x-r-cert-subject-cn | network.tls.server.certificate.subject: x-r-cert-subject-cn | Mapeado diretamente do campo JSON correspondente |
| x-r-cert-untrusted-root | additional.fields[].key: "x-r-cert-untrusted-root", additional.fields[].value.string_value: x-r-cert-untrusted-root | Mapeado diretamente do campo JSON correspondente |
| x-r-cert-valid | additional.fields[].key: "x-r-cert-valid", additional.fields[].value.string_value: x-r-cert-valid | Mapeado diretamente do campo JSON correspondente |
| ID do x-request | additional.fields[].key: "requestId", additional.fields[].value.string_value: x-request-id | Mapeado diretamente do campo JSON correspondente |
| x-rs-file-category | additional.fields[].key: "x-rs-file-category", additional.fields[].value.string_value: x-rs-file-category | Mapeado diretamente do campo JSON correspondente |
| x-rs-file-type | additional.fields[].key: "x-rs-file-type", additional.fields[].value.string_value: x-rs-file-type | Mapeado diretamente do campo JSON correspondente |
| x-s-country | target.location.country_or_region: x-s-country | Mapeado diretamente do campo JSON correspondente |
| x-s-dp-name | additional.fields[].key: "x-s-dp-name", additional.fields[].value.string_value: x-s-dp-name | Mapeado diretamente do campo JSON correspondente |
| x-s-latitude | target.location.region_coordinates.latitude: x-s-latitude | Mapeado diretamente do campo JSON correspondente |
| x-s-location | target.location.name: x-s-location | Mapeado diretamente do campo JSON correspondente |
| x-s-longitude | target.location.region_coordinates.longitude: x-s-longitude | Mapeado diretamente do campo JSON correspondente |
| x-s-region | target.location.state: x-s-region | Mapeado diretamente do campo JSON correspondente |
| x-s-zipcode | additional.fields[].key: "x-s-zipcode", additional.fields[].value.string_value: x-s-zipcode | Mapeado diretamente do campo JSON correspondente |
| x-sr-ssl-cipher | security_result.detection_fields[].key: "x-sr-ssl-cipher", security_result.detection_fields[].value: x-sr-ssl-cipher | Mapeado diretamente do campo JSON correspondente |
| x-sr-ssl-client-certificate-error | security_result.detection_fields[].key: "x-sr-ssl-client-certificate-error", security_result.detection_fields[].value: x-sr-ssl-client-certificate-error | Mapeado diretamente do campo JSON correspondente |
| x-sr-ssl-engine-action | security_result.detection_fields[].key: "x-sr-ssl-engine-action", security_result.detection_fields[].value: x-sr-ssl-engine-action | Mapeado diretamente do campo JSON correspondente |
| x-sr-ssl-engine-action-reason | security_result.detection_fields[].key: "x-sr-ssl-engine-action-reason", security_result.detection_fields[].value: x-sr-ssl-engine-action-reason | Mapeado diretamente do campo JSON correspondente |
| x-sr-ssl-handshake-error | security_result.detection_fields[].key: "x-sr-ssl-handshake-error", security_result.detection_fields[].value: x-sr-ssl-handshake-error | Mapeado diretamente do campo JSON correspondente |
| x-sr-ssl-ja3s | network.tls.server.ja3s: x-sr-ssl-ja3s | Mapeado diretamente do campo JSON correspondente |
| x-sr-ssl-malformed-ssl | security_result.detection_fields[].key: "x-sr-ssl-malformed-ssl", security_result.detection_fields[].value: x-sr-ssl-malformed-ssl | Mapeado diretamente do campo JSON correspondente |
| x-sr-ssl-version | security_result.detection_fields[].key: "x-sr-ssl-version", security_result.detection_fields[].value: x-sr-ssl-version | Mapeado diretamente do campo JSON correspondente |
| x-s-custom-signing-ca-error | security_result.detection_fields[].key: "x-s-custom-signing-ca-error", security_result.detection_fields[].value: x-s-custom-signing-ca-error | Mapeado diretamente do campo JSON correspondente |
| x-ssl-bypass | security_result.detection_fields[].key: "SSL BYPASS", security_result.detection_fields[].value: x-ssl-bypass ou x-ssl-bypass-reason | Se x-ssl-bypass for "Yes" e x-ssl-bypass-reason estiver presente, o valor de x-ssl-bypass-reason será usado. Caso contrário, o valor de x-ssl-bypass será usado. |
| x-ssl-policy-action | security_result.detection_fields[].key: "x-ssl-policy-action", security_result.detection_fields[].value: x-ssl-policy-action | Mapeado diretamente do campo JSON correspondente |
| x-ssl-policy-categories | security_result.category_details[]: x-ssl-policy-categories | Mapeado diretamente do campo JSON correspondente |
| x-ssl-policy-dst-host | security_result.detection_fields[].key: "x-ssl-policy-dst-host", security_result.detection_fields[].value: x-ssl-policy-dst-host | Mapeado diretamente do campo JSON correspondente |
| x-ssl-policy-dst-host-source | security_result.detection_fields[].key: "x-ssl-policy-dst-host-source", security_result.detection_fields[].value: x-ssl-policy-dst-host-source | Mapeado diretamente do campo JSON correspondente |
| x-ssl-policy-dst-ip | security_result.detection_fields[].key: "x-ssl-policy-dst-ip", security_result.detection_fields[].value: x-ssl-policy-dst-ip | Mapeado diretamente do campo JSON correspondente |
| x-ssl-policy-name | security_result.rule_name: x-ssl-policy-name | Mapeado diretamente do campo JSON correspondente |
| x-ssl-policy-src-ip | security_result.detection_fields[].key: "x-ssl-policy-src-ip", security_result.detection_fields[].value: x-ssl-policy-src-ip | Mapeado diretamente do campo JSON correspondente |
| x-sr-dst-ip | security_result.detection_fields[].key: "x-sr-dst-ip", security_result.detection_fields[].value: x-sr-dst-ip | Mapeado diretamente do campo JSON correspondente |
| x-sr-dst-port | security_result.detection_fields[].key: "x-sr-dst-port", security_result.detection_fields[].value: x-sr-dst-port | Mapeado diretamente do campo JSON correspondente |
| x-type | additional.fields[].key: "xType", additional.fields[].value.string_value: x-type | Mapeado diretamente do campo JSON correspondente |
| x-transaction-id | additional.fields[].key: "transactionId", additional.fields[].value.string_value: x-transaction-id | Mapeado diretamente do campo JSON correspondente |
| metadata.vendor_name | Defina como "Netskope". | |
| metadata.product_name | Defina como "Netskope Webproxy" se ainda não estiver presente. | |
| metadata.log_type | Defina como "NETSKOPE_WEBPROXY" |
Registro de alterações
Ver o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.