Collecter les journaux de proxy Web Netskope

Compatible avec :

Ce document explique comment ingérer les journaux de proxy Web Netskope dans Google Security Operations à l'aide de Google Cloud Storage V2.

Netskope fournit une passerelle Web sécurisée native au cloud qui inspecte et contrôle le trafic Web en temps réel. Les journaux de transactions Web (WebTx) enregistrent des informations détaillées sur chaque session HTTP et HTTPS traitée par le proxy Netskope, y compris l'identité de l'utilisateur, l'application, la catégorie d'URL, les verdicts sur les menaces et la protection contre la perte de données, ainsi que les métadonnées réseau.

Avant de commencer

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

  • Une instance Google SecOps
  • Un projet GCP avec l'API Cloud Storage activée
  • Autorisations pour créer et gérer des buckets GCS
  • Autorisations permettant de gérer les stratégies IAM sur les buckets GCS
  • Accès privilégié au locataire Netskope avec des identifiants d'administrateur

Option : diffusion des journaux Netskope vers Google Cloud Storage

Utilisez cette option si vous avez activé un abonnement Netskope Log Streaming sur votre locataire. Le streaming de journaux Netskope envoie les fichiers journaux WebTx directement dans votre bucket GCS sous forme de fichiers .gzip compressés à un intervalle fixe de 240 secondes.

Créer un bucket Google Cloud Storage

  1. Accédez à Google Cloud Console.
  2. Sélectionnez votre projet ou créez-en un.
  3. Dans le menu de navigation, accédez à Cloud Storage> Buckets.
  4. Cliquez sur Créer un bucket.
  5. Fournissez les informations de configuration suivantes :

    Paramètre Valeur
    Nommer votre bucket Saisissez un nom unique (par exemple, netskope-webtx-logs).
    Type d'emplacement Choisissez en fonction de vos besoins (région, birégion ou multirégion).
    Emplacement Sélectionnez la région la plus proche de votre organisation (par exemple, us-central1).
    Classe de stockage Standard (recommandé pour les journaux auxquels vous accédez fréquemment)
    Access control (Contrôle des accès) Uniforme (recommandé)
    Outils de protection Facultatif : Activer la gestion des versions des objets ou la règle de conservation
  6. Cliquez sur Créer.

Créer un compte de service GCP

Le streaming de journaux Netskope nécessite un compte de service GCP disposant d'autorisations d'écriture dans votre bucket GCS. La clé privée de ce compte de service est utilisée par Netskope pour l'authentification lors de l'envoi de fichiers journaux.

  1. Dans la console GCP, accédez à IAM et administration > Comptes de service.
  2. Cliquez sur Créer un compte de service.
  3. Fournissez les informations de configuration suivantes :
    • Nom du compte de service : saisissez netskope-log-streaming.
    • Description du compte de service : saisissez Service account for Netskope Log Streaming to push WebTx logs to GCS.
  4. Cliquez sur Créer et continuer.
  5. Dans la section Autoriser ce compte de service à accéder au projet :
    1. Cliquez sur Sélectionner un rôle.
    2. Recherchez et sélectionnez Créateur d'objet Storage.
  6. Cliquez sur Continuer.
  7. Cliquez sur OK.

Générer une clé JSON

  1. Dans IAM et administration> Comptes de service, cliquez sur le compte de service netskope-log-streaming.
  2. Sélectionnez l'onglet Keys (clés).
  3. Cliquez sur Ajouter une clé > Créer une clé.
  4. Sélectionnez JSON comme type de clé.
  5. Cliquez sur Créer.
  6. Un fichier de clé JSON est téléchargé automatiquement. Enregistrez ce fichier de manière sécurisée.
  7. Ouvrez le fichier de clé JSON dans un éditeur de texte et recherchez le champ private_key. Vous aurez besoin de cette valeur dans la section suivante.

Accorder des autorisations d'écriture sur le bucket GCS

  1. Accédez à Cloud Storage > Buckets.
  2. Cliquez sur le nom de votre bucket (par exemple, netskope-webtx-logs).
  3. Accédez à l'onglet Autorisations.
  4. Cliquez sur Accorder l'accès.
  5. Fournissez les informations de configuration suivantes :
    • Ajouter des comptes principaux : saisissez l'adresse e-mail du compte de service (par exemple, netskope-log-streaming@YOUR_PROJECT_ID.iam.gserviceaccount.com).
    • Attribuer des rôles : sélectionnez Créateur d'objets Storage.
  6. Cliquez sur Enregistrer.

