Netskope LogoNetskope Logo
  • Security Services
  • AI Services
  • Networking Services
  • Analytics Services
  • Integrations
  • getting-started.svgGetting Started
    • Support
    • Community
    • Netskope.com
    © 2026 All Rights Reserved. Netskope Inc.
    Home
    Netskope Cloud Exchange
    Exact Data Match Module
    Configure 3rd-party Exact Data Match Plugins
    SMB File Share Plugin for Exact Data Match

    SMB File Share Plugin for Exact Data Match

    Release Notes

    1.0.0

    Added

    • Initial release with SMB2/SMB3 CSV ingestion.

    This document explains how to configure the SMB File Share EDM plugin v1.0.0 with the Exact Data Match plugin of the Netskope Cloud Exchange platform. This plugin is used to fetch a CSV file from a remote SMB server (Windows or Samba) and to generate EDM hashes of the pulled CSV file. The plugin supports SMB protocol version from SMB 2.0.2 to SMB 3.1.1.

    Prerequisites

    To complete the configuration, you need:

    • A Netskope tenant (or multiple, for example, production and development/test instances).
    • A Netskope Cloud Exchange tenant with the Tenant plugin and Exact Data Match plugin already configured.
    • SMB server configured in Windows/Linux/Isilon instance with read access to the SMB Shared Directory and CSV files with appropriate data structure.
    For systems with large specifications based standalone deployment (32 GB RAM and 16-core CPU), ensure that at least twice the size of the database is available as free storage. For example, to process a 1 GB database efficiently, you should have approximately 7–8 GB of available disk space.
    SMB File Share EDM Plugin Support

    This plugin fetches data from a SMB server supporting SMB 2.0.2 to SMB 3.1.1 and generates Exact Data Match (EDM) hashes according to the defined plugin configurations.

    FeatureSupport
    PullYes
    PushNo
    SMB Server Permissions
    Permission TypeRequirement
    SSH AccessRequired
    File Read Access Required
    Network Share AccessRequired
    Port Access445(SMB)
    Required Permissions
    • Users should have read access to the shared folder and CSV file.
    • Network connectivity to port 445.
    • SMB service enabled on the server.
    • Sufficient disk space on Cloud Exchange for temporary file processing.
    API Details
    List of Libraries Used to Access Remote SMB File Share

    This plugin uses Python libraries and the SMB protocol stack to establish secure connections to Windows SMB servers and transfer CSV/TXT files by navigating shared directories.

    Library: smbclient

    Usage: smbclient is a high-level Python wrapper that provides simple file-system-like functions (register_session, stat, open_file, reset_connection_cache) to connect and interact with Windows SMB shared directories. The plugin uses smbprotocol.exceptions (SMBException, SMBResponseException) only for exception handling when SMB operations fail.

    Register session (establish connection + auth)
    from ..lib import smbclient

    smbclient.register_session(
    server,
    username=username,
    password=password,
    port=port,
    )
    Build UNC and verify connection
    unc_path = self._build_unc_path(
    server,
    directory_path,
    file_path,
    )
    smbclient.stat(unc_path)
    Verify file exist
    # Check if file exists
    stat_result = smbclient.stat(unc_path)

    # Check it's not a directory
    if stat.S_ISDIR(stat_result.st_mode):
    Download a CSV file via SMB
    with smbclient.open_file(unc_path, mode="rb") as remote_file:
    with open(csv_file_path, "wb") as file_object:
    if record_count:
    # Partial file retrieval (for sample data)
    # +1 to include header row
    lines_to_read = record_count + 1
    for _ in range(lines_to_read):
    line = remote_file.readline()
    if not line:
    break
    file_object.write(line)
    else:
    # Full file retrieval
    shutil.copyfileobj(remote_file, file_object)
    Clean up sessions
    smbclient.reset_connection_cache(fail_on_error=False)
    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:

    DescriptionSpecification
    Stack detailsSize: Large
    RAM: 32 GB
    CPU: 16 Cores
    CSV data fetched from SMB File Share Without Sanitization~7K rows/sec

    Note

    For CE instance disk space, refer to this documentation.

    Workflow

    1. Get your server credentials and file paths.
    2. Configure the SMB File Share EDM Plugin.
    3. Configure sharing between SMB File Share EDM Plugin and Tenant.
    4. Validate the SMB File Share EDM Plugin.

    Watch a Video

    Click play to watch a video.





     

    Get a Shared Directory from the SMB Server

    SMB Server hosted in Windows

    1. Run PowerShell as Administrator.
    2. Run command in the PowerShell: Get-SmbShare

      Example Output:

      Name	ScopeName	    Path
      —-- --------- ----
      ADMIN$ * C:\Windows
      C$ * C:\
      MyShare * C:\SMBShare

      What It Means:

      • Name → Share name
      • Path → Actual folder location
      • Shares ending with $ (like C$, ADMIN$) are hidden administrative shares.

    SMB Server hosted in Linux

    1. Samba shares are defined inside /etc/samba/smb.conf.
    2. In Linux terminal, run:
      testparm -s
    3. Look for sections like:
      [shared]
      path = /srv/samba/shared
    4. Every section below [global] is a shared folder.
      [Documents]
      path = /home/devuser/docs

      What it means:

      • Share name → Documents
      • Actual folder → /home/devuser/docs

    SMB Server hosted in Isilon

    1. Log in to OneFS.
    2. Go to Protocols and select SMB.
    3. Open the Shares Section.
    4. You will see a list of configured SMB shares.
    5. Look at the Path column. This shows the actual filesystem directory (usually under /ifs) that is shared via SMB.

      Example table:

      Share Name		Path
      test-share /ifs/data/test
      Finance /ifs/data/finance
    6. The Path value (/ifs/...) is the directory being shared.

    Setup for kerberos when using domain name/FQDN instead of an IP address

    1. Install Kerberos Utilities Inside Core Container.
    2. Access the core container:
      docker exec -it -u0 <core-container> bash
    3. Install Kerberos packages.
      Ubuntu/Debian:
      apt update && apt install -y krb5-user smbclient 
    4. RHEL/CentOS:
      yum install -y krb5-workstation samba-client
    5. Configure Kerberos: (krb5.conf).
    6. Create or update: /etc/krb5.conf
    7. Add realm configuration:
      [realms]
         EXAMPLE.COM = {
             kdc = dc01.example.com
             admin_server = dc01.example.com
         }
      
      [domain_realm]
         .example.com = EXAMPLE.COM
         example.com = EXAMPLE.COM

      Note

      • Realm must usually be uppercase.
      • KDC should point to the domain controller.
      • DNS resolution must work correctly inside the container.
      • Replace these values:
        PlaceholderReplace With
        EXAMPLE.COMYour AD/Kerberos realm
        dc01.example.comYour Domain Controller / KDC hostname
        example.comYour domain
    8. Update the docker-compose.yml.
    9. Edit docker-compose.yml and add extra_hosts in core service:
      services:
      
       core:
      
         extra_hosts:
      
           - "<domain/FQDN>:<IP>"
    10. Restart Cloud Exchange, and configure the plugin with domain/FQDN of your SMB Server.
      sudo ./stop && sudo ./start

    Configure the SMB File Share EDM Plugin

    1. Log in to Cloud Exchange and go to Settings > Plugin Store.
    2. Search for and select the SMB File Share EDM v1.0.0 plugin box.
    3. Enter the Basic Information:
      • Configuration Name: Enter a name appropriate for your integration.
      • Sync Interval: Adjust Sync Interval as per your requirement. (Default: 12 hours).

      Note

      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.

    4. Click Next and enter the Configuration Parameters:
      • SMB Server Hostname/IP: Hostname or IP address of the SMB server from which the CSV file should be pulled.
      • Port: TCP port for SMB connection (default 445).
      • Username: Username with read access to the shared directory.
      • Password: Password for the provided username.
      • Share Directory Name: The SMB share name. E.g. If the full UNC path is ‘\server\share\path\file.csv’, enter ‘share’. For getting this, follow steps provided in Get Shared Directory from the SMB Server.
      • CSV File Path: Provide a CSV file name or path of the CSV file relative to Share Directory Name. E.g. If the full UNC path is ‘\server\share\path\file.csv’, enter ‘path\file.csv’. Use backslashes (\) only. Note: Only .csv/.txt files with max 25 columns are supported. For getting this, follow steps provided in Get Shared Directory from the SMB 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.

      Note

      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.

    5. Click Next and enter the Hash Generation and Sanitization Parameters.

      Select the appropriate options for sanitization and hash generation operations:

      • 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 enabled).
        • Non-alphanumeric characters: Remove all special characters to validate the cell.
      • Hash Generation is divided into two parts:
        • 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)
      • 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

        • User Normalization parameter to normalize the fetched results. For example, a number such as 123-45-6789 or 123 45 6789 will be treated as 123456789. Number normalizations ignore characters, such as dots, dashes and spaces. A string normalization ignores the case sensitivity of the letters.
        • Use the Create Dictionary option only when necessary, as this operation is resource-intensive and may impact system performance. Choose this option thoughtfully for optimal efficiency.
    6. Click Next. Preview the sanitization sample output by clicking Preview Good File or Preview Bad File.

      Note

      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)

        Note

        All the data will be under consideration for hash generation if this option is Unchecked; otherwise, only the Good File content will be part of the hash generation.

    7. Click Save. You will be redirected to Exact Data Match > Plugins page where you can see your configured plugin.

    Configure an EDM Sharing Configuration for SMB File Share

    A sharing configuration is used to share the generated EDM hashes with the destination platform. To share EDM hashes with your Netskope Tenant, create a sharing configuration using these steps:

    1. Go to Exact Data Match > Sharing and click Add Sharing Configuration.
    2. Configure the sharing parameters:
      • Source Configuration: Select the configured SMB File Share EDM plugin.
      • Destination Configuration: Select a destination where EDM Hash will be shared.
      • Target: The value is automatically set according to the selected Destination Configuration.
    3. Click Save.

    Validate the SMB File Share EDM Plugin

    Note

    Cloud Exchange only stores sensitive pulled data CSV files temporarily until the hash generation and upload process is completed. After that, the stored files are automatically removed.

    Validate in Cloud Exchange

    To validate the pulling of the configured plugin in Cloud Exchange, go to Settings > Logging and search for the SMB File Share EDM plugin logs.

    You can verify the plugin operation from the logs available at Logging in Cloud Exchange:

    The status values are as follows:

    • 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: Indicates that hashes are uploaded to the destination configuration.
    • 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 on the Netskope Tenant

    To ensure the push of EDM hashes on the Netskope Tenant from the cloud exchange:

    1. In the Netskope Tenant, go to Policies > DLP.
    2. Click Edit Rules and select Data Loss Prevention.
    3. On the Exact Match tab, a list of files is shown.

    Troubleshooting the SMB File Share EDM Plugin

    Unable to configure the SMB File Share EDM Plugin

    If you are unable to configure the SMB File Share EDM plugin, it could be due to one of the following reasons:

    • The user doesn’t have permission to read the CSV file.
    • Incorrect hostname/server IP address.
    • The port is disabled or blocked on the server.
    • Network connectivity issues between Cloud Exchange and server.
    • The configured SMB server is of version lower than SMB 2.0.2.

    What to do:

    1. Verify credentials are correct.
    2. Check file permissions on the server.
    3. Ensure the SSH service is running.
    4. Verify network connectivity.
    5. Verify the SMB version configured in the instance, and if it is lower than SMB 2.0.2, upgrade it to version between SMB 2.0.2 to SMB 3.1.1.

    CSV file not found or access denied

    If you receive errors about file not found or access denied:

    What to do:

    1. Verify the CSV file path is correct and the file exists.
    2. Ensure the user has read permissions for the file.
    3. Check if the file is not locked by another process.

    Hash generation fails or takes too long

    If hash generation fails or performance is poor:

    What to do:

    1. Check available disk space on Cloud Exchange (ensure at least 2x CSV file size).
    2. Reduce CSV file size or split into smaller files.
    3. Disable sanitization if not required to improve performance.
    4. Monitor system resources during processing.

    Known Behaviors

    • Sanitization can reduce processing speed by approximately 65% but improves data quality.
    • Dictionary creation is resource-intensive and should only be used when necessary.
    • The plugin creates temporary files during processing that are automatically cleaned up.
    • SSH connection timeouts may occur with very large files; consider increasing timeout values.
    • Memory usage scales with CSV file size; monitor system resources during large file processing.

    Limitations

    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.

    In this Topic
    • SMB File Share Plugin for Exact Data Match