DataSunrise Consegue la Certificazione AWS DevOps Competency per AWS DevSecOps e Monitoraggio, Logging e Performance

Esempi di Classificazione dei Dati con Espressioni Regolari

Esempi di Classificazione dei Dati con Espressioni Regolari

Esempio di Classificazione dei Dati

Introduzione

Nell’attuale panorama digitale, i dati rappresentano il fulcro delle organizzazioni. Dai record dei clienti alle transazioni finanziarie, le aziende si affidano a una quantità enorme di informazioni per prendere decisioni informate e favorire la crescita. Tuttavia, non tutti i dati sono uguali. Alcuni dati sono più sensibili di altri e richiedono un trattamento 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. Attraverso la classificazione dei dati, le aziende possono garantire che siano in atto misure di sicurezza appropriate per salvaguardare le informazioni sensibili da accessi non autorizzati, uso improprio o violazioni. In questo articolo, esploreremo i fondamenti della classificazione dei dati e approfondiremo esempi su come implementarla utilizzando Python e le 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 dare priorità ai dati che richiedono controlli di sicurezza rafforzati.

Esistono due approcci principali alla classificazione dei dati:

Classificazione per Schema

Questo approccio comporta l’analisi dei metadati del database per quanto riguarda i nomi di colonne, tabelle, viste e funzioni. Ad esempio, se una colonna si chiama ‘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 informazioni sensibili.

Questi due approcci possono essere combinati a piacere. Inoltre, DataSunrise li combina quando l’utente crea attributi per l’Information Type utilizzato nella funzionalità Sensitive Data Discovery. Più avanti, esploreremo come l’utilizzo delle espressioni regolari comporti un numero significativo di controlli per ogni espressione. Pertanto, il controllo centralizzato di tutti i meccanismi di classificazione dei dati è estremamente importante. Questa funzionalità è integrata in DataSunrise insieme ad altre potenti funzionalità come l’OCR-based data discovery.

Classificare i Dati con Python e Espressioni Regolari

Uno strumento potente per classificare i dati è rappresentato dalle espressioni regolari. Le espressioni regolari, o regex, sono una sequenza di caratteri che definiscono un pattern di ricerca. Esse permettono di individuare ed estrarre schemi specifici all’interno dei dati testuali.

Consideriamo un esempio in cui disponiamo di una tabella virtuale del database contenente vari tipi di informazioni, tra cui email, numeri di carta di credito e numeri di previdenza 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'

# Classificare i 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 una lista di liste che rappresentano una tabella del database. Ogni lista interna rappresenta una riga, e ogni elemento all’interno della riga rappresenta il valore di una colonna.

Abbiamo definito espressioni regolari per identificare email, numeri Mastercard e SSN. Queste espressioni regolari catturano i pattern specifici associati a ciascun tipo di dato sensibile.

Una raw string literal, indicata con l’prefisso r’…’, in Python tratta il backslash (\) come carattere letterale. Questo è particolarmente utile nelle espressioni regolari poiché il backslash è comunemente usato come carattere di escape. Utilizzando le raw string literals, non è necessario eseguire il doppio escape per i backslash (una volta per Python e una per il motore delle espressioni regolari).

Utilizzando un ciclo annidato, iteriamo su ogni riga e cella nei dati. Per ogni 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 rilevato.

L’esecuzione di questo codice stamperà:

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 complete per tutte le possibili variazioni di dati sensibili può essere una sfida. Diversi formati di dati, casi limite e pattern 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 affinarle continuamente in base ai requisiti specifici e ai dati reali.

Altri Schemi per Dati Sensibili

Ecco alcune ulteriori 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})$

oppure

^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$

Queste espressioni regolari corrispondono a numeri di telefono in vari formati. Come può essere visto dal link sopra, esistono un gran numero di espressioni regolari che aiutano a classificare i numeri di telefono in diversi formati e in vari 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, assicurando che ogni ottetto rientri nell’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 Internazionali (IBAN) nel formato standard. È possibile trovare un elenco dei 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 contengono 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 agli SSN nel formato XXX-XX-XXXX, escludendo determinati pattern non validi come 000 nell’indicativo di 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 sia nella parte locale che nel nome di dominio. Questa è una versione abbreviata. È possibile trovare facilmente le discussioni su StackOverflow che suggeriscono varianti più avanzate.

