Esempio di Classificazione dei Dati
Introduzione
Nell’attuale contesto digitale, i dati sono il cuore pulsante delle organizzazioni. Dai record dei clienti alle transazioni finanziarie, le aziende si affidano a una grande quantità 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 una gestione e una protezione speciali. È qui che entra in gioco la classificazione dei dati.
La classificazione dei dati è il processo di categorizzazione dei dati in base alla loro sensibilità, criticità e valore per l’organizzazione. Classificando i dati, le aziende possono assicurarsi che le misure di sicurezza appropriate siano in atto per proteggere le informazioni sensibili dall’accesso non autorizzato, dall’uso improprio o dalle violazioni. In questo articolo, esploreremo i fondamenti della classificazione dei dati e analizzeremo esempi di come può essere implementata utilizzando Python ed 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 al livello di sensibilità. L’obiettivo principale della classificazione dei dati è identificare e prioritizzare i dati che richiedono controlli di sicurezza migliorati e protezione.
Esistono due approcci principali alla classificazione dei dati:
Classificazione per Schema
Questo approccio prevede l’analisi dei metadati del database per nomi di colonne, tabelle, viste e funzioni. Ad esempio, se una colonna è chiamata ‘last_name’, viene classificata come dato sensibile.
Classificazione per Dati
In questo approccio, viene analizzato il contenuto effettivo dei dati per determinarne la sensibilità e la classificazione. Questo metodo richiede un esame più granulare dei dati stessi, spesso utilizzando tecniche come il pattern matching o le espressioni regolari per identificare le informazioni sensibili.
Questi due approcci possono essere combinati secondo necessità. Inoltre, DataSunrise li combina quando l’utente crea attributi per il Tipo di Informazione utilizzato nella funzione di Scoperta dei Dati Sensibili. Successivamente, esploreremo come l’uso delle espressioni regolari comporti un numero significativo di verifiche per ciascuna espressione. Pertanto, il controllo centralizzato di tutti i meccanismi di classificazione dei dati è estremamente importante. Questa funzionalità è disponibile di serie in DataSunrise, così come altre potenti funzionalità come la scoperta di dati basata su OCR.
Classificare i Dati con Python ed Espressioni Regolari
Uno strumento potente per la classificazione dei dati sono le espressioni regolari. Le espressioni regolari, o regex, sono una sequenza di caratteri che definiscono un modello di ricerca. Consentono di abbinare ed estrarre modelli specifici all’interno dei dati di testo.
Consideriamo un esempio in cui abbiamo una tabella di database virtuale contenente vari tipi di informazioni, tra cui e-mail, numeri di carte di credito e numeri di previdenza sociale (SSN). Il nostro obiettivo è classificare questi dati e identificare le informazioni sensibili.
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}")
In questo esempio, abbiamo un elenco di elenchi che rappresentano 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 e-mail, numeri di Mastercard e SSN. Queste espressioni regolari catturano i modelli specifici associati a ciascun tipo di dati sensibili.
Un literal stringa grezza r’…’ in Python tratta le backslash (\) come caratteri letterali. Questo è particolarmente utile nelle espressioni regolari perché le backslash sono comunemente usate come caratteri di escape. Utilizzando literal stringa grezze, non è necessario effettuare il doppio escape delle backslash (una volta per Python e una volta per il motore delle espressioni regolari).
Usando un loop annidato, iteriamo su ogni riga e cella nei dati. Per ciascuna cella, utilizziamo 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, verrà prodotto il seguente output:
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
È importante notare che creare espressioni regolari complete per tutte le possibili varianti di dati sensibili può essere una sfida. Diversi formati di dati, casi limite e modelli in evoluzione possono rendere difficile catturare ogni istanza con precisione. Per questo motivo, è una buona idea utilizzare espressioni regolari semplici come punto di partenza e raffinarle continuamente in base ai requisiti specifici e ai dati incontrati in scenari reali.
Ulteriori Modelli di Dati Sensibili
Ecco alcune altre espressioni regolari per classificare i dati sensibili:
Numero di Telefono (formato US, con +1 e senza):
^\\(?([0-9]{3})\\)?[-.\\s]?([0-9]{3})[-.\\s]?([0-9]{4})$
oppure
^(\([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, esistono un numero vasto di espressioni regolari che aiutano a classificare i numeri di telefono in diversi formati e attraverso diversi paesi. Questa complessità complica il processo di classificazione, poiché è necessario includere tutte queste espressioni regolari per classificare con precisione 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, garantendo che ogni ottetto sia nell’intervallo valido (0-255).
Numero di Passaporto (formato US):
^(?!^0+$)[a-zA-Z0-9]{3,20}$
Questa espressione regolare corrisponde ai numeri di passaporto degli 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 conti bancari internazionali (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 Previdenza Sociale (SSN) con trattini:
^(?!666|000|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0{4})\\d{4}$
Questa espressione regolare corrisponde ai SSN nel formato XXX-XX-XXXX, escludendo alcuni modelli non validi come 000 nel numero d’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, consentendo una combinazione di caratteri alfanumerici, punti, trattini bassi e trattini nella parte locale e nel nome di dominio. Questa è una variante breve. È possibile trovare facilmente la discussione su Stackoverflow che suggerisce varianti più avanzate.
Ricorda, queste espressioni regolari sono esempi e potrebbero dover essere adattate in base ai 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 settore. Consultare sempre i quadri e le linee guida di sicurezza e conformità pertinenti per garantire una gestione e protezione adeguata 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 dall’accesso non autorizzato e dalle violazioni.
Python e le espressioni regolari forniscono strumenti potenti per classificare i dati in base al loro contenuto. Definendo espressioni regolari che corrispondono a modelli specifici, possiamo identificare e contrassegnare i dati sensibili all’interno di dataset strutturati o non strutturati.
Tuttavia, è importante riconoscere le sfide associate alla creazione di espressioni regolari complete per tutte le possibili varianti 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.
Da 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 proteggere i propri dati sensibili e di soddisfare efficacemente i requisiti normativi. La incoraggiamo a pianificare una demo online per esplorare come DataSunrise può aiutarLa a classificare e proteggere i Suoi beni critici dei dati.