Coletar registros de proxy da Web do Netskope
Este documento explica como ingerir registros de proxy da Web do Netskope no Google Security Operations usando o Google 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 todas as sessões HTTP e HTTPS processadas pelo proxy do Netskope, incluindo identidade do usuário, aplicativo, categoria de URL, veredictos de ameaças e DLP e metadados de rede.
Antes de começar
Verifique se você atende os seguintes pré-requisitos:
- Uma instância do Google SecOps
- Um projeto do GCP com a API Cloud Storage ativada
- Permissões para criar e gerenciar buckets do GCS
- Permissões para gerenciar políticas do IAM em buckets do GCS
- Acesso privilegiado ao locatário do Netskope com credenciais de administrador
Opção: transmissão de registros do Netskope para o Google 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 GCS como arquivos .gzip compactados em um intervalo fixo de 240 segundos.
Criar um bucket do Google Cloud Storage
- Acesse o Console do Google 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 exclusivo globalmente, por exemplo, netskope-webtx-logs.Tipo de local Escolha com base nas 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.
Criar uma conta de serviço do GCP
O streaming de registros do Netskope exige uma conta de serviço do GCP com permissões de gravação no seu bucket do GCS. A chave privada dessa conta de serviço é usada pelo Netskope para autenticar ao enviar arquivos de registro.
- No Console do GCP, 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 chave JSON
- Em IAM e administrador > Contas de serviço, 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.
- Um arquivo de chave JSON é baixado automaticamente. Salve esse arquivo com segurança.
- Abra o arquivo de chave JSON em um editor de texto e localize o campo
private_key. Você vai precisar desse valor na próxima seção.
Conceder permissões de gravação no bucket do GCS
- 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 stream de registros
- Faça login no locatário do Netskope com credenciais de administrador.
- Acesse Configurações > Ferramentas > Transmissão de registros.
- Clique em Criar stream.
- No campo Nome, insira um nome legível para o fluxo (por exemplo,
Chronicle 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 GCS (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: insira o valor
private_keydo arquivo de chave JSON gerado na seção anterior. Insira a chave no formato PEM com símbolos de quebra de linha (\n):-----BEGIN PRIVATE KEY-----\nprivate_key_content\n-----END PRIVATE KEY-----\n
Confira as Opções de entrega: a frequência de push é de 240 segundos.
Clique em Salvar (ou Criar) para ativar o fluxo.
Configurar um feed no Google SecOps para ingerir registros do Netskope WebTx do GCS
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 GCS. 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 GCS com o caminho do prefixo:
gs://netskope-webtx-logs/netskope/webtx/- Substitua:
netskope-webtx-logs: o nome do bucket do GCS.netskope/webtx/: o prefixo de caminho configurado no streaming de registros do Netskope. 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: nunca exclui arquivos após as transferências (recomendado para testes).
- Excluir arquivos transferidos: exclui os arquivos após a transferência bem-sucedida.
Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios após a transferência bem-sucedida.
Idade máxima do arquivo: inclui 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 do papel de Leitor de objetos do Storage no seu bucket do GCS.
- 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 Leitor de objetos do Storage.
- Adicionar participantes: cole o e-mail da conta de serviço do Google SecOps (por exemplo,
- Clique em Salvar.
Opção: Cloud Exchange Log Shipper para o Google 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 GCS, que o Google SecOps lê por um feed do Google 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 de locatário e o módulo Log Shipper já configurados.
- O plug-in de origem CLS do Netskope configurado no Log Shipper (extrai dados do locatário do Netskope).
- Um bucket do GCS criado para armazenar registros do WebTx. Se você ainda não tiver criado um, siga as etapas em Criar um bucket do Google Cloud Storage.
- Uma conta de serviço do GCP com acesso de gravação ao bucket do GCS. Se você não tiver criado uma, siga as etapas em Criar uma conta de serviço do GCP, Gerar chave JSON e Conceder permissões de gravação no bucket do GCS.
Configurar o plug-in de destino do GCS
- Em Cloud Exchange, acesse Configurações > Plugin Store.
- Pesquise e selecione a caixa de 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 GCS (por exemplo,
netskope-webtx-logs). - Caminho (opcional): digite o caminho de uma pasta, por exemplo,
netskope/webtx/. - Chave privada: insira o valor
private_keydo arquivo de chave JSON da conta de serviço.
- 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 quiser filtrar registros do WebTx especificamente, crie uma regra de negócios:
- Em Log Shipper, acesse Regras de negócios.
- Clique em Criar nova regra.
- Insira um nome da regra (por exemplo,
WebTx Only). - Configure os filtros desejados para incluir apenas dados do WebTx.
- Clique em Salvar.
Configurar a entrega de registros
- Em Log Shipper, acesse Log Delivery.
- 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 GCS 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 GCS
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 o papel Leitor de objetos do Storage (ou Administrador de objetos do Storage se estiver usando uma opção de exclusão) no bucket do GCS à conta de serviço do Google SecOps.
Verificar a entrega de registro
Para verificar se os registros do WebTx estão sendo entregues ao bucket do GCS:
- Em Cloud Exchange, acesse Log Shipper > Entrega de registros.
- Verifique as colunas Total de registros/WebTx enviados ao destinatário 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 (3 novas tentativas): se a entrega de registros falhar, o Log Shipper vai iniciar três tentativas de enviar os registros ao destino. Se todas as três tentativas falharem, o lote de registros correspondente será descartado.
Tentar de novo até a entrega ser concluída: novas tentativas ilimitadas até a entrega dos registros ser concluída.
Também é possível 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 do 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: valor derivado, 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 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 correspondente do Grok. |
| dst_ip | target.asset.ip[]: dst_ip, target.ip[]: dst_ip | Mapeado diretamente do campo correspondente do Grok. |
| 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 correspondente do Grok. |
| dst_zip | Não mapeado | 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 do UDM | O campo de mensagem é analisado com base no fato de conter "CEF". Se for o caso, 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. |
| referenciador | 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 correspondente do Grok. |
| 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 correspondente do Grok. |
| 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: segundos da Era Unix de 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. |
| version | 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: Derived value, 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 or 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 | Definido como "Netskope" | |
| metadata.product_name | Defina como "Netskope Webproxy" se ainda não estiver presente. | |
| metadata.log_type | Defina como "NETSKOPE_WEBPROXY" |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.