
Classificazione dei Dati

Introduzione
Nell’attuale panorama digitale, i dati sono il fattore lifeblood delle organizzazioni. Dai record dei clienti alle transazioni finanziarie, le aziende si affidano a vasti volumi di informazioni per prendere decisioni informate e guidare la crescita. Tuttavia, non tutti i dati sono uguali. Alcuni dati sono più sensibili di altri e richiedono un trattamento e una protezione specifici. Qui entra in gioco la classificazione dei dati.
La classificazione dei dati è il processo di categorizzare i dati in base alla loro sensibilità, criticità e valore per l’organizzazione. Classificando i dati, le aziende possono garantire che misure di sicurezza appropriate siano in atto per proteggere le informazioni sensibili da accessi non autorizzati, usi impropri o violazioni. In questo articolo, esploreremo i fondamenti della classificazione dei dati e vedremo esempi di come può essere implementata utilizzando Python e espressioni regolari.
Comprendere la Classificazione dei Dati
La classificazione dei dati comporta l’organizzazione dei dati in categorie o classi predefinite in base alle loro caratteristiche e livello di sensibilità. L’obiettivo principale della classificazione dei dati è identificare e dare priorità ai dati che richiedono controlli di sicurezza avanzati e protezione.
Esistono due approcci principali alla classificazione dei dati:
Classificazione per Schema
Questo approccio implica l’analisi dei metadati del database per i nomi delle colonne, tabelle, viste e funzioni. Ad esempio, se una colonna è denominata ‘cognome’, viene classificata come dato sensibile.
Classificazione per Dato
In questo approccio, il contenuto effettivo dei dati viene analizzato per determinare la sua sensibilità e classificazione. Questo metodo richiede un esame più granulare dei dati stessi, spesso utilizzando tecniche come l’abbinamento di modelli o le espressioni regolari per identificare le informazioni sensibili.
Questi due approcci possono essere combinati a piacere. Inoltre, DataSunrise li combina quando l’utente crea attributi per il tipo di informazione utilizzato nella funzionalità di Scoperta dei Dati Sensibili. Successivamente, esploreremo come l’uso delle espressioni regolari risultati in un numero significativo di controlli per ciascuna espressione. Pertanto, il controllo centralizzato di tutti i meccanismi di classificazione dei dati è estremamente importante. Questa funzionalità è disponibile di serie in DataSunrise oltre ad altre potenti funzionalità come la scoperta di dati basata su OCR.
Classificazione dei Dati con Python e Espressioni Regolari
Uno strumento potente per classificare i dati sono le espressioni regolari. Le espressioni regolari, o regex, sono una sequenza di caratteri che definisce un modello di ricerca. Esse consentono di abbinare ed estrarre schemi specifici all’interno dei dati di testo.
Consideriamo un esempio in cui abbiamo una tabella di database virtuale contenente vari tipi di informazioni, inclusi email, numeri di carta di credito e numeri di sicurezza sociale (SSN). Il nostro obiettivo è classificare questi dati e identificare le informazioni sensibili.
import re # Dati di esempio 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'] ] # Espressioni regolari per dati sensibili 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' # Classificazione dei dati for row in data: for cell in row: if re.match(email_regex, cell): print(f"Email trovata: {cell}") elif re.match(mastercard_regex, cell): print(f"Numero di Mastercard trovato: {cell}") elif re.match(ssn_regex, cell): print(f"SSN trovato: {cell}")
In questo esempio, abbiamo un elenco di elenchi che rappresenta una tabella di database. Ogni elenco interno rappresenta una riga e ogni elemento all’interno della riga rappresenta un valore di colonna.
Definiamo espressioni regolari per identificare email, numeri di Mastercard e SSN. Queste espressioni regolari catturano i modelli specifici associati a ciascun tipo di dato sensibile.
Una stringa letterale grezza r’…’ in Python tratta le backslashes (\) come caratteri letterali. Questo è particolarmente utile nelle espressioni regolari perché le backslashes sono comunemente usate come caratteri di escape. Utilizzando stringhe letterali grezze, non è necessario eseguire l’escape delle backslashes due volte (una volta per Python e una volta per il motore delle espressioni regolari).
Utilizzando un loop annidato, iteriamo su ciascuna riga e cella nei dati. Per ogni cella, usiamo la funzione re.match() per verificare se il valore della cella corrisponde a una delle espressioni regolari definite. Se viene trovata una corrispondenza, stampiamo il tipo di dato sensibile corrispondente e il valore corrispondente.
Eseguendo questo codice si ottiene:
Email trovata: [email protected] Numero di Mastercard trovato: 5555-5555-5555-4444 SSN trovato: 123-45-6789 Email trovata: [email protected] Numero di Mastercard trovato: 4111-1111-1111-1111 SSN trovato: 987-65-4321 Email trovata: [email protected] SSN trovato: 456-78-9012
È importante notare che creare espressioni regolari esaustive per tutte le possibili variazioni di dati sensibili può essere impegnativo. Diversi formati di dati, casi limite e modelli in evoluzione possono rendere difficile catturare ogni istanza in modo accurato. Per questo motivo, è buona idea utilizzare le espressioni regolari semplici come punto di partenza e perfezionarle continuamente in base ai requisiti specifici e ai dati nelle situazioni reali.
Modelli Aggiuntivi di Dati Sensibili
Ecco alcune altre espressioni regolari per classificare i dati sensibili:
Numero di Telefono (formato USA, con +1 e senza):
^\\(?([0-9]{3})\\)?[-.\\s]?([0-9]{3})[-.\\s]?([0-9]{4})$
o
^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$
Queste espressioni regolari corrispondono ai numeri di telefono in vari formati. Come si può vedere dal link sopra, ci sono un vasto numero di espressioni regolari che aiutano a classificare i numeri di telefono in diversi formati e in diversi paesi. Questa complessità complica il processo di classificazione, poiché è necessario includere tutte queste espressioni regolari per classificare accuratamente tutti i dati.
Indirizzo IP (IPv4):
^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)(\.(?!$)|$)){4}$
Questa espressione regolare corrisponde agli indirizzi IPv4, assicurando che ciascun ottetto sia entro l’intervallo valido (0-255).
Numero di Passaporto (formato USA):
^(?!^0+$)[a-zA-Z0-9]{3,20}$
Questa espressione regolare corrisponde ai numeri di passaporto USA.
Numero di Conto Bancario (formato IBAN):
^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$
Questa espressione regolare corrisponde ai numeri di conto bancario internazionale (IBAN) nel formato standard. È possibile trovare un elenco di diversi formati (espressioni regolari) in Apache Validator.
Numero di Carta di Credito (American Express):
^3[47][0-9]{13}$
Questa espressione regolare corrisponde ai numeri di carta di credito American Express, che iniziano con 34 o 37 e hanno un totale di 15 cifre.
Numero di Sicurezza Sociale (SSN) con trattini:
^(?!666|000|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0{4})\\d{4}$
Questa espressione regolare corrisponde agli SSN nel formato XXX-XX-XXXX, escludendo alcuni modelli non validi come 000 nel numero dell’area o 0000 nel numero seriale.
Indirizzo Email:
^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$
Questa espressione regolare corrisponde agli indirizzi email, permettendo una combinazione di caratteri alfanumerici, punti, underscore e trattini nella parte locale e nel nome di dominio. Questa è una variante breve. È possibile trovare facilmente le discussioni su stackoverflow che suggeriscono varianti più avanzate.
Ricorda, queste espressioni regolari sono esempi e potrebbero necessitare di adattamenti in base ai tuoi requisiti specifici e ai formati di dati che incontri. Inoltre, le espressioni regolari da sole non sono sufficienti per una protezione completa dei dati. Dovresti usarle in combinazione con altre misure di sicurezza, come la crittografia dei dati, i controlli di accesso e le pratiche di archiviazione sicura.
Quando si lavora con dati sensibili, è fondamentale considerare i requisiti specifici e le normative applicabili al proprio dominio. Consulta sempre i framework e le linee guida rilevanti sulla sicurezza e la conformità per garantire l’appropriato trattamento e protezione delle informazioni sensibili.
Conclusione
La classificazione dei dati è un aspetto cruciale della sicurezza dei dati e della conformità. Categorizzando i dati in base alla loro sensibilità e applicando controlli di sicurezza appropriati, le organizzazioni possono proteggere le informazioni sensibili da accessi non autorizzati e violazioni.
Python e le espressioni regolari offrono strumenti potenti per classificare i dati in base al loro contenuto. Definendo espressioni regolari che corrispondono a modelli specifici, possiamo identificare e segnalare i dati sensibili all’interno di insiemi di dati strutturati o non strutturati.
Tuttavia, è importante riconoscere le sfide associate alla creazione di espressioni regolari onnicomprensive per tutte le possibili variazioni di dati. Le espressioni regolari dovrebbero essere utilizzate in combinazione con altre misure di sicurezza, come la crittografia, i controlli di accesso e il monitoraggio, per garantire una protezione robusta dei dati.
In DataSunrise, offriamo strumenti eccezionali e flessibili per la scoperta dei dati sensibili, la sicurezza, le regole di audit, il mascheramento e la conformità. Le nostre soluzioni consentono alle organizzazioni di salvaguardare efficacemente i loro dati sensibili e di soddisfare i requisiti normativi. Ti invitiamo a programmare una demo online per esplorare come DataSunrise può aiutarti a classificare e proteggere i tuoi asset di dati critici.