La correspondance exacte valide la présence ou l'absence d'un identifiant par rapport à l'ensemble des données contrôlées par une politique. La correspondance exacte réduit les faux positifs et garantit une prévention précise des fuites de données pour des entrées spécifiques de l'ensemble de données. Voici quelques exemples de cas d'utilisation :
- Empêchez les fuites de données concernant les SSN et les ID d'employés présents dans la base de données de votre entreprise.
- Une liste de codes de coupon de détail formatés comme des numéros de carte de crédit mais qui ne sont pas valides. Un résultat correspondant à une carte de crédit présent dans cet ensemble de données sera ignoré.
EDM enables high-confidence detection of sensitive structured data with:
- Zero exposure of raw data
- High precision, low false positives
- Scalable ingestion via UI, Python, or API
Pour utiliser la correspondance exacte, vous devez d'abord télécharger un ensemble de données dans votre appliance virtuelle sur site ou dans l'interface utilisateur du locataire de Netskope.
La première ligne du fichier de l'ensemble de données doit contenir le nom de la colonne décrivant les données qu'elle contient. Si l'ensemble de données ne comprend pas d'en-tête de colonne, le téléchargement du fichier échouera.
Ces noms de colonnes peuvent être associés à un identifiant DLP (Prévention des pertes de données) pour validation lors de l'élaboration d'une règle DLP (Prévention des pertes de données).
Par exemple, vous pouvez créer un fichier contenant le numéro de la carte de crédit (colonne 1), le prénom (colonne 2) et le nom de famille (colonne 3) délimités par des tirets. Chaque entrée du fichier sera hachée par SHA-256 et téléchargée vers l'instance locataire. Dans la règle DLP (Prévention des pertes de données), vous devez faire correspondre les identifiants du numéro de carte de crédit, du prénom et du nom de famille.
Préparation
The file can be in CSV or TXT formats and the maximum file size limit is 8MB or 160 GB with multipart upload.
Le fichier d'entrée pour EDM doit être encodé en UTF-8.
There must be a header row, no empty rows, and the same number of columns as headers.
Normalization
Normalization ensures consistency in data representation before hashing, eliminating variations that could lead to false negatives.
- Case insensitive, Utf-8 Encoding
- Names and Postal Address – Dictionaries
- Delimiters, No-empty files – minimum 1 row, Consistent Columns with Headers
- File names – Alphanumeric with underscore ; avoid special characters
Example
| Raw Data | Normalized Data |
|---|---|
| Jxx.Dyy@email.com | jxx.dyy@email.com |
| 987-654-3210 | 9876543210 |
Best Practices
- Apply consistent normalization rules across all cells
- Validate normalized output before hashing
Upload Methods
Tenant UI
To upload via Tenant UI:
- Allez sur Policies > Profiles > DLP > Edit Rules > Data Loss Prevention > Exact Match dans l'interface utilisateur de Netskope.
- Cliquez sur New Exact Match.
- Dans la boîte de dialogue New Exact Match File, indiquez le type de délimiteur utilisé dans le fichier.
- Cliquez sur Select File et téléchargez votre fichier de correspondance exacte. La première ligne du fichier, qui correspond à l'en-tête de colonne, est affichée dans la boîte de dialogue New Exact Match File.

- Pour chaque en-tête de colonne, sélectionnez si vous souhaitez normaliser les données de cette colonne sous forme de chaîne ou de nombre, et créez un dictionnaire de données uniques pouvant être utilisé dans une règle DLP (Prévention des pertes de données).
- Cliquez sur Save and Create Column Groups.
- Dans la boîte de dialogue Créer des groupes de colonnes, vous pouvez créer des groupes de correspondance exacte avec une combinaison de colonnes. Les colonnes de chaque groupe de colonnes seront ANDées lors de la correspondance exacte.

Vous pouvez également sauter cette étape et ajouter des groupes de colonnes après le téléchargement du fichier.
- Cliquez sur Save.
Python Scripts
Only a virtual machine is required to perform a multipart upload (not virtual appliance).
For large datasets exceeding the UI limits or scheduled ingestion pipelines, you can automate dataset uploads through scripting.
Local Hash Generation
Hashing transforms sensitive data into irreversible fingerprints, enabling secure matching without exposing raw values.
Supported Approach
- Cryptographic hashing (e.g., SHA-256)
- Optional salting
Key Requirements
- Deterministic: Same input → Same hash
- Collision-resistant
- Non-reversible
Example (Conceptual)
| Normalized Value | Hash Output (SHA-256) |
|---|---|
| john.doe@email.com | 5f4dcc3b5aa765d61d8327deb882cf99 |
Une fois les données téléchargées, chaque entrée du fichier est hachée en SHA-256 et envoyée à votre instance locataire dans le nuage Netskope.
Choosing the right upload method depends on:
- Dataset size
- Automation needs
- Integration maturity
Sample Workflow
- Generate a API token with `dlp_profile` read-write access can be downloaded from Netskope Tenant UI
- Tenant UI – Settings > Administration> Service Account > Roles
- Settings RBAC: `dlp_profile` required

