Exemples de classification de données

Introduction
Dans le paysage numérique d’aujourd’hui, les données sont le pilier des organisations. Des dossiers clients aux transactions financières, les entreprises s’appuient sur d’énormes quantités d’informations pour prendre des décisions éclairées et stimuler leur croissance. Cependant, toutes les données ne se valent pas. Certaines données sont plus sensibles que d’autres et nécessitent une gestion et une protection particulières. C’est là qu’intervient la classification des données.
La classification des données est le processus qui consiste à organiser les données en fonction de leur sensibilité, de leur criticité et de leur valeur pour l’organisation. En classifiant les données, les entreprises peuvent garantir que des mesures de sécurité appropriées sont en place pour protéger les informations sensibles contre tout accès non autorisé, toute mauvaise utilisation ou toute violation. Dans cet article, nous explorerons les bases de la classification des données et examinerons des exemples d’implémentation en utilisant Python et des expressions régulières.
Comprendre la classification des données
La classification des données consiste à organiser les données en catégories ou classes prédéfinies en fonction de leurs caractéristiques et de leur niveau de sensibilité. L’objectif principal de la classification des données est d’identifier et de prioriser les données qui nécessitent des contrôles de sécurité renforcés et une protection accrue.
Il existe deux principales approches pour la classification des données :
Classification par schéma
Cette approche consiste à analyser les métadonnées de la base de données, telles que les noms des colonnes, des tables, des vues et des fonctions. Par exemple, si une colonne porte le nom « last_name », elle est classée comme des données sensibles.
Classification par données
Dans cette approche, le contenu réel des données est analysé pour déterminer leur sensibilité et leur classification. Cette méthode nécessite un examen plus détaillé des données elles-mêmes, en utilisant souvent des techniques telles que la correspondance de motifs ou des expressions régulières pour identifier les informations sensibles.
Ces deux approches peuvent être combinées selon les besoins. De plus, DataSunrise les combine lorsqu’un utilisateur crée des attributs pour le type d’information utilisé dans la fonctionnalité de découverte des données sensibles. Par la suite, nous examinerons comment l’utilisation d’expressions régulières entraîne un nombre important de vérifications pour chaque expression. Par conséquent, le contrôle centralisé de tous les mécanismes de classification des données est d’une importance capitale. Cette fonctionnalité est disponible dès l’installation de DataSunrise, tout comme d’autres fonctionnalités puissantes telles que la découverte de données basée sur l’OCR.
Classification des données avec Python et des expressions régulières
Un outil puissant pour classifier les données est l’expression régulière. Les expressions régulières, ou regex, sont une séquence de caractères qui définissent un motif de recherche. Elles vous permettent de repérer et d’extraire des motifs spécifiques au sein de données textuelles.
Prenons l’exemple d’une table de base de données virtuelle contenant divers types d’informations, notamment des adresses e-mail, des numéros de carte de crédit et des numéros de sécurité sociale (SSN). Notre objectif est de classifier ces données et d’identifier les informations sensibles.
import re
# Sample data
data = [
['John Doe', '[email protected]', '5555-5555-5555-4444', '123-45-6789'],
['Jane Smith', '[email protected]', '4111-1111-1111-1111', '987-65-4321'],
['Bob Johnson', '[email protected]', '1234-5678-9012-3456', '456-78-9012']
]
# Regular expressions for sensitive data
email_regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
mastercard_regex = r'\b(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}\b'
ssn_regex = r'\b(?!000|666)[0-8][0-9]{2}-(?!00)[0-9]{2}-(?!0000)[0-9]{4}\b'
# Classify the data
for row in data:
for cell in row:
if re.match(email_regex, cell):
print(f"Email found: {cell}")
elif re.match(mastercard_regex, cell):
print(f"Mastercard number found: {cell}")
elif re.match(ssn_regex, cell):
print(f"SSN found: {cell}")Dans cet exemple, nous avons une liste de listes représentant une table de base de données. Chaque liste intérieure représente une ligne, et chaque élément de la ligne représente une valeur de colonne.
Nous définissons des expressions régulières pour identifier les adresses e-mail, les numéros Mastercard et les numéros de sécurité sociale. Ces expressions régulières capturent les motifs spécifiques associés à chaque type de données sensibles.
Une chaîne brute littérale r’…’ en Python considère les barres obliques inverses (\) comme des caractères littéraux. Cela est particulièrement utile dans les expressions régulières car les barres obliques inverses sont fréquemment utilisées comme caractères d’échappement. En utilisant des chaînes brutes, vous n’avez pas besoin d’échapper les barres obliques inverses deux fois (une fois pour Python et une fois pour le moteur d’expressions régulières).
En utilisant une boucle imbriquée, nous itérons sur chaque ligne et chaque cellule des données. Pour chaque cellule, nous utilisons la fonction re.match() pour vérifier si la valeur de la cellule correspond à l’une des expressions régulières définies. Si une correspondance est trouvée, nous affichons le type de données sensibles correspondant ainsi que la valeur correspondante.
L’exécution de ce code affichera :
Email found: [email protected] Mastercard number found: 5555-5555-5555-4444 SSN found: 123-45-6789 Email found: [email protected] Mastercard number found: 4111-1111-1111-1111 SSN found: 987-65-4321 Email found: [email protected] SSN found: 456-78-9012
Il est important de noter que créer des expressions régulières complètes pour toutes les variations possibles de données sensibles peut s’avérer difficile. Différents formats de données, cas particuliers et motifs évolutifs peuvent rendre complexe la capture précise de chaque instance. C’est pourquoi il est judicieux d’utiliser des expressions régulières simples comme point de départ et de les affiner continuellement en fonction des exigences spécifiques et des données rencontrées dans des scénarios réels.
Autres motifs de données sensibles
Voici quelques expressions régulières supplémentaires pour classifier les données sensibles :
Numéro de téléphone (format américain, avec +1 et sans) :
^\(?([0-9]{3})\)?[-.\s]?([0-9]{3})[-.\s]?([0-9]{4})$ou
^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$Ces expressions régulières correspondent aux numéros de téléphone dans divers formats. Comme vous pouvez le constater à partir du lien ci-dessus, il existe un grand nombre d’expressions régulières qui permettent de classifier les numéros de téléphone dans différents formats et à travers différents pays. Cette complexité complique le processus de classification, car il faut inclure toutes ces expressions régulières pour classifier avec précision l’ensemble des données.
Adresse IP (IPv4) :
^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)(\.(?!$)|$)){4}$Cette expression régulière correspond aux adresses IPv4, en s’assurant que chaque octet se situe dans la plage valide (0-255).
Numéro de passeport (format américain) :
^(?!^0+$)[a-zA-Z0-9]{3,20}$Cette expression régulière correspond aux numéros de passeport américains.
Numéro de compte bancaire (format IBAN) :
^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$Cette expression régulière correspond aux numéros de compte bancaire internationaux (IBAN) dans le format standard. Vous pouvez trouver une liste des différents formats (expressions régulières) dans Apache Validator.
Numéro de carte de crédit (American Express) :
^3[47][0-9]{13}$Cette expression régulière correspond aux numéros de cartes de crédit American Express, qui commencent par 34 ou 37 et comportent un total de 15 chiffres.
Numéro de sécurité sociale (SSN) avec des tirets :
^(?!666|000|9\d{2})\d{3}-(?!00)\d{2}-(?!0{4})\d{4}$Cette expression régulière correspond aux numéros de sécurité sociale au format XXX-XX-XXXX, en excluant certains motifs invalides tels que 000 dans le préfixe ou 0000 dans le numéro de série.
Adresse e-mail :
^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$Cette expression régulière correspond aux adresses e-mail, autorisant une combinaison de caractères alphanumériques, de points, de tirets bas et de tirets dans la partie locale et le nom de domaine. Il s’agit d’une variante abrégée. Vous pouvez facilement trouver des discussions sur StackOverflow suggérant des variantes plus avancées.
N’oubliez pas que ces expressions régulières sont des exemples et peuvent nécessiter des adaptations en fonction de vos exigences spécifiques et des formats de données rencontrés. De plus, les expressions régulières à elles seules ne suffisent pas à assurer une protection complète des données. Vous devez les utiliser en complément d’autres mesures de sécurité, telles que le chiffrement des données, les contrôles d’accès et des pratiques de stockage sécurisé.
Lorsqu’il s’agit de données sensibles, il est crucial de prendre en compte les exigences spécifiques et les réglementations applicables à votre domaine. Consultez toujours les cadres et directives pertinents en matière de sécurité et de conformité pour garantir une gestion et une protection adéquates des informations sensibles.
Classification avancée et gestion des faux positifs
Dans les environnements réels, se fier uniquement à des expressions régulières statiques ne suffit pas. Les données sensibles peuvent apparaître dans des formats inattendus ou être dissimulées dans des textes libres, des PDF ou des images. C’est pourquoi une stratégie de classification en plusieurs couches est essentielle.
Au-delà des regex : combiner les méthodes de classification
- Détection basée sur les métadonnées — Analyser les noms des tables et des colonnes (par exemple,
ssn,email_address). - Détection basée sur le contenu — Utiliser des modèles regex pour repérer les valeurs contenues dans les données.
- Numérisation basée sur l’OCR — Identifier le texte dans des documents scannés et des images.
- Analyse basée sur un proxy — Détecter les champs sensibles dans les requêtes SQL en temps réel.
DataSunrise combine ces couches de classification dans un moteur de découverte unifié. Vous définissez les types d’information une seule fois et les réutilisez dans les règles d’audit, de masquage et les politiques de sécurité.
Gestion centralisée des regex dans DataSunrise
Toutes les expressions de classification peuvent être gérées de manière centralisée grâce à l’éditeur de types d’information intégré. Par exemple, une regex pour les numéros de cartes de crédit peut être stockée sous le type CreditCard et référencée dans les règles d’audit et de masquage :
Motif : ^4[0-9]{12}(?:[0-9]{3})?$
Libellé : VISA
Utilisé dans : Règles d'audit, Masquage dynamique, Rapports de découverte
Cette approche évite la duplication, réduit les erreurs et garantit une détection cohérente dans tous les modules de DataSunrise.
Réduire les faux positifs grâce au contexte de validation
DataSunrise peut valider les valeurs détectées en tenant compte du contexte (nom de la colonne, longueur, répartition des caractères) et prend en charge des règles d’exclusion pour réduire les faux positifs. Par exemple, un nombre tel que 123-45-6789 pourrait correspondre au format SSN, mais si la colonne est invoice_id, la correspondance est ignorée.
Étiquettes de classification réglementaire
Vous pouvez également étiqueter les champs classifiés avec des domaines de conformité tels que :
Ces étiquettes permettent des contrôles d’accès basés sur des règles et une génération de rapports alignée sur les cadres réglementaires.
Vous souhaitez voir la classification et le masquage centralisés en action ? Demandez une démo et laissez notre équipe vous présenter des scénarios concrets adaptés à votre environnement de données.
Conclusion
La classification des données est un aspect crucial de la sécurité et de la conformité des données. En classant les données en fonction de leur sensibilité et en appliquant des contrôles de sécurité appropriés, les organisations peuvent protéger les informations sensibles contre les accès non autorisés et les violations.
Python et les expressions régulières offrent des outils puissants pour classifier les données en se basant sur leur contenu. En définissant des expressions régulières qui correspondent à des motifs spécifiques, nous pouvons identifier et signaler les données sensibles dans des ensembles de données structurés ou non structurés.
Cependant, il est important de reconnaître les défis liés à la création d’expressions régulières complètes pour toutes les variations de données possibles. Les expressions régulières doivent être utilisées en complément d’autres mesures de sécurité, telles que le chiffrement, les contrôles d’accès et la surveillance, afin d’assurer une protection robuste des données.
Chez DataSunrise, nous proposons des outils exceptionnels et flexibles pour la découverte des données sensibles, la sécurité, les règles d’audit, le masquage et la conformité. Nos solutions permettent aux organisations de protéger efficacement leurs données sensibles et de répondre aux exigences réglementaires. Nous vous invitons à planifier une démo en ligne pour découvrir comment DataSunrise peut vous aider à classifier et protéger vos actifs de données critiques.
