Collecter les journaux d'alertes Netskope v1

Compatible avec :

Présentation

Ce parseur extrait les journaux d'alertes Netskope des messages au format JSON et les transforme en UDM Google Security Operations. Il normalise les champs, analyse les codes temporels, gère les alertes et les niveaux de gravité, extrait les informations réseau (adresses IP, ports, protocoles), enrichit les données utilisateur et de fichier, et mappe les champs à la structure UDM. L'analyseur gère également des activités Netskope spécifiques, comme les connexions et les événements DLP, et ajoute des libellés personnalisés pour améliorer le contexte.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Instance Google SecOps.
  • Accès privilégié à Netskope.

Activer l'accès à l'API REST Netskope

  1. Connectez-vous au locataire Netskope à l'aide de vos identifiants d'administrateur.
  2. Accédez à Paramètres > Outils > API REST v1.
  3. Créez une clé API spécifiquement pour Google SecOps.
  4. Attribuez un nom descriptif (par exemple, Clé Google SecOps).
  5. Copiez et enregistrez la clé et le code secret générés.

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux d'alertes Netskope).
  5. Sélectionnez API tierce comme type de source.
  6. Sélectionnez Netskope comme Type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :
    • En-tête HTTP d'authentification : paire de clés générée précédemment au format <key>:<secret>, utilisée pour l'authentification auprès de l'API Netskope.
    • Nom d'hôte de l'API : nom de domaine complet (FQDN) de votre point de terminaison de l'API REST Netskope (par exemple, myinstance.goskope.com).
    • Point de terminaison de l'API : saisissez alerts.
    • Type de contenu : saisissez all.
  9. Cliquez sur Suivant.
  10. Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • En-tête HTTP d'authentification : paire de clés générée précédemment au format <key>:<secret>, utilisée pour l'authentification auprès de l'API Netskope.
  • Nom d'hôte de l'API : nom de domaine complet (FQDN) de votre point de terminaison de l'API REST Netskope (par exemple, myinstance.goskope.com).
  • Point de terminaison de l'API : saisissez alerts.
  • Type de contenu : saisissez all.

Options avancées

  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
  • Espace de noms de l'élément : espace de noms associé au flux.
  • Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.

