Recopila registros de alertas de Netskope v1

Compatible con:

Descripción general

Este analizador extrae los registros de alertas de Netskope de los mensajes con formato JSON y los transforma en el UDM de Google Security Operations. Normaliza los campos, analiza las marcas de tiempo, controla las alertas y las gravedades, extrae información de la red (IP, puertos, protocolos), enriquece los datos de los usuarios y los archivos, y asigna los campos a la estructura del UDM. El analizador también controla actividades específicas de Netskope, como los eventos de DLP y los accesos, y agrega etiquetas personalizadas para mejorar el contexto.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps.
  • Acceso con privilegios a Netskope

Habilita el acceso a la API de REST de Netskope

  1. Accede al arrendatario de Netskope con tus credenciales de administrador.
  2. Ve a Configuración > Herramientas > API de REST v1.
  3. Crea una nueva clave de API específicamente para Google SecOps.
  4. Proporciona un nombre descriptivo (por ejemplo, Clave de Google SecOps).
  5. Copia y guarda la clave y el secreto generados.

Configura feeds

Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:

  • Configuración de SIEM > Feeds
  • Centro de contenido > Paquetes de contenido

Configura feeds en Configuración del SIEM > Feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración del SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo, Registros de alertas de Netskope.
  5. Selecciona API de terceros como el Tipo de origen.
  6. Selecciona Netskope como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:
    • Encabezado HTTP de autenticación: Par de claves generado anteriormente en formato <key>:<secret>, que se usa para la autenticación en la API de Netskope.
    • Nombre de host de la API: Es el FQDN (nombre de dominio completamente calificado) de tu extremo de API de REST de Netskope (por ejemplo, myinstance.goskope.com).
    • Extremo de API: Ingresa alerts.
    • Content Type: Ingresa all.
  9. Haz clic en Siguiente.
  10. Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Configura feeds desde el Centro de contenido

Especifica valores para los siguientes campos:

  • Encabezado HTTP de autenticación: Par de claves generado anteriormente en formato <key>:<secret>, que se usa para la autenticación en la API de Netskope.
  • Nombre de host de la API: Es el FQDN (nombre de dominio completamente calificado) de tu extremo de API de REST de Netskope (por ejemplo, myinstance.goskope.com).
  • Extremo de API: Ingresa alerts.
  • Content Type: Ingresa all.

Opciones avanzadas

  • Nombre del feed: Es un valor completado previamente que identifica el feed.
  • Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
  • Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
  • Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.

Opcional: Agrega una configuración del feed para transferir registros de eventos de Netskope

  1. Ve a Configuración del SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de eventos de Netskope).
  4. Selecciona API de terceros como el Tipo de origen.
  5. Selecciona Netskope como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:
    • Encabezado HTTP de autenticación: Par de claves generado anteriormente en formato <key>:<secret>, que se usa para la autenticación en la API de Netskope.
    • Nombre de host de la API: Es el FQDN (nombre de dominio completamente calificado) de tu extremo de API de REST de Netskope (por ejemplo, myinstance.goskope.com).
    • Extremo de API: Ingresa events.
    • Tipo de contenido: Ingresa página, aplicación, auditoría, infraestructura o red según los eventos que quieras analizar.
    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.
    • Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
  8. Haz clic en Siguiente.
  9. Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