Créer un flux de journaux

  1. Connectez-vous au locataire Netskope avec des identifiants administrateur.
  2. Accédez à Paramètres> Outils> Flux de journaux.
  3. Cliquez sur Créer un flux.
  4. Dans le champ Nom, saisissez un nom lisible pour le flux (par exemple, Chronicle WebTx GCS).
  5. Sélectionnez GCP Cloud Storage comme type de destination.
  6. Fournissez les informations de configuration suivantes :

    • Bucket : saisissez le nom du bucket GCS (par exemple, netskope-webtx-logs).

    • Chemin d'accès (facultatif) : saisissez le chemin d'accès à un dossier dans le bucket où les journaux seront stockés (par exemple, netskope/webtx/{%Y}).

    • Clé privée : saisissez la valeur private_key du fichier de clé JSON généré dans la section précédente. Saisissez la clé au format PEM avec des symboles de saut de ligne (\n) :

      -----BEGIN PRIVATE KEY-----\nprivate_key_content\n-----END PRIVATE KEY-----\n
      
  7. Examinez les options de diffusion : la fréquence de diffusion est de 240 secondes en continu.

  8. Cliquez sur Enregistrer (ou Créer) pour activer le flux.

Configurer un flux dans Google SecOps pour ingérer les journaux Netskope WebTx depuis GCS

Récupérer le compte de service Google SecOps

Google SecOps utilise un compte de service unique pour lire les données de votre bucket GCS. Vous devez accorder à ce compte de service l'accès à votre bucket.

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Netskope WebTx Logs).
  5. Sélectionnez Google Cloud Storage V2 comme Type de source.
  6. Sélectionnez Proxy Web Netskope comme Type de journal.
  7. Cliquez sur Obtenir un compte de service. Une adresse e-mail unique pour le compte de service s'affiche, par exemple :

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copiez cette adresse e-mail pour l'utiliser à l'étape suivante.

  9. Cliquez sur Suivant.

  10. Spécifiez les valeurs des paramètres d'entrée suivants :

    • URL du bucket de stockage : saisissez l'URI du bucket GCS avec le chemin d'accès au préfixe :

      gs://netskope-webtx-logs/netskope/webtx/
      
      • Remplacez :
        • netskope-webtx-logs : nom de votre bucket GCS.
        • netskope/webtx/ : préfixe de chemin d'accès configuré dans le flux de journaux Netskope (laissez vide pour la racine).
    • Option de suppression de la source : sélectionnez l'option de suppression de votre choix :

      • Jamais : ne supprime jamais aucun fichier après les transferts (recommandé pour les tests).
      • Supprimer les fichiers transférés : supprime les fichiers après un transfert réussi.
      • Supprimer les fichiers transférés et les répertoires vides : supprime les fichiers et les répertoires vides après un transfert réussi.

    • Âge maximal des fichiers : incluez les fichiers modifiés au cours des derniers jours (180 jours par défaut).

    • Espace de noms de l'élément : espace de noms de l'élément

    • Libellés d'ingestion : libellé à appliquer aux événements de ce flux

  11. Cliquez sur Suivant.

  12. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Accorder des autorisations IAM au compte de service Google SecOps

Le compte de service Google SecOps a besoin du rôle Lecteur des objets Storage sur votre bucket GCS.

  1. Accédez à Cloud Storage > Buckets.
  2. Cliquez sur le nom de votre bucket (par exemple, netskope-webtx-logs).
  3. Accédez à l'onglet Autorisations.
  4. Cliquez sur Accorder l'accès.
  5. Fournissez les informations de configuration suivantes :
    • Ajouter des comptes principaux : collez l'adresse e-mail du compte de service Google SecOps (par exemple, chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com).
    • Attribuer des rôles : sélectionnez Lecteur des objets de l'espace de stockage.
  6. Cliquez sur Enregistrer.

Option : Cloud Exchange Log Shipper vers Google Cloud Storage

Utilisez cette option si la plate-forme Netskope Cloud Exchange est déployée avec le module Log Shipper configuré. Le Log Shipper extrait les journaux WebTx de votre locataire Netskope et les envoie sous forme de fichiers .gzip compressés vers un bucket GCS, que Google SecOps lit ensuite via un flux Google Cloud Storage V2.

Avant de commencer (Cloud Exchange)

Assurez-vous de remplir les conditions préalables supplémentaires suivantes pour cette option :

