Notes de mise à jour
1.1.0
Added
- Added support for removing quotes from the pulled data.
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 MySQL EDM plugin v1.1.0 with the Exact Data Match module of the Netskope Cloud Exchange platform. Use this plugin to pull database records from a MySQL Database and generate Exact Data Match (EDM) hashes according to the defined plugin configurations.
Conditions préalables
Pour compléter la configuration, vous devez
- 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.
- Utilisateur de la base de données MySQL Server avec accès en lecture seule (Select) pour récupérer les données.
Support du plugin MySQL EDM
Ce plugin récupère les enregistrements d'une base de données MySQL via une requête SQL et génère des hachages Exact Data Match (EDM) selon les configurations définies par le plugin. Le plugin prend en charge des fonctions avancées d'assainissement, de normalisation et de génération de hachage des données afin de garantir la qualité des données et la conformité aux normes de sécurité.
| Fonction | Support |
|---|---|
| Pull | Oui |
| Push | Non |
Permissions de la base de données MySQL
| Type d'autorisation | Requirement |
|---|---|
| Accès en lecture de l'utilisateur à la base de données mentionnée | Required |
| Permissions de lecture de la base de données MySQL | Required |
| Accès au port de la base de données | Required |
Autorisations requises
- L'utilisateur de la base de données doit avoir les droits de lecture pour la base de données spécifiée.
- Connectivité réseau au serveur MySQL sur le port configuré (par défaut : 3306).
- Espace disque suffisant sur Cloud Exchange pour le traitement des fichiers temporaires.
Détails de l'API
Liste des bibliothèques utilisées pour récupérer les enregistrements de la base de données
Ce plugin utilise les bibliothèques Python et le pilote MySQL pour établir des connexions sécurisées avec la base de données MySQL et transférer les données des tables en exécutant des requêtes SQL.
Library: sqlalchemy et mysql-connector-python
Usage: SQLAlchemy est la boîte à outils SQL de Python qui fournit une suite complète de modèles de persistance bien connus au niveau de l'entreprise, conçus pour un accès efficace et performant aux bases de données, adaptés dans un langage de domaine simple et Python pour exécuter des requêtes SQL. MySQL Connector/Python permet aux programmes Python d'accéder aux bases de données MySQL.
Créer une connexion client
from sqlalchemy import create_engine
eng = create_engine(
connection_string, connect_args={"connect_timeout": CONNECTION_TIMEOUT}
) # creates connection with database.
Execute SQL query with Read-Only Session
with eng.connect() as connection:
# used to stop user from executing any database modification query.
result = connection.execute(text("START TRANSACTION READ ONLY;"))
query = text(config["query"])
result = connection.execute(query)
Générer un fichier CSV à partir des enregistrements récupérés par lots
# csv_path will be new csv file
# Fetch 100,000 rows per batch
while True:
rows = result.fetchmany(BATCH_SIZE)
if not rows:
break # No more rows to fetch
#store rows into csv file
self.store_data_to_csv(rows, csv_path)
Matrice de performance
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%) from Database table 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 |
| Database table data fetched from MySQL without sanitization | ~6K rows/sec |
Workflow
- Configurer le serveur MySQL.
- Configurez le plugin MySQL EDM.
- Configurez le partage entre le plugin MySQL EDM et le locataire.
- Validate the MySQL plugin.
Regardez une vidéo
Cliquer sur « play » pour regarder une vidéo.
Configurer le serveur MySQL
For a MySQL database, you must create a MySQL user account with read-only permissions granted to the specific database and tables from which the data will be pulled.
Suivez les étapes ci-dessous pour créer l'utilisateur sur la base de données MySQL :
-
Activez le serveur MySQL pour la connexion à distance.
-
Exposez le port sur lequel le serveur MySQL est hébergé pour vous assurer que le serveur MySQL est accessible sur les machines distantes.
-
Créez un utilisateur en lecture seule sur le serveur MySQL en suivant les étapes ci-dessous :
-
Login to MySQL server as an Administrator:
mysql -u <root> -p- Entrez le mot de passe <root> utilisateur
-
Create a new User:
CREATE USER '<new_username>'@'%' IDENTIFIED BY '<secret>'; -
Grant Read Only Permissions for particular databases:
GRANT SELECT ON <database_name>.* TO '<new_username>'@'%';-
La commande ci-dessus accorde à l'utilisateur un accès en lecture seule à la base de données à partir de l'hôte local uniquement. Si vous connaissez le nom d'hôte ou l'adresse IP de l'hôte sur lequel le collecteur sera installé, tapez la commande suivante :
GRANT SELECT ON <database_name>.* TO '<new_username>'@'<host_name> or <ip_address>';
-
-
-
Enregistrer les modifications
FLUSH PRIVILEGES; SHOW GRANTS FOR '<new_username>'@'<host_name> or <ip_address>'
Note
- Replace <root> with Administrator user.
- Replace <new_username> with new username to create.
- Replace <database_name> with a database to grant read-only access.
- Replace <host_name> or <ip_address> with the hostname or IP address of the host on which collector will be installed.
Configurer le plugin MySQL EDM
-
Dans Cloud Exchange, accédez à Settings > Plugin Store.
-
Recherchez et sélectionnez le plugin MySQL v1.1.0 (EDM).

-
Saisissez les informations de base :
-
Configuration Name: Enter a name appropriate for your plugin.
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)

-
-
Click Next and enter the Configuration Parameters:
-
Server IP/Hostname: Provide IP or hostname of My SQL Server.
-
Username: Provide MySQL database username to access the database and its table.
-
Password: Provide password associated with the username.
-
Database Name: Provide a database name from which you want to retrieve data.
-
Port: Provide TCP port on which your MySQL database is running.(Default Port: 3306)
-
Query: Provide a read-only query to fetch data from database.(Read-only means ‘Select’ Query)
-
Remove Quotes: Enable this if your data file 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. Helpful for CSVs exported from databases.
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.

Configure an EDM Sharing Configuration for MySQL
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:
-
Allez à Exact Data Match > Sharing et cliquez sur Add Sharing Configuration.

-
Configurez les paramètres de partage :
- Source Configuration: Select the configured MySQL 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 MySQL EDM Plugin
Valider le retrait
To validate the pulling of the configured plugin in Cloud Exchange, go to Settings > Logging and search for the MySQL 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:

Validez l'envoi à votre locataire Netskope
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.

Troubleshooting the MySQL Plugin
Impossible de configurer le plugin MySQL
If you are unable to configure the MySQL EDM plugin, it could be due to one of the following reasons:
- Les informations d'identification fournies sont incorrectes.
- The user doesn’t have required permissions.
- Nom d'hôte/adresse IP du serveur incorrects.
- Nom de base de données incorrect.
What to do:
- Veillez à fournir les informations d'identification correctes.
- Assurez-vous que l'utilisateur dispose des autorisations nécessaires pour la base de données et la table.
- Assurez-vous que le nom d'hôte et l'adresse IP du serveur sont corrects.
- Assurez-vous que le nom de la base de données est correct.
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 SSH dispose des droits de lecture pour le fichier.
- Vérifiez que le fichier n'est pas verrouillé par un autre processus.
La génération de hachage échoue ou prend trop de temps
Si la génération de hachage échoue ou si les performances sont médiocres :
What to do:
- Vérifiez l'espace disque disponible sur Cloud Exchange (assurez-vous d'avoir au moins 2x la taille du fichier CSV).
- 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.
Comportements connus
- 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.
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.