access_method extensions.auth.auth_details Se asigna directamente desde el campo access_method.
action security_result.action Se asigna directamente desde el campo action o se establece en QUARANTINE si action es "alert" o "bypass". ALLOW si action es allow. BLOCK si action es block.
action security_result.action_details Se asigna desde el campo action si es "alert" o "bypass".
activity security_result.description Se asigna directamente desde el campo activity.
alert is_alert Se establece en true si alert es "yes"; de lo contrario, se establece en false.
alert_name - No se asignó al objeto IDM.
alert_type security_result.category_details Se asigna directamente desde el campo alert_type.
app target.application Se asigna directamente desde el campo app.
app_activity additional.fields{key:"app_activity", value:{string_value: }} Se asigna directamente desde el campo app_activity como un par clave-valor en additional.fields.
app_session_id target.resource.attribute.labels{key:"App Session Id", value: } Se extrae del campo message con Grok y se agrega como etiqueta.
appcategory security_result.category_details Se asigna directamente desde el campo appcategory si category está vacío.
browser network.http.user_agent Se asigna directamente desde el campo browser si no es "unknown".
browser_version network.http.parsed_user_agent.browser_version Se asigna directamente desde el campo browser_version.
browser_version network.http.parsed_user_agent.family Se establece en "USER_DEFINED" si browser_version está presente.
category security_result.category_details Se asigna directamente desde el campo category.
cci security_result.detection_fields{key:"cci", value: } Se asigna directamente desde el campo cci como un par clave-valor en detection_fields.
ccl security_result.confidence Se establece según el valor de ccl: "pobre" o "baja" se asignan a LOW_CONFIDENCE, "media" a MEDIUM_CONFIDENCE, y "alta" o "excelente" a HIGH_CONFIDENCE.
ccl security_result.confidence_details Se asigna directamente desde el campo ccl.
client_bytes network.sent_bytes Se asigna directamente desde el campo client_bytes después de convertirlo en un número entero sin signo.
count additional.fields{key:"count", value:{string_value: }} Se asigna directamente desde el campo count como un par clave-valor en additional.fields.
device principal.resource.resource_subtype Se asigna directamente desde el campo device.
device principal.resource.type Se establece en "DEVICE" si el campo device está presente.
dlp_file target.file.full_path Se asigna directamente desde el campo dlp_file si está presente; de lo contrario, se asigna desde file_path.
dlp_profile security_result.rule_type Se asigna directamente desde el campo dlp_profile.
dlp_rule security_result.rule_name Se asigna directamente desde el campo dlp_rule.
dlp_rule_severity security_result.severity Se asigna directamente desde el campo dlp_rule_severity si alert_type es DLP.
dlp_rule_severity _severity Se asigna desde el campo dlp_rule_severity si severity está vacío.
domain target.asset.hostname Se asigna directamente desde el campo domain.
domain target.hostname Se asigna directamente desde el campo domain.
dsthost target.asset.hostname Se asigna directamente desde el campo dsthost si no es una IP y dstip está vacío; de lo contrario, se asigna a target.hostname.
dsthost target.hostname Se asigna directamente desde el campo dsthost si no es una IP y dstip no está vacío.
dstip target.asset.ip Se asigna directamente desde el campo dstip.
dstip target.ip Se asigna directamente desde el campo dstip.
dstport target.port Se asigna directamente desde el campo dstport después de la conversión a número entero.
dst_country target.location.country_or_region Se asigna directamente desde el campo dst_country.
dst_location target.location.city Se asigna directamente desde el campo dst_location.
dst_region target.location.name Se asigna directamente desde el campo dst_region.
file_path target.file.full_path Se asigna directamente desde el campo file_path si dlp_file está vacío.
file_size target.file.size Se asigna directamente desde el campo file_size después de convertirlo en un número entero sin signo.
file_type target.file.mime_type Se asigna directamente desde el campo file_type si no es "Desconocido".
from_user network.email.from Se asigna directamente desde el campo from_user si es una dirección de correo electrónico.
from_user_category principal.resource.attribute.labels{key:"From User Category", value: } Se asigna directamente desde el campo from_user_category como un par clave-valor en principal.resource.attribute.labels.
hostname principal.asset.hostname Se asigna directamente desde el campo hostname si no está vacío; de lo contrario, se asigna desde instance_id.
hostname principal.hostname Se asigna directamente desde el campo hostname si no está vacío; de lo contrario, se asigna desde instance_id.
id.time metadata.event_timestamp Se analizó y se asignó a event_timestamp en los metadatos.
instance_id principal.asset.hostname Se asigna directamente desde el campo instance_id si hostname está vacío.
instance_id principal.hostname Se asigna directamente desde el campo instance_id si hostname está vacío.
intermediary intermediary Se asigna directamente desde el campo intermediary.
ip_protocol network.ip_protocol Se asigna desde el campo ip_protocol después de analizarse con el archivo parse_ip_protocol.include.
ja3 network.tls.client.ja3 Se asigna directamente desde el campo ja3 si coincide con un patrón hexadecimal.
ja3s network.tls.server.ja3s Se asigna directamente desde el campo ja3s si coincide con un patrón hexadecimal.
malware_id security_result.threat_id Se asigna directamente desde el campo malware_id.
malware_name security_result.threat_name Se asigna directamente desde el campo malware_name.
malware_severity security_result.severity Se asigna directamente desde el campo malware_severity después de convertirlo a mayúsculas.
malware_type security_result.detection_fields{key:"Malware Type", value: } Se asigna directamente desde el campo malware_type como un par clave-valor en detection_fields.
matched_username principal.user.email_addresses Se asigna directamente desde el campo matched_username si es una dirección de correo electrónico.
md5 target.file.md5 Se asigna directamente desde el campo md5 si no está vacío o es "No disponible".
metadata.event_type metadata.event_type Inicialmente, se establece en "GENERIC_EVENT" y, luego, se puede anular según otros campos. Se establece en NETWORK_HTTP si están presentes srcip o hostname y dstip o dsthost o domain. Se establece en STATUS_UPDATE si srcip o hostname están presentes, pero no dstip, dsthost o domain. Se establece en USER_UNCATEGORIZED si user está presente. Se establece en EMAIL_UNCATEGORIZED si activity es "Introspection Scan" y shared_with o from_user están presentes. Se establece en USER_LOGIN si activity es "Login Failed", "Login Successful" o "Login Attempt".
metadata.log_type metadata.log_type Se debe establecer en "NETSKOPE_ALERT".
metadata.product_log_id metadata.product_log_id Se asigna directamente desde el campo _id.
metadata.product_name metadata.product_name Se debe establecer en "Alerta de Netskope".
metadata.vendor_name metadata.vendor_name Se establece en "Netskope".
netskope_pop observer.hostname Se asigna directamente desde el campo netskope_pop.
object additional.fields{key:"Object", value:{string_value: }} Se asigna directamente desde el campo object como un par clave-valor en additional.fields.
object_id additional.fields{key:"Object id", value:{string_value: }} Se asigna directamente desde el campo object_id como un par clave-valor en additional.fields.
object_type additional.fields{key:"Object type", value:{string_value: }} Se asigna directamente desde el campo object_type como un par clave-valor en additional.fields.
organization_unit principal.administrative_domain Se asigna directamente desde el campo organization_unit.
os principal.platform Se asignó desde el campo os: "Windows" se asigna a WINDOWS, "MAC" a MAC y "LINUX" a LINUX.
os_version principal.platform_version Se asigna directamente desde el campo os_version.
other_categories - No se asignó al objeto IDM.
page network.http.referral_url Se asigna directamente desde el campo page si referer está vacío.
policy security_result.summary Se asigna directamente desde el campo policy.
principal.user.email_addresses principal.user.email_addresses Se combina desde el campo user si es una dirección de correo electrónico.
protocol network.application_protocol Se asigna directamente desde el campo protocol después de quitar todo lo que sigue al primer "/". Se convierte a mayúsculas.
publisher_cn additional.fields{key:"publisher_cn", value:{string_value: }} Se asigna directamente desde el campo publisher_cn como un par clave-valor en additional.fields.
publisher_name additional.fields{key:"publisher_name", value:{string_value: }} Se asigna directamente desde el campo publisher_name como un par clave-valor en additional.fields.
referer network.http.referral_url Se asigna directamente desde el campo referer.
security_result.alert_state security_result.alert_state Se establece en "ALERTING" si alert es "yes", "NOT_ALERTING" si alert es "no" y "UNSPECIFIED" en cualquier otro caso.
security_result.category_details security_result.category_details Se combinó a partir de los campos category, appcategory o alert_type.
security_result.confidence security_result.confidence Se deriva del campo ccl.
security_result.confidence_details security_result.confidence_details Se asigna directamente desde el campo ccl.
security_result.description security_result.description Se asigna directamente desde el campo activity.
security_result.rule_name security_result.rule_name Se asigna directamente desde el campo dlp_rule.
security_result.rule_type security_result.rule_type Se asigna directamente desde el campo dlp_profile.
security_result.severity security_result.severity Se deriva de los campos _severity, malware_severity o dlp_rule_severity.
security_result.summary security_result.summary Se asigna directamente desde el campo policy.
security_result.threat_id security_result.threat_id Se asigna directamente desde el campo malware_id.
security_result.threat_name security_result.threat_name Se asigna directamente desde el campo malware_name.
server_bytes network.received_bytes Se asigna directamente desde el campo server_bytes después de convertirlo en un número entero sin signo.
severity _severity Se asigna directamente desde el campo severity.
sha256 target.file.sha256 Se asigna directamente desde el campo sha256.
shared_with network.email.to Se analiza desde el campo shared_with y se agrega al array network.email.to si es una dirección de correo electrónico.
site additional.fields{key:"site", value:{string_value: }} Se asigna directamente desde el campo site como un par clave-valor en additional.fields.
src_country principal.location.country_or_region Se asigna directamente desde el campo src_country.
src_latitude principal.location.region_latitude Se asigna directamente desde el campo src_latitude.
src_location principal.location.city Se asigna directamente desde el campo src_location.
src_longitude principal.location.region_longitude Se asigna directamente desde el campo src_longitude.
src_region principal.location.name Se asigna directamente desde el campo src_region.
srcip principal.asset.ip Se extrae del campo srcip con grok y se combina en los arrays principal.asset.ip y principal.ip.
srcip principal.ip Se extrae del campo srcip con grok y se combina en los arrays principal.asset.ip y principal.ip.
srcport principal.port Se asigna directamente desde el campo srcport después de la conversión a número entero.
target.user.email_addresses target.user.email_addresses Se combina desde el campo to_user si es una dirección de correo electrónico.
threat_match_field security_result.detection_fields{key:"Threat Match Field", value: } Se asigna directamente desde el campo threat_match_field como un par clave-valor en detection_fields.
timestamp metadata.event_timestamp Se analizó a partir de los campos timestamp o id.time.
to_user target.user.email_addresses Se analiza desde el campo to_user y se agrega al array target.user.email_addresses si es una dirección de correo electrónico.
to_user_category target.resource.attribute.labels{key:"To User Category", value: } Se asigna directamente desde el campo to_user_category como un par clave-valor en target.resource.attribute.labels.
traffic_type security_result.detection_fields{key:"traffic_type", value: } Se asigna directamente desde el campo traffic_type como un par clave-valor en detection_fields.
tunnel_id additional.fields{key:"tunnel_id", value:{string_value: }} Se asigna directamente desde el campo tunnel_id como un par clave-valor en additional.fields.
tunnel_type additional.fields{key:"tunnel_type", value:{string_value: }} Se asigna directamente desde el campo tunnel_type como un par clave-valor en additional.fields.
type security_result.detection_fields{key:"type", value: } Se asigna directamente desde el campo type como un par clave-valor en detection_fields.
ur_normalized - No se asignó al objeto IDM.
url target.url Se asigna directamente desde el campo url.
user event.idm.read_only_udm.principal.user.userid Se asigna directamente desde el campo user.
user principal.user.email_addresses Se asigna directamente desde el campo user si es una dirección de correo electrónico.
useragent network.http.user_agent Se asigna directamente desde el campo useragent.
useragent network.http.parsed_user_agent Se convirtió a parseduseragent y se asignó a network.http.parsed_user_agent.
user_agent network.http.user_agent Se asigna directamente desde el campo user_agent.
user_agent network.http.parsed_user_agent Se convirtió a parseduseragent y se asignó a network.http.parsed_user_agent.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.