Configurer le plug-in de destination GCS

  1. Dans Cloud Exchange, accédez à Settings > Plugin Store (Paramètres > Plugin Store).
  2. Recherchez et sélectionnez la zone de plug-in Google Cloud SCC (Google GCS).
  3. Cliquez sur Configurer un nouveau plug-in (ou ajoutez une configuration de plug-in).
  4. Fournissez les informations de configuration suivantes :
    • Nom de la configuration : saisissez un nom descriptif (par exemple, GCS WebTx Destination).
    • Mappage : sélectionnez un fichier de mappage. Aucune transformation de mappage n'est appliquée aux journaux WebTx envoyés en tant que fichiers .gzip d'origine.
    • Bucket : saisissez le nom du bucket GCS (par exemple, netskope-webtx-logs).
    • Chemin d'accès (facultatif) : saisissez un chemin d'accès à un dossier (par exemple, netskope/webtx/).
    • Clé privée : saisissez la valeur private_key du fichier de clé JSON du compte de service.
  5. Cliquez sur Enregistrer.
  6. La nouvelle configuration du plug-in s'affiche sur la page Log Shipper > Plug-ins.

Configurer une règle métier (facultatif)

Par défaut, la règle métier Tous filtre toutes les alertes et tous les événements. Si vous souhaitez filtrer spécifiquement les journaux WebTx, créez une règle métier :

  1. Dans Log Shipper, accédez à Règles métier.
  2. Cliquez sur Créer une règle.
  3. Saisissez un nom de règle (par exemple, WebTx Only).
  4. Configurez le ou les filtres souhaités pour n'inclure que les données WebTx.
  5. Cliquez sur Enregistrer.

Configurer la diffusion des journaux

  1. Dans Log Shipper, accédez à Log Delivery (Distribution des journaux).
  2. Cliquez sur Ajouter une configuration de distribution des journaux.
  3. Fournissez les informations de configuration suivantes :
    • Configuration de la source : sélectionnez le plug-in source Netskope CLS (par exemple, WebTxCLS ou Netskope CLS).
    • Configuration de la destination : sélectionnez le plug-in de destination GCS que vous avez configuré (par exemple, GCS WebTx Destination).
    • Règle métier : sélectionnez une règle métier (par exemple, All ou WebTx Only).
  4. Cliquez sur Enregistrer.

  5. Pour obtenir des données historiques supplémentaires, cliquez sur l'icône Extraire les données historiques dans les actions Distribution des journaux.

  6. Sélectionnez une plage de dates Historique "De" et À, puis cliquez sur Extraire.

Configurer un flux dans Google SecOps pour ingérer les journaux Netskope WebTx depuis GCS

Suivez la même procédure que pour l'option de streaming des journaux Netskope afin de créer un flux Google SecOps et d'accorder des autorisations IAM :

  1. Récupérez le compte de service Google SecOps : créez un flux avec Google Cloud Storage V2 comme type de source et proxy Web Netskope comme type de journal.
  2. Accorder des autorisations IAM au compte de service Google SecOps : accordez le rôle Lecteur des objets Storage (ou Administrateur des objets Storage si vous utilisez une option de suppression) sur le bucket GCS au compte de service Google SecOps.

Vérifier la diffusion des journaux

Pour vérifier que les journaux WebTx sont envoyés au bucket GCS :

  1. Dans Cloud Exchange, accédez à Log Shipper > Log Delivery.
  2. Consultez les colonnes Nombre total de journaux/WebTx envoyés au récepteur externe et Nombre total de WebTx envoyés au bucket de stockage pour confirmer que les données sont transférées vers la destination.
  3. Dans le bucket GCS, vérifiez que les fichiers .gzip sont écrits par Log Shipper.

Configurer les paramètres généraux de Log Shipper (facultatif)

Seuls les administrateurs peuvent modifier les paramètres généraux de Log Shipper. Accédez à Paramètres> Log Shipper. Il comporte deux onglets : "Général" et "Mappages".

Dans l'onglet Général, vous pouvez configurer la stratégie de réessai pour la diffusion des journaux :

  • Par défaut (3 tentatives) : en cas d'échec de l'envoi des journaux, Log Shipper tente à trois reprises de les transférer vers la destination. Si les trois tentatives échouent, le lot de journaux correspondant est supprimé.
  • Réessayer jusqu'à la remise réussie : nombre illimité de tentatives jusqu'à la remise réussie des journaux.

Vous pouvez également activer l'encodage UTF-8 pour les alertes, les événements et WebTx afin d'assurer une gestion fluide des données encodées au format UTF-8. Par défaut, cette fonctionnalité est désactivée.

Table de mappage UDM