Ricordi che queste espressioni regolari sono solo esempi e potrebbero necessitare di adattamenti in base ai requisiti specifici e ai formati di dati incontrati. Inoltre, le espressioni regolari da sole non sono sufficienti per una protezione completa dei dati. È necessario utilizzarle 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. Consulti sempre i relativi framework e linee guida sulla sicurezza e la conformità per garantire il trattamento e la protezione adeguati delle informazioni sensibili.

Classificazione Avanzata e Gestione dei Falsi Positivi

Negli ambienti reali, fare affidamento esclusivamente su espressioni regolari statiche non è sufficiente. I dati sensibili possono apparire in formati inattesi o essere oscurati in testo libero, PDF o immagini. Per questo motivo, una strategia di classificazione a più livelli è cruciale.

Oltre le Regex: Combinare Metodi di Classificazione

  • Rilevamento basato sui metadati — Analizza i nomi delle tabelle e delle colonne (es.: ssn, email_address).
  • Rilevamento basato sul contenuto — Utilizza pattern regex per confrontare i valori all’interno dei dati.
  • Scansione basata su OCR — Identifica testo all’interno di documenti scansionati e immagini.
  • Analisi basata su Proxy — Rileva campi sensibili nelle query SQL in tempo reale.

DataSunrise combina questi livelli di classificazione in un motore di discovery unificato. Lei definisce gli Information Types una volta sola e li riutilizza in audit, mascheramento e politiche di sicurezza.

Gestione Centralizzata delle Regex in DataSunrise

Tutte le espressioni di classificazione possono essere gestite centralmente utilizzando l’editor integrato per gli Information Type. Ad esempio, una regex per i numeri di carta di credito può essere memorizzata sotto il tipo CreditCard e richiamata nelle regole di audit e mascheramento:

Pattern: ^4[0-9]{12}(?:[0-9]{3})?$
Label: VISA
Utilizzato in: Regole Audit, Mascheramento Dinamico dei Dati, Report di Discovery
    

Questo approccio evita duplicazioni, riduce gli errori e garantisce una rilevazione coerente in tutti i moduli di DataSunrise.

Ridurre i Falsi Positivi con il Contesto di Validazione

DataSunrise può convalidare i valori rilevati in base al contesto (nome della colonna, lunghezza, distribuzione dei caratteri) e supporta regole di esclusione per ridurre i falsi positivi. Ad esempio, un numero come 123-45-6789 potrebbe corrispondere al formato di un SSN, ma se la colonna è invoice_id, la corrispondenza viene ignorata.

Tag di Classificazione Normativa

È inoltre possibile etichettare i campi classificati con domini di conformità quali:

Questi tag abilitano controlli di accesso basati su regole e reportistica in linea con i framework normativi.

Desidera vedere in azione la classificazione e il mascheramento centralizzati? Richieda una demo e lasci che il nostro team le illustri scenari reali personalizzati in base al suo panorama dei dati.

Conclusione

La classificazione dei dati è un aspetto fondamentale della sicurezza e della conformità dei dati. Classificando 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 forniscono strumenti potenti per classificare i dati in base al loro contenuto. Definendo espressioni regolari che corrispondono a pattern specifici, possiamo identificare e segnalare 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 variazioni dei 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.

DataSunrise offre strumenti eccezionali e flessibili per la scoperta di dati sensibili, sicurezza, regole di audit, mascheramento e conformità. Le nostre soluzioni consentono alle organizzazioni di salvaguardare i propri dati sensibili e di soddisfare in modo efficace i requisiti normativi. Le invitiamo a programmare una demo online per scoprire come DataSunrise può aiutarla a classificare e proteggere i suoi asset dati critici.

Successivo

Localizzazione dei Dati

Localizzazione dei Dati

Scopri di più

Ha bisogno del nostro team di supporto?

I nostri esperti saranno lieti di rispondere alle Sue domande.

Informazioni generali:
[email protected]
Servizio clienti e supporto tecnico:
support.datasunrise.com
Richieste di collaborazione e alleanza:
[email protected]