Facultatif : Ajoutez une configuration de flux pour ingérer les journaux d'événements Netskope.

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux d'événements Netskope).
  4. Sélectionnez API tierce comme type de source.
  5. Sélectionnez Netskope comme Type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :
    • En-tête HTTP d'authentification : paire de clés générée précédemment au format <key>:<secret>, utilisée pour l'authentification auprès de l'API Netskope.
    • Nom d'hôte de l'API : nom de domaine complet (FQDN) de votre point de terminaison de l'API REST Netskope (par exemple, myinstance.goskope.com).
    • Point de terminaison de l'API : saisissez events.
    • Type de contenu : saisissez page, application, audit, infrastructure ou network selon les événements que vous souhaitez analyser.
    • Espace de noms de l'élément : espace de noms de l'élément.
    • Libellés d'ingestion : libellé appliqué aux événements de ce flux.
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
access_method extensions.auth.auth_details Mappé directement à partir du champ access_method.
action security_result.action Mappé directement à partir du champ action ou défini sur QUARANTINE si action est défini sur "alert" (alerte) ou "bypass" (contournement). ALLOW si action est autorisé. BLOCK si action est bloqué.
action security_result.action_details Mappé à partir du champ action s'il est défini sur "alert" (alerte) ou "bypass" (contourner).
activity security_result.description Mappé directement à partir du champ activity.
alert is_alert Définie sur true si alert est "oui", false dans le cas contraire.
alert_name - Non mappé à l'objet IDM.
alert_type security_result.category_details Mappé directement à partir du champ alert_type.
app target.application Mappé directement à partir du champ app.
app_activity additional.fields{key:"app_activity", value:{string_value: }} Mappé directement à partir du champ app_activity sous forme de paire clé/valeur dans additional.fields.
app_session_id target.resource.attribute.labels{key:"App Session Id", value: } Extrait du champ message à l'aide de grok et ajouté en tant que libellé.
appcategory security_result.category_details Mappé directement à partir du champ appcategory si category est vide.
browser network.http.user_agent Mappé directement à partir du champ browser s'il n'est pas défini sur "unknown" (inconnu).
browser_version network.http.parsed_user_agent.browser_version Mappé directement à partir du champ browser_version.
browser_version network.http.parsed_user_agent.family Définie sur "USER_DEFINED" si browser_version est présent.
category security_result.category_details Mappé directement à partir du champ category.
cci security_result.detection_fields{key:"cci", value: } Mappé directement à partir du champ cci sous forme de paire clé/valeur dans detection_fields.
ccl security_result.confidence Définissez la valeur en fonction de la valeur de ccl : "poor" ou "low" correspond à LOW_CONFIDENCE, "medium" à MEDIUM_CONFIDENCE, et "high" ou "excellent" à HIGH_CONFIDENCE.
ccl security_result.confidence_details Mappé directement à partir du champ ccl.
client_bytes network.sent_bytes Mappé directement à partir du champ client_bytes après conversion en entier non signé.
count additional.fields{key:"count", value:{string_value: }} Mappé directement à partir du champ count sous forme de paire clé/valeur dans additional.fields.
device principal.resource.resource_subtype Mappé directement à partir du champ device.
device principal.resource.type Définissez sur "DEVICE" si le champ device est présent.
dlp_file target.file.full_path Directement mappé à partir du champ dlp_file, s'il est présent, ou à partir de file_path.
dlp_profile security_result.rule_type Mappé directement à partir du champ dlp_profile.
dlp_rule security_result.rule_name Mappé directement à partir du champ dlp_rule.
dlp_rule_severity security_result.severity Directement mappé à partir du champ dlp_rule_severity si alert_type est DLP.
dlp_rule_severity _severity Mappé à partir du champ dlp_rule_severity si severity est vide.
domain target.asset.hostname Mappé directement à partir du champ domain.
domain target.hostname Mappé directement à partir du champ domain.
dsthost target.asset.hostname Mappé directement à partir du champ dsthost s'il ne s'agit pas d'une adresse IP et que dstip est vide, sinon mappé à target.hostname.
dsthost target.hostname Directement mappé à partir du champ dsthost s'il ne s'agit pas d'une adresse IP et que dstip n'est pas vide.
dstip target.asset.ip Mappé directement à partir du champ dstip.
dstip target.ip Mappé directement à partir du champ dstip.
dstport target.port Mappé directement à partir du champ dstport après conversion en entier.
dst_country target.location.country_or_region Mappé directement à partir du champ dst_country.
dst_location target.location.city Mappé directement à partir du champ dst_location.
dst_region target.location.name Mappé directement à partir du champ dst_region.
file_path target.file.full_path Mappé directement à partir du champ file_path si dlp_file est vide.
file_size target.file.size Mappé directement à partir du champ file_size après conversion en entier non signé.
file_type target.file.mime_type Mappé directement à partir du champ file_type s'il n'est pas défini sur "Inconnu".
from_user network.email.from Mappé directement à partir du champ from_user s'il s'agit d'une adresse e-mail.
from_user_category principal.resource.attribute.labels{key:"From User Category", value: } Mappé directement à partir du champ from_user_category sous forme de paire clé/valeur dans principal.resource.attribute.labels.
hostname principal.asset.hostname Directement mappé à partir du champ hostname s'il n'est pas vide, sinon à partir de instance_id.
hostname principal.hostname Directement mappé à partir du champ hostname s'il n'est pas vide, sinon à partir de instance_id.
id.time metadata.event_timestamp Analysé et mappé à event_timestamp dans les métadonnées.
instance_id principal.asset.hostname Mappé directement à partir du champ instance_id si hostname est vide.
instance_id principal.hostname Mappé directement à partir du champ instance_id si hostname est vide.
intermediary intermediary Mappé directement à partir du champ intermediary.
ip_protocol network.ip_protocol Mappé à partir du champ ip_protocol après avoir été analysé par le fichier parse_ip_protocol.include.
ja3 network.tls.client.ja3 Mappé directement à partir du champ ja3 s'il correspond à un modèle hexadécimal.
ja3s network.tls.server.ja3s Mappé directement à partir du champ ja3s s'il correspond à un modèle hexadécimal.
malware_id security_result.threat_id Mappé directement à partir du champ malware_id.
malware_name security_result.threat_name Mappé directement à partir du champ malware_name.
malware_severity security_result.severity Directement mappé à partir du champ malware_severity après conversion en majuscules.
malware_type security_result.detection_fields{key:"Malware Type", value: } Mappé directement à partir du champ malware_type sous forme de paire clé/valeur dans detection_fields.
matched_username principal.user.email_addresses Mappé directement à partir du champ matched_username s'il s'agit d'une adresse e-mail.
md5 target.file.md5 Directement mappé à partir du champ md5 s'il n'est pas vide ou s'il n'est pas défini sur "Non disponible".
metadata.event_type metadata.event_type Défini sur "GENERIC_EVENT" au départ, puis potentiellement remplacé en fonction d'autres champs. Définissez sur NETWORK_HTTP si srcip ou hostname et dstip ou dsthost ou domain sont présents. Définie sur STATUS_UPDATE, si srcip ou hostname sont présents, mais pas dstip, dsthost ni domain. Définie sur USER_UNCATEGORIZED si user est présent. Définie sur EMAIL_UNCATEGORIZED si activity est "Introspection Scan" et que shared_with ou from_user sont présents. Définissez sur USER_LOGIN si activity est "Échec de la connexion", "Connexion réussie" ou "Tentative de connexion".
metadata.log_type metadata.log_type Définissez-le sur "NETSKOPE_ALERT".
metadata.product_log_id metadata.product_log_id Mappé directement à partir du champ _id.
metadata.product_name metadata.product_name Définissez la valeur sur "Alerte Netskope".
metadata.vendor_name metadata.vendor_name Définissez-le sur "Netskope".
netskope_pop observer.hostname Mappé directement à partir du champ netskope_pop.
object additional.fields{key:"Object", value:{string_value: }} Mappé directement à partir du champ object sous forme de paire clé/valeur dans additional.fields.
object_id additional.fields{key:"Object id", value:{string_value: }} Mappé directement à partir du champ object_id sous forme de paire clé/valeur dans additional.fields.
object_type additional.fields{key:"Object type", value:{string_value: }} Mappé directement à partir du champ object_type sous forme de paire clé/valeur dans additional.fields.
organization_unit principal.administrative_domain Mappé directement à partir du champ organization_unit.
os principal.platform Mappé à partir du champ os : "Windows" correspond à WINDOWS, "MAC" à MAC et "LINUX" à LINUX.
os_version principal.platform_version Mappé directement à partir du champ os_version.
other_categories - Non mappé à l'objet IDM.
page network.http.referral_url Mappé directement à partir du champ page si referer est vide.
policy security_result.summary Mappé directement à partir du champ policy.
principal.user.email_addresses principal.user.email_addresses Fusionné à partir du champ user s'il s'agit d'une adresse e-mail.
protocol network.application_protocol Directement mappé à partir du champ protocol après suppression de tout ce qui se trouve après le premier "/". Converti en majuscules.
publisher_cn additional.fields{key:"publisher_cn", value:{string_value: }} Mappé directement à partir du champ publisher_cn sous forme de paire clé/valeur dans additional.fields.
publisher_name additional.fields{key:"publisher_name", value:{string_value: }} Mappé directement à partir du champ publisher_name sous forme de paire clé/valeur dans additional.fields.
referer network.http.referral_url Mappé directement à partir du champ referer.
security_result.alert_state security_result.alert_state Définissez la valeur sur "ALERTING" si alert est défini sur "yes", sur "NOT_ALERTING" si alert est défini sur "no", ou sur "UNSPECIFIED" dans le cas contraire.
security_result.category_details security_result.category_details Fusionné à partir des champs category, appcategory ou alert_type.
security_result.confidence security_result.confidence Dérivé du champ ccl.
security_result.confidence_details security_result.confidence_details Mappé directement à partir du champ ccl.
security_result.description security_result.description Mappé directement à partir du champ activity.
security_result.rule_name security_result.rule_name Mappé directement à partir du champ dlp_rule.
security_result.rule_type security_result.rule_type Mappé directement à partir du champ dlp_profile.
security_result.severity security_result.severity Dérivé des champs _severity, malware_severity ou dlp_rule_severity.
security_result.summary security_result.summary Mappé directement à partir du champ policy.
security_result.threat_id security_result.threat_id Mappé directement à partir du champ malware_id.
security_result.threat_name security_result.threat_name Mappé directement à partir du champ malware_name.
server_bytes network.received_bytes Mappé directement à partir du champ server_bytes après conversion en entier non signé.
severity _severity Mappé directement à partir du champ severity.
sha256 target.file.sha256 Mappé directement à partir du champ sha256.
shared_with network.email.to Analysé à partir du champ shared_with et ajouté au tableau network.email.to s'il s'agit d'une adresse e-mail.
site additional.fields{key:"site", value:{string_value: }} Mappé directement à partir du champ site sous forme de paire clé/valeur dans additional.fields.
src_country principal.location.country_or_region Mappé directement à partir du champ src_country.
src_latitude principal.location.region_latitude Mappé directement à partir du champ src_latitude.
src_location principal.location.city Mappé directement à partir du champ src_location.
src_longitude principal.location.region_longitude Mappé directement à partir du champ src_longitude.
src_region principal.location.name Mappé directement à partir du champ src_region.
srcip principal.asset.ip Extraites du champ srcip à l'aide de grok et fusionnées dans les tableaux principal.asset.ip et principal.ip.
srcip principal.ip Extraites du champ srcip à l'aide de grok et fusionnées dans les tableaux principal.asset.ip et principal.ip.
srcport principal.port Mappé directement à partir du champ srcport après conversion en entier.
target.user.email_addresses target.user.email_addresses Fusionné à partir du champ to_user s'il s'agit d'une adresse e-mail.
threat_match_field security_result.detection_fields{key:"Threat Match Field", value: } Mappé directement à partir du champ threat_match_field sous forme de paire clé/valeur dans detection_fields.
timestamp metadata.event_timestamp Analysé à partir des champs timestamp ou id.time.
to_user target.user.email_addresses Analysé à partir du champ to_user et ajouté au tableau target.user.email_addresses s'il s'agit d'une adresse e-mail.
to_user_category target.resource.attribute.labels{key:"To User Category", value: } Mappé directement à partir du champ to_user_category sous forme de paire clé/valeur dans target.resource.attribute.labels.
traffic_type security_result.detection_fields{key:"traffic_type", value: } Mappé directement à partir du champ traffic_type sous forme de paire clé/valeur dans detection_fields.
tunnel_id additional.fields{key:"tunnel_id", value:{string_value: }} Mappé directement à partir du champ tunnel_id sous forme de paire clé/valeur dans additional.fields.
tunnel_type additional.fields{key:"tunnel_type", value:{string_value: }} Mappé directement à partir du champ tunnel_type sous forme de paire clé/valeur dans additional.fields.
type security_result.detection_fields{key:"type", value: } Mappé directement à partir du champ type sous forme de paire clé/valeur dans detection_fields.
ur_normalized - Non mappé à l'objet IDM.
url target.url Mappé directement à partir du champ url.
user event.idm.read_only_udm.principal.user.userid Mappé directement à partir du champ user.
user principal.user.email_addresses Mappé directement à partir du champ user s'il s'agit d'une adresse e-mail.
useragent network.http.user_agent Mappé directement à partir du champ useragent.
useragent network.http.parsed_user_agent Converti en parseduseragent et mappé sur network.http.parsed_user_agent.
user_agent network.http.user_agent Mappé directement à partir du champ user_agent.
user_agent network.http.parsed_user_agent Converti en parseduseragent et mappé sur network.http.parsed_user_agent.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.