Recolha registos de alertas do Netskope v1

Compatível com:

Vista geral

Este analisador extrai registos de alertas do Netskope de mensagens formatadas em JSON, transformando-os no UDM do Google Security Operations. Normaliza campos, analisa datas/horas, processa alertas e gravidades, extrai informações de rede (IPs, portas, protocolos), enriquece os dados de utilizadores e ficheiros, e mapeia campos para a estrutura UDM. O analisador também processa atividades específicas do Netskope, como inícios de sessão e eventos de DLP, e adiciona etiquetas personalizadas para um contexto melhorado.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps.
  • Acesso privilegiado ao Netskope.

Ative o acesso à API REST da Netskope

  1. Inicie sessão no inquilino do Netskope com as suas credenciais de administrador.
  2. Aceda a Definições > Ferramentas > API REST v1.
  3. Crie uma nova chave da API especificamente para o Google SecOps.
  4. Indique um nome descritivo (por exemplo, Chave do Google SecOps).
  5. Copie e guarde a chave e o segredo gerados.

Configure feeds

Para configurar um feed, siga estes passos:

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na página seguinte, clique em Configurar um único feed.
  4. No campo Nome do feed, introduza um nome para o feed; por exemplo, Registos de alertas do Netskope.
  5. Selecione API de terceiros como o Tipo de origem.
  6. Selecione Netskope como o Tipo de registo.
  7. Clicar em Seguinte.
  8. Especifique valores para os seguintes parâmetros de entrada:
    • Cabeçalho HTTP de autenticação: par de chaves gerado anteriormente no formato <key>:<secret>, usado para autenticação na API Netskope.
    • Nome de anfitrião da API: o FQDN (nome de domínio totalmente qualificado) do seu ponto final da API REST da Netskope (por exemplo, myinstance.goskope.com).
    • Ponto final da API: introduza alerts.
    • Tipo de conteúdo: introduza tudo.
  9. Clicar em Seguinte.
  10. Reveja a configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

Opcional: adicione uma configuração de feed para carregar registos de eventos do Netskope

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, introduza um nome para o feed (por exemplo, Registos de eventos do Netskope).
  4. Selecione API de terceiros como o Tipo de origem.
  5. Selecione Netskope como o Tipo de registo.
  6. Clicar em Seguinte.
  7. Especifique valores para os seguintes parâmetros de entrada:
    • Cabeçalho HTTP de autenticação: par de chaves gerado anteriormente no formato <key>:<secret>, usado para autenticação na API Netskope.
    • Nome de anfitrião da API: o FQDN (nome de domínio totalmente qualificado) do seu ponto final da API REST da Netskope (por exemplo, myinstance.goskope.com).
    • Ponto final da API: introduza events.
    • Tipo de conteúdo: introduza página, aplicação, auditoria, infraestrutura ou rede, consoante os eventos que quer analisar.
    • Espaço de nomes do recurso: o espaço de nomes do recurso.
    • Etiquetas de carregamento: a etiqueta aplicada aos eventos deste feed.
  8. Clicar em Seguinte.
  9. Reveja a configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
