Notes de mise à jour
1.1.0
Added
- Added support for configurable delimiters, including custom values with validation.
- Added support for remove quotes from the CSV file.
Changed
- Updated loggers and tooltips.
1.0.1
Fixed
- Fixed plugin validation with respect to CSV path.
- Fixed Sanity Step level validation.
1.0.0
Added
- Initial release.
This document explains how to configure the Microsoft File Share EDM v1.1.0 plugin with the Exact Data Match module of the Netskope Cloud Exchange platform. This plugin fetches CSV files from a Microsoft Windows server using either SMB or SFTP protocols, and generates Exact Data Match (EDM) hashes according to the defined plugin configurations.
Le plugin prend en charge la connectivité à double protocole : SMB (Server Message Block) pour le partage de fichiers Microsoft natif, et SFTP (SSH File Transfer Protocol) pour le transfert de fichiers sécurisé. Cette flexibilité permet aux organisations de choisir le protocole le plus approprié en fonction de leurs exigences de sécurité et de la configuration de leur infrastructure.
Conditions préalables
Pour compléter cette configuration, vous avez besoin de :
- Un locataire Netskope (ou plusieurs, par exemple des instances de production et de développement/test).
- Un locataire Netskope Cloud Exchange avec le plugin Tenant et le plugin Exact données Match déjà configurés.
- Serveur Microsoft Windows doté de fonctions de partage de fichiers en réseau.
- Fichiers CSV stockés sur le serveur Microsoft contenant les données à traiter pour la génération de hachages GED.
- Les informations d'identification de l'utilisateur approprié avec des autorisations de lecture pour les fichiers CSV sur le serveur Microsoft.
For the SMB Protocol
- Serveur Microsoft avec partage de réseau activé (service SMB/CIFS en cours d'exécution).
- Dossier partagé configuré avec les autorisations appropriées.
- Connectivité réseau au serveur Microsoft sur les ports SMB (généralement 445).
For the SFTP Protocol
- Serveur Microsoft avec le service OpenSSH activé et configuré.
- Service SSH en cours d'exécution et accessible depuis Cloud Exchange.
- Connectivité réseau au serveur Microsoft via le protocole SFTP (généralement port 22).
Prise en charge du plugin Microsoft File Share
Ce plugin récupère des fichiers CSV d'un serveur Microsoft Windows en utilisant les protocoles SMB ou SFTP et génère des hachages Exact données Match (EDM) selon les configurations définies par le plugin. Le plugin prend en charge la connectivité à double protocole pour une flexibilité et une compatibilité maximales avec différents environnements réseau.
| Fonction | Support |
|---|---|
| Pull | Oui |
| Push | Non |
Permissions et correspondances
Permissions du serveur Microsoft
| Type d'autorisation | Protocole SMB | Protocole SFTP |
|---|---|---|
| Accès en lecture au fichier | Required | Required |
| Accès au partage de réseau | Required | Non requis |
| Accès SSH | Non requis | Required |
| Accès au port | 445 (SMB) | 22 (SSH) |
Autorisations requises
Ces autorisations sont nécessaires pour la configuration du plugin :
For the SMB Protocol
- L'utilisateur du serveur Microsoft doit avoir un accès en lecture au dossier partagé et au fichier CSV.
- Connectivité réseau au serveur Microsoft sur le port 445.
- Service SMB/CIFS activé sur le serveur Microsoft.
For the SFTP Protocol
- L'utilisateur SSH doit avoir les droits de lecture pour le fichier CSV spécifié.
- Connectivité réseau avec le serveur Microsoft sur le port configuré (par défaut : 22).
- Le service OpenSSH est activé et fonctionne sur le serveur Microsoft.
Détails de l'API
List of Libraries Used
Ce plugin utilise des bibliothèques Python pour établir des connexions avec des serveurs Microsoft Windows et transférer des fichiers CSV via les protocoles SMB ou SFTP.
For the SMB Protocol
- Library: pysmb - Bibliothèque SMB/CIFS purement Python
- Usage: pysmb est une implémentation purement Python du protocole SMB/CIFS qui permet aux applications Python d'accéder à des dossiers partagés SMB/CIFS et d'y transférer des fichiers. Le plugin utilise pysmb pour se connecter aux dossiers partagés de Windows, s'authentifier auprès du serveur et télécharger des fichiers CSV en toute sécurité via le protocole SMB.
For the SFTP Protocol
- Library: Paramiko - Bibliothèque de protocole SSH2 pour Python
- Usage: Paramiko est une implémentation purement Python du protocole SSHv2, fournissant à la fois des fonctionnalités de client et de serveur. Le plugin utilise Paramiko pour créer des connexions SFTP sécurisées, s'authentifier auprès du serveur Windows et transférer des fichiers CSV en toute sécurité lorsque OpenSSH est activé sur Windows.
Mise en œuvre du protocole SMB
Create a SMB Connection
from ..lib.smb.SMBConnection import SMBConnection
connection = SMBConnection(
username=configuration.get("smb_username"),
password=configuration.get("smb_password"),
my_name="netskope_machine",
remote_name=configuration.get("smb_machine_name"),
)
# Connect to the server
connection_result = connection.connect(
ip=configuration.get("smb_server_ip"),
)
Download a CSV File via SMB
with open(csv_file_path, "wb") as file_object:
if record_count:
# Partial file retrieval (for sample data)
smb_connection.retrieveFileFromOffset(
shared_directory_name,
remote_file_path,
file_obj=file_object,
offset=0,
max_length=record_count * 5 * 1024,
)
else:
# Full file retrieval
smb_connection.retrieveFile(
shared_directory_name,
remote_file_path,
file_obj=file_object,
)
Close and SMB Connection
smb_connection.close()
Mise en œuvre du protocole SFTP
Create an SSH Client Connection
from ..lib import paramiko
ssh_connection = paramiko.SSHClient()
ssh_connection.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_connection.connect(
hostname=configuration.get("sftp_server_ip"),
username=configuration.get("sftp_username"),
password=configuration.get("sftp_password"),
port=configuration.get("sftp_port"),
)
Create an SFTP Client
with ssh_connection.open_sftp() as sftp_session:
# SFTP operations here
pass
Download a CSV File via SFTP
with ssh_connection.open_sftp() as sftp_session:
if record_count:
# Partial file retrieval (for sample data)
file_content = []
with sftp_session.file(
remote_file_path, "r"
) as remote_file:
for _ in range(record_count + 1):
record = remote_file.readline()
if not record:
break
file_content.append(record)
with open(
csv_file_path, "w", encoding="utf-8", newline="\n"
) as local_file:
local_file.writelines(file_content)
else:
# Full file retrieval
sftp_session.get(remote_file_path, csv_file_path)
Close SFTP Connections
ssh_connection.close()
Protocol Parameters
SMB Protocol Parameters
| Paramètres | Value |
|---|---|
| Protocole | SMB/CIFS (Server Message Block) |
| Default Port | 445 |
| Authentification | Username/Password |
| Type de connexion | Partage de fichiers en réseau |
| Versions prises en charge | SMB 2.0, SMB 3.0 |
SFTP Protocol Parameters
| Paramètres | Value |
|---|---|
| Protocole | SFTP (protocole de transfert de fichiers SSH) |
| Default Port | 22 |
| Authentification | Username/Password |
| Type de connexion | Secure Shell (SSH) |
| Cryptage | Protocole SSH-2 |
Performance Matrix
Here is the performance reading conducted for fetching and sanitizing ~1M Rows (25 columns, per column ~50 characters long string, 1.3 GB size, Avg Column Uniqueness: ~96%, Avg Row Uniqueness: ~96%) CSV file on a Large CE instance with these specifications:
| Description | Spécifications |
|---|---|
| Détails de la pile | Taille : Grande RAM : 32 GB CPU : 16 cœurs |
| CSV data fetched from Microsoft File Share Without Sanitization | ~7.4K rows/sec |
Note
- This performance reading is done with SMB protocol configured on a Windows instance.
- For CE instance disk space, refer to this documentation.
Performance Comparison
- SFTP protocol shows approximately 50% better performance compared to SMB.
- Sanitization reduces processing speed by approximately 55-65% for both protocols.
- SFTP is recommended for better performance and security.
Workflow
- Configurez le serveur Microsoft Windows (SMB ou SFTP).
- Configurez le plugin EDM Microsoft File Share.
- Configurez le partage entre le plugin GED Microsoft File Share et le plugin GED Netskope.
- Validez le plugin EDM Microsoft File Share.
Regardez une vidéo
Cliquer sur « play » pour regarder une vidéo.
Configurer le serveur Microsoft Windows
Pour le partage de fichiers SMB
- Recherchez ou créez le dossier que vous souhaitez partager.
- Faites un clic droit sur le dossier et sélectionnez Properties.
- Go to the Sharing tab and click Advanced Sharing.
- Vérifiez Share this folder.
- Donnez un nom au partage si nécessaire.
- Si vous le souhaitez, modifiez le nom du partage et cliquez sur Permissions pour définir le contrôle d'accès.
- Dans la fenêtre Permissions, choisissez les utilisateurs ou les groupes auxquels vous voulez donner accès :
- Si l'utilisateur requis n'est pas répertorié dans la section Noms de groupes ou d'utilisateurs, cliquez sur Add. Select Advanced cliquez sur Find Now et choisissez l'utilisateur dans la liste.
- Une fois l'ajout effectué, confirmez que l'utilisateur apparaît dans la boîte de dialogue Permissions et assurez-vous qu'il dispose de l'autorisation Read pour le dossier.
- Définissez le niveau d'accès (lecture, modification ou contrôle total).
- Cliquez sur Apply et OK.
- Enregistrez les modifications et vérifiez que le nom du dossier apparaît juste après le nom de l’ordinateur dans le Network Path.
Etapes pour activer OpenSSH sur un serveur Windows pour SFTP
Suivez ces étapes pour activer le service OpenSSH sur le serveur Windows :
https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui
Configurer le plugin EDM Microsoft File Share
-
Dans Cloud Exchange, accédez à Settings > Plugin Store.
-
Recherchez et sélectionnez le plugin Microsoft File Share EDM v1.1.0.

-
Saisissez les informations de base :
-
Configuration Name: Enter a name appropriate for your integration.
The configuration name you provide will be used to give the name to the generated hash file to share with the Netskope tenant. Be aware that if you later delete this configuration and create a new one with the same name, the hash file may already exist in the Netskope tenant. In such cases, attempting to push the hash file to the tenant will result in an error, as the file with the same name already exists. Consider using a unique name to avoid this issue. -
Sync Interval: Adjust Sync Interval as per your requirement. (Default: 12 hours)

-
-
Protocol Selection: Choose the protocol to connect to the Microsoft server:
- SMB: Protocol natively designed for Microsoft-based systems. Best for internal networks.
- SFTP: Secure file transfer protocol. Comparatively faster and more secure. Requires OpenSSH service on Windows.

-
Click Next and enter the Configuration Parameters:
-
Configuration Parameters For SMB:
-
Server IP/Hostname: IP address or hostname of the Windows server.
-
Machine Name: Nom de machine NetBIOS du serveur Windows.
-
Username: Username with read access to the shared directory.
-
Password: Password associated with the username.
-
Shared Directory Name: Name of the shared directory.
-
CSV File Path: Path to the CSV file relative to the shared directory.
-
Delimiter: Single character delimiter used in the CSV/TXT file (e.g. comma, pipe, semicolon).
-
Remove Quotes: Mark as checked if your CSV encloses fields in double quotes, especially when values contain commas. Quoted fields will be parsed as single columns. Improper quote placement may cause rows to be skipped.

-
-
Configuration Parameters For SFTP:
-
Server IP/Hostname: IP address or hostname of the Windows server.
-
Username: Username with read access to the CSV file.
-
Password: Password associated with the username.
-
Port: Port to connect with OpenSSH service (Default: 22).
-
CSV File Path: Full path to the CSV file on the server.
-
Delimiter: Single character delimiter used in the CSV/TXT file (e.g. comma, pipe, semicolon).
-
Remove Quotes: Mark as checked if your CSV encloses fields in double quotes, especially when values contain commas. Quoted fields will be parsed as single columns. Improper quote placement may cause rows to be skipped.
By default, quotes are treated as literal text. Enable Remove Quotes toggle if your CSV uses double quotes to encapsulate fields that contain commas (like"123 ABC Street, Suite 100"). This ensures the field is treated as a single column. Note that this mode requires strict CSV formatting. If a field starts with a quote, any character, including a space, following the closing quote but preceding the comma (like"Word",) will cause the row to be skipped. -
-
-
Click Next and enter the Hash Generation and Sanitization Parameters:
-
Select les options appropriées pour les opérations d'assainissement et de génération de hachage :
- Sanitization (Name Column): Sanitize the content by checking the Name Column checkbox. (Default: Unchecked). The Sanitization Process performs the following actions:
- One character: The cell will be marked as invalid if it contains only one character.
- Digits: Cells containing digits will be marked as invalid.
- Stopwords: Cells that match a stopword from the list will be marked as invalid (This works only if the Remove stopwords checkbox is checked).
- Non-alphanumeric characters: Remove all special characters to validate the cell.
- La génération de hachages est divisée en deux parties :
- Normalization: Select the value from dropdown to normalize the data value. (Default: None)
- Create Dictionary: Select value from dropdown to create dictionary of unique values for selected field that can be used in DLP rule in netskope tenant. (Default: None)
- Sanitization (Name Column): Sanitize the content by checking the Name Column checkbox. (Default: Unchecked). The Sanitization Process performs the following actions:
-
Remove Stopwords: Mark as checked if you want to remove certain stopwords as part of the sanitization process.(Default:Unchecked) Ensure that Name Column is checked for the applicable field to reflect the changes.
Note
- Utilisez le paramètre de normalisation pour normaliser les résultats récupérés. Par exemple, un numéro tel que 123-45-6789 ou 123 45 6789 sera traité comme 123456789. Les normalisations numériques ignorent des caractères tels que les points, tirets et espaces. Une normalisation de chaîne ignore la sensibilité des lettres majuscules.
- N'utilisez l'option Créer un dictionnaire qu'en cas de nécessité, car cette opération est gourmande en ressources et peut avoir un impact sur les performances du système. Choisissez cette option de manière réfléchie pour une efficacité optimale.

-
-
Click Next. Preview the sanitization sample output by clicking Preview Good File or Preview Bad File.
If you are using the plugin with sanitization On, then the performance may be differ due to extra processing. -
Proceed without sanitization: Uncheck this option to proceed with sanitization. (Default: Checked)
Toutes les données seront prises en compte pour la génération du hachage si cette option n'est pas cochée; dans le cas contraire, seul le contenu du bon fichier sera pris en compte pour la génération du hachage. -
Click Save. You will be redirected to Exact Data Match > Plugins page where you can see your configured plugin.

Configurer le partage pour Microsoft File Share
Une configuration de partage est utilisée pour partager les hachages EDM générés avec la plate-forme de destination. Pour partager des hachages EDM avec Netskope Tenant, créez une configuration de partage en suivant ces étapes :
-
Allez à Exact Data Match > Sharing et cliquez sur Add Sharing Configuration.

-
Configurez les paramètres de partage :
- Source Configuration: Select the configured Microsoft File Share EDM plugin.
- Destination Configuration: Select une destination où EDM Hash sera partagé.
- Target: La valeur est automatiquement définie en fonction de la configuration de la destination sélectionnée.

-
Cliquez sur Save.
Validate the Plugin EDM Microsoft File Share
Valider dans Cloud Exchange
To validate the pulling of the configured plugin in Cloud Exchange, go to Settings > Logging and search for the Microsoft File Share EDM plugin logs.
You can verify the plugin operation from the logs available at Logging in Cloud Exchange:

Les valeurs d'état sont les suivantes :
- Scheduled: Indicates that the sharing has been configured, and the pull and push operations are waiting in the queue for processing.
- Generating Hash: Indicates that the hash generation process has started. This stage includes fetching > validating > sanitization (if enabled) > generating hash.
- Uploading Hash: Indicates that uploading the hash to the destination configuration has started.
- Upload Completed: Indique que les hachages sont téléchargés dans la configuration de destination.
- Checking Apply Status: Checking the apply status of hashes to the destination configuration.
- Apply In Progress: The hash process has started and is in progress on the destination.
- Completed: Indicates that the hash file has been pushed successfully to the destination configuration.
- Failed: Indicates that the final result of the action has failed to execute. The actions are Generating Hash/Uploading Hash/Checking Apply Status.
Shared EDM hashes can be verified from the logs available at Logging in Cloud Exchange:

Validate in the Netskope Tenant
Pour garantir la transmission des hachages de GED au locataire Netskope à partir du site Cloud Exchange:
-
Connectez-vous à votre locataire Netskope, allez à Policies > DLP.

-
Cliquez sur Edit Rules et sélectionnez Data Loss Prevention.

-
On the Exact Match tab, a list of files is shown.

Dépannage du plugin EDM Microsoft File Share
Impossible de configurer le plugin de partage de fichiers Microsoft
Si vous ne parvenez pas à configurer le plugin Microsoft File Share EDM, cela peut être dû à l'une des raisons suivantes :
For the SMB Protocol
- Les informations d'identification SMB fournies sont incorrectes.
- Le service SMB/CIFS ne fonctionne pas sur le serveur Windows.
- Problèmes de connectivité réseau au port 445.
- Le dossier partagé n'est pas correctement configuré.
- L'utilisateur n'a pas les droits de lecture sur le répertoire partagé.
For the SFTP Protocol
- Les informations d'identification SSH fournies sont incorrectes.
- Le service OpenSSH ne fonctionne pas sur le serveur Windows.
- Problèmes de connectivité réseau au port 22.
- Le service SSH n'est pas correctement configuré.
- L'utilisateur n'a pas les droits de lecture pour le fichier CSV.
What to do:
For SMB Protocol:
-
Vérifiez les informations d'identification SMB et l'accès aux dossiers partagés :
cmd net use \\\\server_ip\\shared_folder /user:username password -
Vérifiez l'état du service SMB sur le serveur Windows :
Get-Service -Name LanmanServer -
Testez la connectivité du réseau :
telnet server_ip 445
For SFTP Protocol:
-
Vérifiez les informations d'identification SSH :
bash ssh username@server_ip -p port_number -
Vérifiez l'état du service OpenSSH :
Get-Service -Name sshd -
Testez la connectivité du réseau :
telnet server_ip 22
Problèmes de connexion spécifiques au protocole
SMB Connection Failures
Si les connexions SMB échouent :
What to do:
- Activez SMB sur le serveur Windows s'il est désactivé :
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol - Configurez le pare-feu Windows pour SMB :
New-NetFirewallRule -DisplayName "SMB-In" -Direction Inbound -Protocol TCP -LocalPort 445 - Vérifiez les autorisations du dossier partagé et assurez-vous que l'utilisateur a un accès en lecture.
SFTP Connection Failures
Si les connexions SFTP échouent :
What to do:
- Installez le serveur OpenSSH s'il n'est pas installé :
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 - Démarrez et configurez le service SSH :
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' - Configurez le pare-feu Windows pour SSH :
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Fichier CSV introuvable ou accès refusé
Si vous recevez des messages d'erreur concernant un fichier non trouvé ou un accès refusé.
What to do:
- Vérifiez que le chemin d'accès au fichier CSV est correct et que le fichier existe.
- Assurez-vous que l'utilisateur dispose des droits de lecture pour le fichier.
- Vérifiez que le fichier n'est pas verrouillé par un autre processus.
- Pour SMB : assurez-vous que le chemin d'accès est relatif au répertoire partagé.
- Pour SFTP : assurez-vous que le chemin d'accès est le chemin absolu complet sur le serveur.
La génération de hachage échoue ou prend trop de temps
If hash generation fails or performance is poor.
What to do:
- Vérifiez l'espace disque disponible sur Cloud Exchange (assurez-vous d'avoir au moins 2x la taille du fichier CSV).
- Envisagez d'utiliser le protocole SFTP pour de meilleures performances.
- Réduisez la taille du fichier CSV ou divisez-le en plusieurs fichiers plus petits.
- Désactivez l'assainissement s'il n'est pas nécessaire pour améliorer les performances.
- Surveillez les ressources du système pendant le traitement.
Échec de la configuration du partage
If sharing EDM hashes to Netskope Tenant fails.
What to do:
- Vérifiez que la configuration de la destination est correcte.
- Check network connectivity to the Netskope tenant.
- Assurez-vous que le nom du fichier de hachage n'existe pas déjà dans le locataire.
- Examinez les journaux pour y trouver des messages d'erreur spécifiques.
Comportements connus
- Les fichiers CSV volumineux peuvent nécessiter un temps de traitement et des ressources système importants.
- L'assainissement peut réduire la vitesse de traitement d'environ 65% mais améliore la qualité des données.
- La création de dictionnaires est gourmande en ressources et ne doit être utilisée qu'en cas de nécessité.
- Le plugin crée des fichiers temporaires pendant le traitement qui sont automatiquement nettoyés.
- Des dépassements de délai de connexion SSH peuvent se produire avec des fichiers très volumineux ; envisagez d'augmenter les valeurs de délai.
- L'utilisation de la mémoire augmente avec la taille du fichier CSV ; surveillez les ressources du système pendant le traitement de fichiers volumineux.
- Il peut être nécessaire de configurer les règles du pare-feu Windows pour les protocoles SMB et SFTP.
Limites
Each Netskope tenant has a limit of handling up to 5 staging files. If this maximum limit is reached, you may encounter the following error while sharing hashes:
EDM Netskope Exact Data Match [EDM Netskope] Received exit code 400, Error occurred while uploading EDM hashes of configuration Linux EDM to the configuration EDM Netskope.
To resolve this error, you have to delete the existing files from staging.