Champ de journal Mappage UDM Logique
applicationType security_result.detection_fields[].key: "applicationType", security_result.detection_fields[].value: applicationType Mappé directement à partir du champ CEF correspondant
appcategory security_result.category_details[]: appcategory Mappé directement à partir du champ CEF correspondant
navigateur security_result.detection_fields[].key: "browser", security_result.detection_fields[].value: browser Mappé directement à partir du champ CEF correspondant
c-ip principal.asset.ip[]: c-ip, principal.ip[]: c-ip Mappé directement à partir du champ JSON correspondant
cci security_result.detection_fields[].key: "cci", security_result.detection_fields[].value: cci Mappé directement à partir du champ CEF correspondant
ccl security_result.confidence : valeur dérivée, security_result.confidence_details : ccl security_result.confidence est dérivé de la valeur de ccl : "excellent" ou "high" correspond à HIGH_CONFIDENCE, "medium" correspond à MEDIUM_CONFIDENCE, "low" ou "poor" correspond à LOW_CONFIDENCE, et "unknown" ou "not_defined" correspond à UNKNOWN_CONFIDENCE. security_result.confidence_details est directement mappé à partir de ccl.
clientBytes network.sent_bytes: clientBytes Mappé directement à partir du champ CEF correspondant
cs-access-method additional.fields[].key: "accessMethod", additional.fields[].value.string_value: cs-access-method Mappé directement à partir du champ JSON correspondant
cs-app additional.fields[].key: "x-cs-app", additional.fields[].value.string_value: cs-app, principal.application: cs-app Mappé directement à partir du champ JSON correspondant
cs-app-activity additional.fields[].key: "x-cs-app-activity", additional.fields[].value.string_value: cs-app-activity Mappé directement à partir du champ JSON correspondant
cs-app-category additional.fields[].key: "x-cs-app-category", additional.fields[].value.string_value: cs-app-category Mappé directement à partir du champ JSON correspondant
cs-app-cci additional.fields[].key: "x-cs-app-cci", additional.fields[].value.string_value: cs-app-cci Mappé directement à partir du champ JSON correspondant
cs-app-ccl additional.fields[].key: "x-cs-app-ccl", additional.fields[].value.string_value: cs-app-ccl Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
cs-app-instance-id additional.fields[].key: "x-cs-app-instance-id", additional.fields[].value.string_value: cs-app-instance-id Mappé directement à partir du champ JSON correspondant
cs-app-object-name additional.fields[].key: "x-cs-app-object-name", additional.fields[].value.string_value: cs-app-object-name Mappé directement à partir du champ JSON correspondant
cs-app-object-type additional.fields[].key: "x-cs-app-object-type", additional.fields[].value.string_value: cs-app-object-type Mappé directement à partir du champ JSON correspondant
cs-app-suite additional.fields[].key: "x-cs-app-suite", additional.fields[].value.string_value: cs-app-suite Mappé directement à partir du champ JSON correspondant
cs-app-tags additional.fields[].key: "x-cs-app-tags", additional.fields[].value.string_value: cs-app-tags Mappé directement à partir du champ JSON correspondant
cs-bytes network.sent_bytes: cs-bytes Mappé directement à partir du champ JSON correspondant
cs-content-type additional.fields[].key: "sc-content-type", additional.fields[].value.string_value: cs-content-type Mappé directement à partir du champ JSON correspondant
cs-dns target.asset.hostname[]: cs-dns, target.hostname: cs-dns Mappé directement à partir du champ JSON correspondant
cs-host target.asset.hostname[]: cs-host, target.hostname: cs-host Mappé directement à partir du champ JSON correspondant
cs-method network.http.method: cs-method Mappé directement à partir du champ JSON correspondant
cs-referer network.http.referral_url: cs-referer Mappé directement à partir du champ JSON correspondant
cs-uri additional.fields[].key: "cs-uri", additional.fields[].value.string_value: cs-uri Mappé directement à partir du champ JSON correspondant
cs-uri-path additional.fields[].key: "x-cs-uri-path", additional.fields[].value.string_value: cs-uri-path Mappé directement à partir du champ JSON correspondant
cs-uri-port additional.fields[].key: "cs-uri-port", additional.fields[].value.string_value: cs-uri-port Mappé directement à partir du champ JSON correspondant
cs-uri-scheme network.application_protocol: cs-uri-scheme Mappé directement à partir du champ JSON correspondant après conversion en majuscules
cs-user-agent network.http.parsed_user_agent: Parsed user agent, network.http.user_agent: cs-user-agent network.http.parsed_user_agent est dérivé de l'analyse du champ cs-user-agent à l'aide du filtre "parseduseragent".
cs-username principal.user.userid: cs-username Mappé directement à partir du champ JSON correspondant
date metadata.event_timestamp.seconds : secondes depuis l'epoch à partir des champs de date et d'heure, metadata.event_timestamp.nanos : 0 La date et l'heure sont combinées et converties en secondes et nanosecondes depuis l'epoch. Les nanosecondes sont définies sur 0.
appareil intermediary.hostname: device Mappé directement à partir du champ CEF correspondant
dst target.ip[]: dst Mappé directement à partir du champ CEF correspondant
dst_country target.location.country_or_region: dst_country Mappé directement à partir du champ grokké correspondant
dst_ip target.asset.ip[]: dst_ip, target.ip[]: dst_ip Mappé directement à partir du champ grokké correspondant
dst_location target.location.city: dst_location Mappé directement à partir du champ grokké correspondant
dst_region target.location.state: dst_region Mappé directement à partir du champ grokké correspondant
dst_zip Non mappé Ce champ n'est pas mappé sur l'UDM
duser target.user.email_addresses[]: duser, target.user.user_display_name: duser Mappé directement à partir du champ CEF correspondant
dvchost about.hostname: dvchost, target.asset.hostname[]: dvchost, target.hostname: dvchost Mappé directement à partir du champ CEF correspondant
event_timestamp metadata.event_timestamp.seconds: event_timestamp Mappé directement à partir du champ grokké correspondant
nom d'hôte target.asset.hostname[]: hostname, target.hostname: hostname Mappé directement à partir du champ CEF correspondant
ID de l'incident security_result.detection_fields[].key: "IncidentID", security_result.detection_fields[].value: IncidentID Mappé directement à partir du champ CEF correspondant
intermédiaire intermédiaire : intermédiaire Mappé directement à partir du champ CEF correspondant
md5 target.file.md5: md5 Mappé directement à partir du champ CEF correspondant
message Différents champs UDM Le champ de message est analysé selon qu'il contient ou non "CEF". Si c'est le cas, il est traité comme un journal CEF. Dans le cas contraire, il est analysé comme une chaîne délimitée par des espaces ou au format JSON.
mwDetectionEngine additional.fields[].key: "mwDetectionEngine", additional.fields[].value.string_value: mwDetectionEngine Mappé directement à partir du champ CEF correspondant
mwType metadata.description: mwType Mappé directement à partir du champ CEF correspondant
os principal.platform : valeur dérivée La plate-forme est dérivée du champ "os" : "Windows" correspond à WINDOWS, "MAC" correspond à MAC et "LINUX" correspond à LINUX.
page network.http.referral_url: page Mappé directement à partir du champ CEF correspondant
URL de provenance network.http.referral_url: referer Mappé directement à partir du champ CEF correspondant
requestClientApplication network.http.parsed_user_agent : user-agent analysé, network.http.user_agent : requestClientApplication network.http.parsed_user_agent est dérivé de l'analyse du champ requestClientApplication à l'aide du filtre "parseduseragent".
request_method network.http.method: request_method Mappé directement à partir du champ grokké correspondant
rs-status additional.fields[].key: "rs-status", additional.fields[].value.string_value: rs-status, network.http.response_code: rs-status Mappé directement à partir du champ JSON correspondant
s-ip target.asset.ip[]: s-ip, target.ip[]: s-ip Mappé directement à partir du champ JSON correspondant
sc-bytes network.received_bytes: sc-bytes Mappé directement à partir du champ JSON correspondant
sc-content-type additional.fields[].key: "sc-content-type", additional.fields[].value.string_value: sc-content-type Mappé directement à partir du champ JSON correspondant
sc-status network.http.response_code: sc-status Mappé directement à partir du champ JSON correspondant
serverBytes network.received_bytes: serverBytes Mappé directement à partir du champ CEF correspondant
sha256 target.file.sha256: sha256 Mappé directement à partir du champ CEF correspondant
src principal.ip[]: src Mappé directement à partir du champ CEF correspondant
src_country principal.location.country_or_region: src_country Mappé directement à partir du champ grokké correspondant
src_ip principal.asset.ip[]: src_ip, principal.ip[]: src_ip Mappé directement à partir du champ grokké correspondant
src_location principal.location.city : src_location Mappé directement à partir du champ grokké correspondant
src_region principal.location.state: src_region Mappé directement à partir du champ grokké correspondant
src_latitude Non mappé Ce champ n'est pas mappé sur l'UDM
src_longitude Non mappé Ce champ n'est pas mappé sur l'UDM
src_zip Non mappé Ce champ n'est pas mappé sur l'UDM
suser principal.user.user_display_name: suser Mappé directement à partir du champ CEF correspondant
target_host target.asset.hostname[]: target_host, target.hostname: target_host Mappé directement à partir du champ grokké correspondant
heure metadata.event_timestamp.seconds : secondes depuis l'epoch à partir des champs de date et d'heure, metadata.event_timestamp.nanos : 0 La date et l'heure sont combinées et converties en secondes et nanosecondes depuis l'epoch. Les nanosecondes sont définies sur 0.
timestamp metadata.event_timestamp.seconds : timestamp Mappé directement à partir du champ CEF correspondant
ts metadata.event_timestamp.seconds : secondes depuis l'epoch à partir de ts, metadata.event_timestamp.nanos : 0 Le code temporel est converti en secondes et nanosecondes epoch. Les nanosecondes sont définies sur 0.
url target.url: url Mappé directement à partir du champ CEF correspondant
user_agent network.http.parsed_user_agent : user-agent analysé, network.http.user_agent : user-agent network.http.parsed_user_agent est dérivé de l'analyse du champ user_agent à l'aide du filtre "parseduseragent".
user_key principal.user.email_addresses[]: user_key Mappé directement à partir du champ grokké correspondant
version Non mappé Ce champ n'est pas mappé sur l'UDM
x-c-browser additional.fields[].key: "x-c-browser", additional.fields[].value.string_value: x-c-browser Mappé directement à partir du champ JSON correspondant
x-c-browser-version additional.fields[].key: "x-c-browser-version", additional.fields[].value.string_value: x-c-browser-version Mappé directement à partir du champ JSON correspondant
x-c-country principal.location.country_or_region: x-c-country Mappé directement à partir du champ JSON correspondant
x-c-device additional.fields[].key: "x-c-device", additional.fields[].value.string_value: x-c-device Mappé directement à partir du champ JSON correspondant
x-c-latitude principal.location.region_coordinates.latitude: x-c-latitude Mappé directement à partir du champ JSON correspondant
x-c-local-time security_result.detection_fields[].key: "x-c-local-time", security_result.detection_fields[].value: x-c-local-time Mappé directement à partir du champ JSON correspondant
x-c-location principal.location.name: x-c-location Mappé directement à partir du champ JSON correspondant
x-c-longitude principal.location.region_coordinates.longitude: x-c-longitude Mappé directement à partir du champ JSON correspondant
x-c-os principal.platform : valeur dérivée La plate-forme est dérivée du champ x-c-os : "Windows" correspond à WINDOWS, "MAC" correspond à MAC et "LINUX" correspond à LINUX.
x-c-region principal.location.state: x-c-region Mappé directement à partir du champ JSON correspondant
x-c-zipcode additional.fields[].key: "x-c-zipcode", additional.fields[].value.string_value: x-c-zipcode Mappé directement à partir du champ JSON correspondant
x-category additional.fields[].key: "x-category", additional.fields[].value.string_value: x-category Mappé directement à partir du champ JSON correspondant
x-category-id additional.fields[].key: "x-category-id", additional.fields[].value.string_value: x-category-id Mappé directement à partir du champ JSON correspondant
x-cs-access-method additional.fields[].key: "accessMethod", additional.fields[].value.string_value: x-cs-access-method Mappé directement à partir du champ JSON correspondant
x-cs-app principal.application: x-cs-app, additional.fields[].key: "x-cs-app", additional.fields[].value.string_value: x-cs-app Mappé directement à partir du champ JSON correspondant
x-cs-app-activity additional.fields[].key: "x-cs-app-activity", additional.fields[].value.string_value: x-cs-app-activity Mappé directement à partir du champ JSON correspondant
x-cs-app-category additional.fields[].key: "x-cs-app-category", additional.fields[].value.string_value: x-cs-app-category Mappé directement à partir du champ JSON correspondant
x-cs-app-cci additional.fields[].key: "x-cs-app-cci", additional.fields[].value.string_value: x-cs-app-cci Mappé directement à partir du champ JSON correspondant
x-cs-app-from-user additional.fields[].key: "x-cs-app-from-user", additional.fields[].value.string_value: x-cs-app-from-user Mappé directement à partir du champ JSON correspondant
x-cs-app-object-id additional.fields[].key: "x-cs-app-object-id", additional.fields[].value.string_value: x-cs-app-object-id Mappé directement à partir du champ JSON correspondant
x-cs-app-object-name additional.fields[].key: "x-cs-app-object-name", additional.fields[].value.string_value: x-cs-app-object-name Mappé directement à partir du champ JSON correspondant
x-cs-app-object-type additional.fields[].key: "x-cs-app-object-type", additional.fields[].value.string_value: x-cs-app-object-type Mappé directement à partir du champ JSON correspondant
x-cs-app-suite additional.fields[].key: "x-cs-app-suite", additional.fields[].value.string_value: x-cs-app-suite Mappé directement à partir du champ JSON correspondant
x-cs-app-tags additional.fields[].key: "x-cs-app-tags", additional.fields[].value.string_value: x-cs-app-tags Mappé directement à partir du champ JSON correspondant
x-cs-app-to-user additional.fields[].key: "x-cs-app-to-user", additional.fields[].value.string_value: x-cs-app-to-user Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-cs-http-version security_result.detection_fields[].key: "x-cs-http-version", security_result.detection_fields[].value: x-cs-http-version Mappé directement à partir du champ JSON correspondant
x-cs-page-id additional.fields[].key: "x-cs-page-id", additional.fields[].value.string_value: x-cs-page-id Mappé directement à partir du champ JSON correspondant
x-cs-session-id network.session_id : x-cs-session-id Mappé directement à partir du champ JSON correspondant
x-cs-site additional.fields[].key: "x-cs-site", additional.fields[].value.string_value: x-cs-site Mappé directement à partir du champ JSON correspondant
x-cs-sni network.tls.client.server_name: x-cs-sni Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-cs-ssl-cipher network.tls.cipher: x-cs-ssl-cipher Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-cs-ssl-ja3 network.tls.client.ja3: x-cs-ssl-ja3 Mappé directement à partir du champ JSON correspondant
x-cs-ssl-version network.tls.version: x-cs-ssl-version Mappé directement à partir du champ JSON correspondant
x-cs-timestamp metadata.event_timestamp.seconds: x-cs-timestamp Mappé directement à partir du champ JSON correspondant
x-cs-traffic-type additional.fields[].key: "trafficType", additional.fields[].value.string_value: x-cs-traffic-type Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-cs-uri-path additional.fields[].key: "x-cs-uri-path", additional.fields[].value.string_value: x-cs-uri-path Mappé directement à partir du champ JSON correspondant
x-cs-url target.url: x-cs-url Mappé directement à partir du champ JSON correspondant
x-cs-userip security_result.detection_fields[].key: "x-cs-userip", security_result.detection_fields[].value: x-cs-userip Mappé directement à partir du champ JSON correspondant
x-other-category security_result.category_details[]: x-other-category Mappé directement à partir du champ JSON correspondant
x-other-category-id security_result.detection_fields[].key: "x-other-category-id", security_result.detection_fields[].value: x-other-category-id Mappé directement à partir du champ JSON correspondant
x-policy-action security_result.action : valeur dérivée, security_result.action_details : x-policy-action security_result.action est dérivé de x-policy-action en le convertissant en majuscules. Si la valeur en majuscules est "ALLOW" (AUTORISER) ou "BLOCK" (BLOQUER), elle est utilisée directement. Sinon, il n'est pas mappé. security_result.action_details est directement mappé à partir 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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-policy-dst-ip security_result.detection_fields[].key: "x-policy-dst-ip", security_result.detection_fields[].value: x-policy-dst-ip Mappé directement à partir du champ JSON correspondant
x-policy-name security_result.rule_name: x-policy-name Mappé directement à partir du champ JSON correspondant
x-policy-src-ip security_result.detection_fields[].key: "x-policy-src-ip", security_result.detection_fields[].value: x-policy-src-ip Mappé directement à partir du champ JSON correspondant
x-r-cert-enddate network.tls.server.certificate.not_after.seconds : secondes de l'époque à partir de x-r-cert-enddate La date est convertie en secondes depuis l'epoch.
x-r-cert-expired additional.fields[].key: "x-r-cert-expired", additional.fields[].value.string_value: x-r-cert-expired Mappé directement à partir du champ JSON correspondant
x-r-cert-incomplete-chain additional.fields[].key: "x-r-cert-incomplete-chain", additional.fields[].value.string_value: x-r-cert-incomplete-chain Mappé directement à partir du champ JSON correspondant
x-r-cert-issuer-cn network.tls.server.certificate.issuer: x-r-cert-issuer-cn Mappé directement à partir du champ JSON correspondant
x-r-cert-mismatch additional.fields[].key: "x-r-cert-mismatch", additional.fields[].value.string_value: x-r-cert-mismatch Mappé directement à partir du champ JSON correspondant
x-r-cert-revoked additional.fields[].key: "x-r-cert-revoked", additional.fields[].value.string_value: x-r-cert-revoked Mappé directement à partir du champ JSON correspondant
x-r-cert-self-signed additional.fields[].key: "x-r-cert-self-signed", additional.fields[].value.string_value: x-r-cert-self-signed Mappé directement à partir du champ JSON correspondant
x-r-cert-startdate network.tls.server.certificate.not_before.seconds : secondes de l'époque à partir de x-r-cert-startdate La date est convertie en secondes depuis l'epoch.
x-r-cert-subject-cn network.tls.server.certificate.subject: x-r-cert-subject-cn Mappé directement à partir du champ JSON correspondant
x-r-cert-untrusted-root additional.fields[].key: "x-r-cert-untrusted-root", additional.fields[].value.string_value: x-r-cert-untrusted-root Mappé directement à partir du champ JSON correspondant
x-r-cert-valid additional.fields[].key: "x-r-cert-valid", additional.fields[].value.string_value: x-r-cert-valid Mappé directement à partir du champ JSON correspondant
x-request-id additional.fields[].key: "requestId", additional.fields[].value.string_value: x-request-id Mappé directement à partir du champ JSON correspondant
x-rs-file-category additional.fields[].key: "x-rs-file-category", additional.fields[].value.string_value: x-rs-file-category Mappé directement à partir du champ JSON correspondant
x-rs-file-type additional.fields[].key: "x-rs-file-type", additional.fields[].value.string_value: x-rs-file-type Mappé directement à partir du champ JSON correspondant
x-s-country target.location.country_or_region: x-s-country Mappé directement à partir du champ JSON correspondant
x-s-dp-name additional.fields[].key: "x-s-dp-name", additional.fields[].value.string_value: x-s-dp-name Mappé directement à partir du champ JSON correspondant
x-s-latitude target.location.region_coordinates.latitude: x-s-latitude Mappé directement à partir du champ JSON correspondant
x-s-location target.location.name: x-s-location Mappé directement à partir du champ JSON correspondant
x-s-longitude target.location.region_coordinates.longitude: x-s-longitude Mappé directement à partir du champ JSON correspondant
x-s-region target.location.state: x-s-region Mappé directement à partir du champ JSON correspondant
x-s-zipcode additional.fields[].key: "x-s-zipcode", additional.fields[].value.string_value: x-s-zipcode Mappé directement à partir du champ JSON correspondant
x-sr-ssl-cipher security_result.detection_fields[].key: "x-sr-ssl-cipher", security_result.detection_fields[].value: x-sr-ssl-cipher Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-sr-ssl-ja3s network.tls.server.ja3s: x-sr-ssl-ja3s Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-sr-ssl-version security_result.detection_fields[].key: "x-sr-ssl-version", security_result.detection_fields[].value: x-sr-ssl-version Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-ssl-bypass security_result.detection_fields[].key: "SSL BYPASS", security_result.detection_fields[].value: x-ssl-bypass ou x-ssl-bypass-reason Si x-ssl-bypass est défini sur "Yes" et que x-ssl-bypass-reason est présent, la valeur de x-ssl-bypass-reason est utilisée. Sinon, la valeur de x-ssl-bypass est utilisée.
x-ssl-policy-action security_result.detection_fields[].key: "x-ssl-policy-action", security_result.detection_fields[].value: x-ssl-policy-action Mappé directement à partir du champ JSON correspondant
x-ssl-policy-categories security_result.category_details[]: x-ssl-policy-categories Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-ssl-policy-name security_result.rule_name: x-ssl-policy-name Mappé directement à partir du champ JSON correspondant
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 Mappé directement à partir du champ JSON correspondant
x-sr-dst-ip security_result.detection_fields[].key: "x-sr-dst-ip", security_result.detection_fields[].value: x-sr-dst-ip Mappé directement à partir du champ JSON correspondant
x-sr-dst-port security_result.detection_fields[].key: "x-sr-dst-port", security_result.detection_fields[].value: x-sr-dst-port Mappé directement à partir du champ JSON correspondant
x-type additional.fields[].key: "xType", additional.fields[].value.string_value: x-type Mappé directement à partir du champ JSON correspondant
x-transaction-id additional.fields[].key: "transactionId", additional.fields[].value.string_value: x-transaction-id Mappé directement à partir du champ JSON correspondant
metadata.vendor_name Définissez-le sur "Netskope".
metadata.product_name Définissez la valeur sur "Netskope Webproxy" si elle n'est pas déjà définie.
metadata.log_type Définissez-le sur "NETSKOPE_WEBPROXY".

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