- Initiate EDM Hash generator Script to generate SHA256 hashes of raw data
- All binary files will be compressed into a single archive file
- Upload Hashed file to Netskope Cloud using EDM upload Script
Sample Python Snippet (Illustrative)
`bash
# Upload with description
python3 edm_api_upload.py \
-s mycompany.goskope.com \ -p 443 \ -c ~/netskope_api_token.txt \
-v \ upload \ -d "Employee SSN database - Q4 2024 refresh" \ employees_2024_q4.tgz
A list of detailed steps and Scripts (downloadable) are captured in EDM Hash Generation and Upload Guide
Best Practices
Clean Staging files once complete
Validate each chunk upload response
REST API v2
Only a virtual machine is required to perform a multipart upload (not virtual appliance).
Local Hash Generation
Hashing transforms sensitive data into irreversible fingerprints, enabling secure matching without exposing raw values.
Supported Approach
- Cryptographic hashing (e.g., SHA-256)
- Optional salting
Key Requirements
- Deterministic: Same input → Same hash
- Collision-resistant
- Non-reversible
Example (Conceptual)
| Normalized Value | Hash Output (SHA-256) |
|---|---|
| john.doe@email.com | 5f4dcc3b5aa765d61d8327deb882cf99 |
Une fois les données téléchargées, chaque entrée du fichier est hachée en SHA-256 et envoyée à votre instance locataire dans le nuage Netskope.
Choosing the right upload method depends on:
- Dataset size
- Automation needs
- Integration maturity
API Endpoints are
Head to Tenant UI – Tools – Rest API v2 Section
- Click API Documentation

- Swagger UI in a new tab, displaying all available endpoints and parameters

Sample Workflow
Following are steps of a multi-phase workflow:
- Staging: Upload metadata and initiate multipart upload
- POST /dlp/edm/file/staging
- Uploading: Upload file chunks using PUT requests
- PUT /dlp/edm/file/staging/{fileid}
- Get File Status
- GET /dlp/edm/file/staging/{fileid}
- Completion: Complete the multipart upload using POST
- POST /dlp/edm/file/staging/{fileid}?uploadid={uploadid}
- Applying: Apply the staged file to the EDM system
- POST /dlp/edm/file/apply/{fileid}
- Clean Up: Automatic or manual deletion of staging files
- DELETE /dlp/edm/file/staging/{fileid}
For a list of Detailed steps and Scripts, please refer to DLP-EDM-Upload-Service—API-Users-Guide
Netskope Virtual Appliance
Pour créer un hachage de votre contenu structuré :
- Préparez le fichier au format CSV structuré en lignes et en colonnes. Nous recommandons que le fichier CSV ne contienne pas plus de 50 millions d'enregistrements et comprenne une ligne d'en-tête qui nomme les colonnes. Ces noms apparaîtront dans la règle DLP (Prévention des pertes de données) sous Colonne de fichier pour la validation de la correspondance exacte. Assurez-vous que les données des colonnes sont normalisées. Il existe deux façons de normaliser les données, en fonction du type de données.
Normalisez les colonnes contenant des chiffres : Assurez-vous que les données, telles que les cartes de crédit, sont des nombres consécutifs qui ne contiennent pas de caractères spéciaux tels que des tirets, des virgules, des guillemets et des espaces.
Normalisez les colonnes qui contiennent des chaînes de caractères : Veillez à ce que les données, telles que les noms et prénoms, soient en majuscules et minuscules.
- En utilisant
nstransfercompte, transférez le fichier CSV dans le répertoirepdd_datade l’Appliance Virtuelle :scp <CSV file> nstransfer@<virtual_appliance_host>:/home/nstransfer/pdd_data
L'emplacement du répertoire
pdd_datavarie entre les comptes d'utilisateurnstransferetnsadmin. Si vous utilisez le comptenstransferpour copier le fichier sur l'appareil, l'emplacement du répertoirepdd_dataest/home/nstransfer/pdd_data. Lorsque vous vous connectez à l'appliance avec le comptensadmin, le répertoirepdd_dataest situé à l'adresse/var/ns/docker/mounts/lclw/mountpoint/nslogs/user/pdd_data. - Une fois les données transférées avec succès, connectez-vous à l'appareil à l'aide du compte
nsadmin. - Exécutez la commande suivante à l'invite du shell Netskope pour hacher les données et les télécharger sur le nuage Netskope:
request dlp-pdd upload column_name_present true csv_delim ~ norm_str 2,3 file /var/ns/docker/mounts/lclw/mountpoint/nslogs/user/pdd_data/upload/sensitivedata.csv
Conseil
column_name_present truespécifie qu’il y a une ligne d’en-tête dans le fichier.csv_delim ~indique que le fichier CSV est délimité par des tildes.norm_str 2,3précise que les colonnes 2 et 3 doivent être traitées comme des chaînes de caractères.file <CSV_file>spécifie le fichier qui doit être haché et téléchargé.La commande revient :
PDD uploader pid 9501 démarré. Surveillez le statut à l'aide de >request DLP (Prévention des pertes de données)-pdd status.
- Vérifiez l'état du téléchargement :
request dlp-pdd status
La commande revient :
Successfully uploaded the data from /var/ns/docker/mounts/lclw/mountpoint/nslogs/user/pdd_data/upload/sensitivedata.csv to Netskope cloud
- Lorsque les données sont téléchargées avec succès, le fichier
sensitivedata.csvet les noms de colonnes correspondants apparaissent dans l'onglet Correspondance exacte des règles DLP (Prévention des pertes de données).
Rendez-vous sur le site de support Netskope pour accéder aux scripts.
edm_hash_generator.py – This script converts a CSV file into Salted SHA256 hashes.
Après l'exécution du script, un certain nombre de fichiers devraient être créés dans le répertoire de sortie spécifié dans la commande. Téléchargez tous les fichiers vers l'appliance et suivez les instructions "DLP (Prévention des pertes de données)-pdd" pour télécharger les fichiers GED vers le nuage.
Le texte d'aide est le suivant :
usage: usage: edm_hash_generator.py [options] <mode> <input_csv> <output_dir>
Mode (hash) generates secure hashes for each column of the input csv file.
Example - edm_hash_generator.py hash <input_csv> <output_dir>.
positional arguments:
mode Mode (hash) generates secure hashes for each column of
the input csv file. Example - edm_hash_generator.py
hash <input_csv> <output_dir>.
input_csv Input CSV file
output_dir Output directory
optional arguments:
-h, --help show this help message and exit
-l LOG_FILE, --log LOG_FILE
Log file
-d DELIMITER, --delimiter DELIMITER
Delimiter for the input file. Default is comma
-c COLUMN_NAMES, --column-names COLUMN_NAMES
Comma separated column names. Useful when the input
file does not have column names in the first line.
-p, --parse-column-names
First line of the input file contains column names. If
specified, this line is used to infer column names and
the -c/--column-names option is ignored.
--dict-cs DICT_CS Case sensitive dictionary column list. Ex: 1,2
--dict-cins DICT_CINS
Case insensitive dictionary column list. Ex: 3,4
--skip-hash Skip hash generation, Requires one of --dict-
cs/--dict-cins option.
--edk-lic-dir EDK_LIC_DIR
Directory where EDK license file (licensekey.dat) is
present [default . (current_dir)]
--edk-tool-dir EDK_TOOL_DIR
Directory where EDK tool (edktool.exe) is present
[default . (current_dir)]
--input-encoding INPUT_ENCODING
Set input csv file's character encoding like
iso-8859-1. Default is utf-8
--fips Enforce Openssl FIPS mode only
Une fois le script exécuté avec succès, vous pouvez télécharger les fichiers hachés sur l'appliance à l'aide de la commande suivante :
nsappliance> request DLP (Prévention des pertes de données)-pdd hash-upload dir /var/ns/docker/mounts/lclw/mountpoint/nslogs/user/pdd_data/upload/<pathtohashdata>/ metadata /var/ns/docker/mounts/lclw/mountpoint/nslogs/user/pdd_data/upload/<pathtomedata/metadatafile.json>
Cloud Exchange Deployments
For additional details, please see Exact Data Match Module (Beta).
Prochaines étapes
Checking EDM Status and Creating a DLP Rule
The uploaded exact match file is displayed in the top row of the DLP – Exact Match page.
Le statut de téléversement par défaut s’affiche Pending. Si vous n’avez pas créé de groupes de colonnes auparavant, le statut de téléversement est affiché comme Incomplete.

Pour consulter le dernier état du téléchargement, cliquez sur le bouton Refresh Status en haut de la page.

Vous pouvez modifier le fichier de correspondance exacte téléchargé via l’interface locataire. Cliquez sur … dans la ligne qui affiche le fichier de correspondance exacte et sélectionnez Upload File.
L'option Upload File n'est affichée que si le fichier a été téléchargé via l'interface utilisateur du locataire. La capture d'écran suivante compare les options disponibles pour un fichier de correspondance exacte lorsqu'il est téléchargé via l'interface utilisateur du locataire ou via l'appliance.

Après avoir téléchargé un fichier de correspondance exacte, vous pouvez l'ajouter à une règle DLP (Prévention des pertes de données) personnalisée sur New.
- Dans la section Correspondance exacte de la règle New DLP (Prévention des pertes de données), cochez la case Enable Exact Match.
- Select le fichier de correspondance exacte que vous venez de télécharger dans la liste déroulante, puis sélectionnez les groupes de colonnes que vous souhaitez inclure. Les colonnes de correspondance exacte sont affichées.
- Pour chaque identifiant, sélectionnez la valeur appropriée dans la liste déroulante de chaque colonne.

- Lorsque vous avez terminé, cliquez sur Next.

