- Basic Information – versione del database, features di sicurezza attive, check sulle patch installate.
- User Accounts – utenti presenti, ruoli assegnati, profili, password policy, utenti con dati sensibili, etc.
- Privileges and Role – privilege e ruoli assegnati, privilegi, ruoli e package assegnati a PUBLIC, etc.
- Authorization Control – verifica su features di sicurezza (data masking, database vault, password all’interno di script o job).
- Fine-Grained Access Control.
- Auditing – policy di audit in uso.
- Encryption – verifica su TDE, DBMS_CRYPTO, TLS.
- Database Configuration – parametri di configurazione database, control files, redologs, trigger, database link, Network access control.
- Network Configuration – verifica network encryption.
- Operating System – CMAN Remote admin, diagnostic destination.
Componenti del Tool DBSAT
Prerequisiti e configurazione
- Linux x86-64 e Linux 64-bit Arm;
- Windows x64;
- Solaris x64 e Solaris SPARC64;
- IBM AIX (64-bit) a Linux su zSeries (64-bit);
- HP-UX IA (64-bit).
Framework di sicurezza e best practice Oracle
- STIG V2R8.
- Benchmark CIS del database Oracle 19c v1.2.
- Migliori pratiche Oracle.
- Articoli e considerando del Regolamento generale sulla protezione dei dati dell'Unione Europea (GDPR UE) 2016/679.
Oracle Database Security Assessment Collector and Reporter
I componenti Collector e Reporter vengono utilizzati per generare il report Oracle Database Security Assessment (DBSAT) nei formati HTML, Excel, JSON e testo. Tutti i report contengono informazioni simili ma in formati diversi.
Nella parte superiore del report troveremo le informazioni sui dettagli di esecuzione del Collector e del Reporter, come la raccolta dei dati e le date di generazione del report, insieme alla versione del reporter. Seguono le informazioni di dettaglio del database e quindi, la tabella di riepilogo Summary che presenta tutti i risultati per sezione/dominio e il relativo livello di severity.
Risultati (Findings)
- ID regola: l'ID regola è composto da due parti: il prefisso identifica la sezione del report e il suffisso identifica la regola specifica.
- On-line summary: riepilogo di una riga che evidenzia l'obiettivo e il contesto di ciascun controllo.
- Status: lo stato aiuta a stabilire le priorità nell'implementazione delle raccomandazioni DBSAT. Indica il livello di rischio associato al rilievo, consentendo di prendere decisioni informate sulla riparazione.
- High risk - Ha bisogno di attenzione immediata;
- Medium Risk - Pianificare di affrontarli a breve termine;
- Low Risk - Potrebbe essere risolto durante i tempi di inattività programmati o abbinato ad altre attività di manutenzione;
- Evaluate - Necessita di analisi manuale;
- Advisory - Costituisce un'opportunità di miglioramento e aumenta la consapevolezza sugli altri controlli di sicurezza disponibili nel database Oracle;
- Pass - Non sono stati riscontrati rischi.
- Summary: fornisce un riepilogo del risultato. Quando il risultato è informativo, il riepilogo in genere riporta solo il numero di elementi di dati esaminati.
- Details: fornisce informazioni dettagliate per spiegare il riepilogo dei risultati, in genere i risultati del database valutato, seguiti da eventuali raccomandazioni per le modifiche.
- Remarks: spiegare il motivo della regola e le azioni consigliate per la risoluzione.
- Riferimenti: se il risultato è una Oracle Best Practice (OBP) correlata a una raccomandazione Oracle Database 12c STIG V2R8, CIS Oracle Database Benchmark 12c v2.0.0 o correlata a un articolo/considerando GDPR, verrà menzionato qui.
Finding 2: in riferimento ai benchmark CIS, OBP eSTIG si è rilevata una non conformità di livello Medium Risk (evidenziato in arancione). Nello specifico ci sono 4 utenti, DBSAT_USER, SYSTEM, GIALLO e ROSA che NON hanno una funzione di verifica della complessità delle password. GIALLO e ROSA sono stati creati da noi a titolo esemplificativo, SYSTEM è utente nativo Oracle e DBSAT_USER è l’utente di servizio creato per il tool DBSAT.
Finding 3: Sono stati rilevati due utenti con ruolo ad ALTISSIMO potenziale SYSDBA e sono SYS (utente nativo Oracle) e GIALLO (utente creato da noi a scopo esemplificativo). In questo caso DBSAT avvisa della situazione lasciando però al Database Administrator la valutazione del fattore di rischio di tale configurazione.
Finding 4: Si segnala che le connessioni tra client e database usano un canale di comunicazione NON criptato. In questo caso si tratta di High Risk secondo i 3 benchmark di sicurezza e viene segnalato in rosso.
Oracle Database Security Assessment Discoverer
Come dicevamo il comportamento del Discoverer è determinato dalla configurazione di due files, il dbsat.config e il pattern.ini.
Dbsat.config
Il dbsat.config descrive sostanzialmente i parametri di configurazione dell’istanza (nome_db, porta, wallet_location, etc), il nome del file nel quale sono definiti i pattern dei dati sensibili da discoverare e l’elenco degli schema oggetto di assessment e in ultimo le categorie dei dati sensibili con la definizione di quello che si ritiene il livello di rischio (High, Medium, Low).
Se ne riporta sotto uno a titolo di esempio, usato per effettuare i nostri test di discoverer. La sezione [Database] descrive i parametri per la connessione al database - nel caso di studio stiamo puntando al database ORCL, sul server locale localhost e risponde sulla porta 1521, la sezione [Discovery Parameters] dice che sto utilizzando come sensitive_pattern_file il file my_sensitive2_it.ini all’interno del quale definisco le regole per indicare quali per me sono i tipi di dati sensibili e gli schma in scope, nel nostro esempio schema_scope = ALL. In ultimo la sezione [Sensitive Categories] che definisce, per le diverse categorie di dati ( Identification, Biographic, Financial, Health,...) il livello di priorità che noi decidiamo di assegnare.
Sensitive_<lang>.ini
Questo è il file fondamentale per permettere al Discoverer di trovare all’interno delle nostre tabelle quelli che noi definiamo dati sensibili. Nella cartella dbsat\Discover\conf Oracle mette a disposizione una serie di file nelle diverse lingue (inglese, italiano, francese, etc.) nei quali vengono elencati i nomi delle colonne delle tabelle che contengono dati sensibili con diversi pattern di ricerca. Si riportano sotto a titolo di esempio le definizioni per trovare nelle tabelle dati sensibili relativi all’orientamento sessuale, con le regular expression utilizzate per effettuare la ricerca nelle colonne delle tabelle usando il dizionario delle lingue inglese ed italiana rispettivamente:
English
# Health Info - Provider Data
[HEALTHCARE PROVIDER]
COL_NAME_PATTERN = (^|[_-])(DENTISTS?|DOCTORS?|PHYSICIANS?|THERAPISTS?|CLINICS?|HOSPITALS?|PHARMAC(Y|IES)|HEALTH.?CARE.*PROVIDERS?|PRIMARY.?CARE)($|[_-])
COL_COMMENT_PATTERN = \bDENTIST\b|\bDOCTOR\b|\bPHYSICIAN\b|THERAPIST|\bCLINICS?\b|\bHOSPITALS?\b|PHARMAC(Y|IES)|PRIMARY.?CARE|HEALTH.?CARE PROVIDERS?
SENSITIVE_CATEGORY = Health Info - Provider Data
Italian
# Health Info - Provider Data
[HEALTHCARE PROVIDER - IT]
COL_NAME_PATTERN = (^|[_-])(DENTIST(A|I)|MEDIC(O|I)|TERAPIST(A|I)|CLINIC(A|HE)|OSPEDAL(E|I)|FARMACI(A|E)|FORNITOR(E|I).*SANITARIA?|ASSISTENZA.?SANITARIA.*BASE)($|[_-])
COL_COMMENT_PATTERN = \bDENTIST(A|I)\b|\bMEDIC(O|I)\b|\bTERAPIST(A|I)\b|\bCLINIC(A|HE)\b|\bOSPEDAL(E|I)\b|\bFARMACI(A|E)\b|FORNITOR(E|I).*SANITARIA?|ASSISTENZA.?SANITARIA.*BASE
SENSITIVE_CATEGORY = Health Info - Provider Data
Nel nostro caso di studio abbiamo creato la tabella ANNA.MEDICI così fatta:
Il Discoverer intercetta quindi la colonna CLINICA all’interno della tabella e la segnala come tabella con dati sensibili, questo perchè nel file sensitive_it.ini, nel COL_NAME_PATTERN abbiamo definito che colonne che si chiamino CLINICA (o CLINICHE) siano colonne che contengono dati sensibili. Il colore arancione indica che quel dato è stato da noi classificato come Medium Risk.
É possibile anche definire nostri dati sensibili, non inclusi nei file sensitive_<lang>.ini forniti da Oracle, a titolo di esempio abbiamo creato una nuova categoria di dati, relativa agli animali domastici, inserendola nel nostro file .ini con queste direttive:
[PET - IT]
COL_NAME_PATTERN = ANIM*|RAZZ*
COL_COMMENT_PATTERN =
SENSITIVE_CATEGORY = Biographic Info - Extended PII
istruendo quindi il Discoverer a cercare nelle tabelle tutte quelle che hanno colonne con nome ANIM(ali) o RAZZ(a), nel nostro caso abbiamo creato la tabella ANNA.CUCCIOLI.
Discoverer intercetta la tabella, rileva che è ad High Risk (informazione codificata attraverso il colore rosso), qui insieme alla tabella PERSONE:
E nel Summary riporta le informazioni riassuntive.