access_method extensions.auth.auth_details Mapeado diretamente a partir do campo access_method.
action security_result.action Mapeado diretamente a partir do campo action ou definido como QUARANTINE se action for "alert" ou "bypass". ALLOW se action for permitido. BLOCK se action estiver bloqueado.
action security_result.action_details Mapeado a partir do campo action se for "alert" ou "bypass".
activity security_result.description Mapeado diretamente a partir do campo activity.
alert is_alert Definido como true se alert for "sim", caso contrário, false.
alert_name - Não está mapeado para o objeto IDM.
alert_type security_result.category_details Mapeado diretamente a partir do campo alert_type.
app target.application Mapeado diretamente a partir do campo app.
app_activity additional.fields{key:"app_activity", value:{string_value: }} Mapeado diretamente a partir do campo app_activity como um par de chave-valor em additional.fields.
app_session_id target.resource.attribute.labels{key:"App Session Id", value: } Extraído do campo message através do grok e adicionado como uma etiqueta.
appcategory security_result.category_details Mapeado diretamente a partir do campo appcategory se category estiver vazio.
browser network.http.user_agent Mapeado diretamente a partir do campo browser, se não for "desconhecido".
browser_version network.http.parsed_user_agent.browser_version Mapeado diretamente a partir do campo browser_version.
browser_version network.http.parsed_user_agent.family Definido como "USER_DEFINED" se browser_version estiver presente.
category security_result.category_details Mapeado diretamente a partir do campo category.
cci security_result.detection_fields{key:"cci", value: } Mapeado diretamente a partir do campo cci como um par de chave-valor em detection_fields.
ccl security_result.confidence Definido com base no valor de ccl: "mau" ou "baixo" é mapeado para LOW_CONFIDENCE, "médio" para MEDIUM_CONFIDENCE e "alto" ou "excelente" para HIGH_CONFIDENCE.
ccl security_result.confidence_details Mapeado diretamente a partir do campo ccl.
client_bytes network.sent_bytes Mapeado diretamente a partir do campo client_bytes após a conversão para um número inteiro não assinado.
count additional.fields{key:"count", value:{string_value: }} Mapeado diretamente a partir do campo count como um par de chave-valor em additional.fields.
device principal.resource.resource_subtype Mapeado diretamente a partir do campo device.
device principal.resource.type Definido como "DEVICE" se o campo device estiver presente.
dlp_file target.file.full_path Mapeado diretamente a partir do campo dlp_file, se estiver presente, caso contrário, a partir de file_path.
dlp_profile security_result.rule_type Mapeado diretamente a partir do campo dlp_profile.
dlp_rule security_result.rule_name Mapeado diretamente a partir do campo dlp_rule.
dlp_rule_severity security_result.severity Mapeado diretamente a partir do campo dlp_rule_severity se alert_type for DLP.
dlp_rule_severity _severity Mapeado a partir do campo dlp_rule_severity se severity estiver vazio.
domain target.asset.hostname Mapeado diretamente a partir do campo domain.
domain target.hostname Mapeado diretamente a partir do campo domain.
dsthost target.asset.hostname Mapeado diretamente a partir do campo dsthost se não for um IP e dstip estiver vazio. Caso contrário, é mapeado para target.hostname.
dsthost target.hostname Mapeado diretamente a partir do campo dsthost se não for um IP e dstip não estiver vazio.
dstip target.asset.ip Mapeado diretamente a partir do campo dstip.
dstip target.ip Mapeado diretamente a partir do campo dstip.
dstport target.port Mapeado diretamente a partir do campo dstport após a conversão para número inteiro.
dst_country target.location.country_or_region Mapeado diretamente a partir do campo dst_country.
dst_location target.location.city Mapeado diretamente a partir do campo dst_location.
dst_region target.location.name Mapeado diretamente a partir do campo dst_region.
file_path target.file.full_path Mapeado diretamente a partir do campo file_path se dlp_file estiver vazio.
file_size target.file.size Mapeado diretamente a partir do campo file_size após a conversão para um número inteiro não assinado.
file_type target.file.mime_type Mapeado diretamente a partir do campo file_type, se não for "Desconhecido".
from_user network.email.from Mapeado diretamente a partir do campo from_user, se for um endereço de email.
from_user_category principal.resource.attribute.labels{key:"From User Category", value: } Mapeado diretamente a partir do campo from_user_category como um par de chave-valor em principal.resource.attribute.labels.
hostname principal.asset.hostname Mapeado diretamente a partir do campo hostname, se não estiver vazio, caso contrário, a partir de instance_id.
hostname principal.hostname Mapeado diretamente a partir do campo hostname, se não estiver vazio, caso contrário, a partir de instance_id.
id.time metadata.event_timestamp Analisado e mapeado para event_timestamp nos metadados.
instance_id principal.asset.hostname Mapeado diretamente a partir do campo instance_id se hostname estiver vazio.
instance_id principal.hostname Mapeado diretamente a partir do campo instance_id se hostname estiver vazio.
intermediary intermediary Mapeado diretamente a partir do campo intermediary.
ip_protocol network.ip_protocol Mapeado a partir do campo ip_protocol após a análise do ficheiro parse_ip_protocol.include.
ja3 network.tls.client.ja3 Mapeado diretamente a partir do campo ja3 se corresponder a um padrão hexadecimal.
ja3s network.tls.server.ja3s Mapeado diretamente a partir do campo ja3s se corresponder a um padrão hexadecimal.
malware_id security_result.threat_id Mapeado diretamente a partir do campo malware_id.
malware_name security_result.threat_name Mapeado diretamente a partir do campo malware_name.
malware_severity security_result.severity Mapeado diretamente a partir do campo malware_severity após a conversão para letras maiúsculas.
malware_type security_result.detection_fields{key:"Malware Type", value: } Mapeado diretamente a partir do campo malware_type como um par de chave-valor em detection_fields.
matched_username principal.user.email_addresses Mapeado diretamente a partir do campo matched_username, se for um endereço de email.
md5 target.file.md5 Mapeado diretamente a partir do campo md5 se não estiver vazio ou for "Não disponível".
metadata.event_type metadata.event_type Inicialmente, definido como "GENERIC_EVENT" e, em seguida, potencialmente substituído com base noutros campos. Defina como NETWORK_HTTP se srcip ou hostname e dstip ou dsthost ou domain estiverem presentes. Defina como STATUS_UPDATE se srcip ou hostname estiverem presentes, mas não dstip, dsthost nem domain. Definido como USER_UNCATEGORIZED se user estiver presente. Definido como EMAIL_UNCATEGORIZED se activity for "Introspection Scan" e shared_with ou from_user estiverem presentes. Defina como USER_LOGIN se activity for "Login Failed", "Login Successful" ou "Login Attempt".
metadata.log_type metadata.log_type Definido como "NETSKOPE_ALERT".
metadata.product_log_id metadata.product_log_id Mapeado diretamente a partir do campo _id.
metadata.product_name metadata.product_name Definido como "Netskope Alert".
metadata.vendor_name metadata.vendor_name Definir como "Netskope".
netskope_pop observer.hostname Mapeado diretamente a partir do campo netskope_pop.
object additional.fields{key:"Object", value:{string_value: }} Mapeado diretamente a partir do campo object como um par de chave-valor em additional.fields.
object_id additional.fields{key:"Object id", value:{string_value: }} Mapeado diretamente a partir do campo object_id como um par de chave-valor em additional.fields.
object_type additional.fields{key:"Object type", value:{string_value: }} Mapeado diretamente a partir do campo object_type como um par de chave-valor em additional.fields.
organization_unit principal.administrative_domain Mapeado diretamente a partir do campo organization_unit.
os principal.platform Mapeado a partir do campo os: "Windows" é mapeado para WINDOWS, "MAC" para MAC e "LINUX" para LINUX.
os_version principal.platform_version Mapeado diretamente a partir do campo os_version.
other_categories - Não está mapeado para o objeto IDM.
page network.http.referral_url Mapeado diretamente a partir do campo page se referer estiver vazio.
policy security_result.summary Mapeado diretamente a partir do campo policy.
principal.user.email_addresses principal.user.email_addresses Unido a partir do campo user, se for um endereço de email.
protocol network.application_protocol Mapeado diretamente a partir do campo protocol após remover tudo o que se encontra depois do primeiro "/". Convertido para letras maiúsculas.
publisher_cn additional.fields{key:"publisher_cn", value:{string_value: }} Mapeado diretamente a partir do campo publisher_cn como um par de chave-valor em additional.fields.
publisher_name additional.fields{key:"publisher_name", value:{string_value: }} Mapeado diretamente a partir do campo publisher_name como um par de chave-valor em additional.fields.
referer network.http.referral_url Mapeado diretamente a partir do campo referer.
security_result.alert_state security_result.alert_state Definido como "ALERTING" se alert for "yes", "NOT_ALERTING" se alert for "no" e "UNSPECIFIED" caso contrário.
security_result.category_details security_result.category_details Unido a partir dos campos category, appcategory ou alert_type.
security_result.confidence security_result.confidence Derivado do campo ccl.
security_result.confidence_details security_result.confidence_details Mapeado diretamente a partir do campo ccl.
security_result.description security_result.description Mapeado diretamente a partir do campo activity.
security_result.rule_name security_result.rule_name Mapeado diretamente a partir do campo dlp_rule.
security_result.rule_type security_result.rule_type Mapeado diretamente a partir do campo dlp_profile.
security_result.severity security_result.severity Derivados dos campos _severity, malware_severity ou dlp_rule_severity.
security_result.summary security_result.summary Mapeado diretamente a partir do campo policy.
security_result.threat_id security_result.threat_id Mapeado diretamente a partir do campo malware_id.
security_result.threat_name security_result.threat_name Mapeado diretamente a partir do campo malware_name.
server_bytes network.received_bytes Mapeado diretamente a partir do campo server_bytes após a conversão para um número inteiro não assinado.
severity _severity Mapeado diretamente a partir do campo severity.
sha256 target.file.sha256 Mapeado diretamente a partir do campo sha256.
shared_with network.email.to Analisado a partir do campo shared_with e adicionado à matriz network.email.to se for um endereço de email.
site additional.fields{key:"site", value:{string_value: }} Mapeado diretamente a partir do campo site como um par de chave-valor em additional.fields.
src_country principal.location.country_or_region Mapeado diretamente a partir do campo src_country.
src_latitude principal.location.region_latitude Mapeado diretamente a partir do campo src_latitude.
src_location principal.location.city Mapeado diretamente a partir do campo src_location.
src_longitude principal.location.region_longitude Mapeado diretamente a partir do campo src_longitude.
src_region principal.location.name Mapeado diretamente a partir do campo src_region.
srcip principal.asset.ip Extraído do campo srcip através do grok e unido às matrizes principal.asset.ip e principal.ip.
srcip principal.ip Extraído do campo srcip através do grok e unido às matrizes principal.asset.ip e principal.ip.
srcport principal.port Mapeado diretamente a partir do campo srcport após a conversão para número inteiro.
target.user.email_addresses target.user.email_addresses Unido a partir do campo to_user, se for um endereço de email.
threat_match_field security_result.detection_fields{key:"Threat Match Field", value: } Mapeado diretamente a partir do campo threat_match_field como um par de chave-valor em detection_fields.
timestamp metadata.event_timestamp Analisado a partir dos campos timestamp ou id.time.
to_user target.user.email_addresses Analisado a partir do campo to_user e adicionado à matriz target.user.email_addresses se for um endereço de email.
to_user_category target.resource.attribute.labels{key:"To User Category", value: } Mapeado diretamente a partir do campo to_user_category como um par de chave-valor em target.resource.attribute.labels.
traffic_type security_result.detection_fields{key:"traffic_type", value: } Mapeado diretamente a partir do campo traffic_type como um par de chave-valor em detection_fields.
tunnel_id additional.fields{key:"tunnel_id", value:{string_value: }} Mapeado diretamente a partir do campo tunnel_id como um par de chave-valor em additional.fields.
tunnel_type additional.fields{key:"tunnel_type", value:{string_value: }} Mapeado diretamente a partir do campo tunnel_type como um par de chave-valor em additional.fields.
type security_result.detection_fields{key:"type", value: } Mapeado diretamente a partir do campo type como um par de chave-valor em detection_fields.
ur_normalized - Não está mapeado para o objeto IDM.
url target.url Mapeado diretamente a partir do campo url.
user event.idm.read_only_udm.principal.user.userid Mapeado diretamente a partir do campo user.
user principal.user.email_addresses Mapeado diretamente a partir do campo user, se for um endereço de email.
useragent network.http.user_agent Mapeado diretamente a partir do campo useragent.
useragent network.http.parsed_user_agent Convertido em parseduseragent e mapeado para network.http.parsed_user_agent.
user_agent network.http.user_agent Mapeado diretamente a partir do campo user_agent.
user_agent network.http.parsed_user_agent Convertido em parseduseragent e mapeado para network.http.parsed_user_agent.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.