EDB Audit

Questa paginetta riporta i passi per la configurazione dell'auditing con EDB Postgres Advanced Server.

La registrazione degli accessi e delle attivita' (AUDIT) e' importante sia per ragioni di sicurezza che per ottemperare alle leggi ed ai regolamenti sulla gestione delle basi dati.

EDB Postgres, rispetto alla versione Community, ha la funzionalita' di audit integrata e quindi non e' necessario installare alcuna estensione aggiuntiva come il PGAudit.
Le funzionalita' di auditing sono infatti integrate in EDB Postgres ed il loro utilizzo e' particolarmente semplice.

Nel seguito sono riportate alcune informazioni di interesse organizzate in paragrafi specifici: Introduzione, Configurazione, Auditing, Auditing Objects, Obblighi di legge, Varie ed eventuali.

Introduzione

La rilevazione delle attivita' svolte su un database e' molto importante sia per necessita' di logging/tracing che per adempiere agli eventuali requisiti di legge. EDB Postgres fornisce in modo integrato uno strumento di auditing delle attivita' che risponde alle crescenti esigenze di controllo richiesto alle aziende da parte di istituzioni finanziarie, governative o degli enti di certificazione.

Con la versione Community di Postgres sono disponibili diverse tecniche per eseguire l'auditing delle attivita' svolte sulla base dati come descritto in questa paginetta.

EDB Postgres fornisce in modo integrato, senza richiedere componenti aggiuntivi, le piu' avanzate funzionalita' di auditing del database. Le impostazioni dell'audit si effettuano con i parametri edb_audit% e non richiedono in nessun caso il riavvio dell'istanza. Come nella versione Community l'auditing e' legato alle funzionalita' di logging del database ma con EDB i due componenti sono quasi indipendenti.

Configurazione

La configurazione dell'EDB Audit Logging e' molto semplice perche' l'auditing e' gia' integrato nella distibuzione EDB, non e' necessario creare alcuna extension e tutte le impostazioni possono essere svolte in linea senza riavvi.

Per la configurazione va indicato il formato (none, csv, xml) ed il path in cui scrivere i file di log di audit. In generale si preferisce evitare di utilizzare un path sotto PGDATA e naturalmente la directory deve essere scrivibile a postgres.

alter system set edb_audit='csv'; alter system set edb_audit_directory = '/var/lib/edb/audit'; select pg_reload_conf();

Con questi semplici passi l'auditing e' gia' attivo. Le impostazioni dei parametri di audit si possono controllare con:

select name, setting, unit, source, context, min_val, max_val  --short_desc
  from pg_settings
 where name like 'edb_audit%' or name in ('logging_collector')
 order by name;

Ora bisogna decidere cosa tracciare!

Auditing Statements

Una prima impostazione riguarda le connessioni: infatti sono molte direttive degli standard che richiedono questa funzionalita'. La configurazione e' molto semplice e permette di tracciare le connessioni fallite oppure tutte. Tipicamente e' richiesto anche di tracciare le disonnessioni.

Piu' importante e maggiormente impegnativo e' tracciare gli statement SQL. E' possibile impostare diversi livelli di tracciamento degli statement:

edb_audit_statement = 'all'     # Statement type to be audited:
                                # none, dml, insert, update, delete, truncate,
                                # select, error, rollback, ddl, create, drop,
                                # alter, grant, revoke, set, all
                                # {select | update | delete | insert}[@groupname | -groupname]

Il rischio nel trattamento dell'auditing e' quello di generare file di log enormi relativi a comandi non utili.
Un vantaggio della configurazione di EDB Audit e' che e' possibile impostare l'auditing a livello di istanza, di database o di utente.

Vediamo quindi un esempio:

alter system set edb_audit_connect = 'all'; alter system set edb_audit_disconnect = 'all'; select pg_reload_conf(); alter database xxx set edb_audit_statement = 'ddl'; alter user yyy set edb_audit_statement = 'all';

Auditing Objects

In un database possono essere presenti oggetti con diversi livelli di sensibilita' dei dati. Per questo con EDB Audit e' possibile impostare un tag (edb_audit_group) agli oggetti ed impostare l'auditing a seconda dell'importanza del controllo.

Nell'esempio che segue abbiamo una tabella che contiene dati relativi ai componsi ed una tabella utile per le aggregazioni. E' possibile impostare diversi livelli di auditing in questo modo:

ALTER TABLE emp SET (edb_audit_group = 'high_sec'); CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13) ) with (edb_audit_group = 'low_sec'); SET edb_audit_statement = 'select-low_sec@high_sec, insert@low_sec@high_sec, update-low_sec@high_sec, delete-low_sec@high_sec';

Obblighi di legge

Ci sono diverse leggi e regolamenti che richiedono l'auditing sull'accesso ai dati...

La legge in vigore in Italia e' il codice in materia di protezione dei dati personali (d.lg. 30 giugno 2003, n. 196) nonche' il disciplinare tecnico in materia di misure minime di sicurezza di cui all'allegato B del medesimo codice. Tale legge inquadra in modo completo la materia ma, dal punto di vista pratico, il riferimento sono i provvedimenti del Garante. I dettagli sono riportati su questa pagina: in pratica dal 15 Dicembre 2009 vanno registrati tutti gli accessi amministrativi ai sistemi ed alle basi dati!

Inoltre il 27 aprile 2016 e' stato adottato il REGOLAMENTO (UE) 2016/679 DEL PARLAMENTO EUROPEO E DEL CONSIGLIO relativo alla protezione delle persone fisiche con riguardo al trattamento dei dati personali, nonche' alla libera circolazione di tali dati e che abroga la direttiva 95/46/CE (regolamento generale sulla protezione dei dati). Tale regolamento, generalmente riferito con l'acronimo inglese GDPR (General Data Protection Regulation) ha validita' di legge senza bisogno di essere approvato dal Parlamento Italiano ed entrera' in vigore il 25 Maggio 2018.
Il GDPR e' molto ampio (cfr. testo ufficiale) e prevede regole comuni per tutti i paese della comunita' europea, anzi ha validita' extraterritoriale quando i dati riguardano cittadini europei. Oltre all'inasprimento delle sanzioni con il GDPR cambia sopratutto la prospettiva d'insieme e richiede che la protezione dei dati faccia parte del progetto di sviluppo dei processi aziendali per i prodotti ed i servizi offerti dall'azienda.

Per quanto riguarda gli USA i principali obblighi sull'auditing riguardano:

Molto completi e dettagliati sono i CIS Benchmarks che prevedono tutti i controlli necessari suddivisi per versione di database.

E' importante sottolineare che i requisiti minimi richiesti dalle normative non si limitano all'audit... I risultati dell'audit vanno anche salvati in modo corretto e resi consultabili. Fondamentali sono anche una corretta definizione dei privilegi [NdE improntata al principio del minimo privilegio] e la crittografia [NdE sia sui dati che sulla loro trasmissione].
E' necessario procedere prima ad un assessment tecnico e funzionale della base dati e quindi a provvedere alla messa in sicurezza del database con tutti gli strumenti necessari, tra cui l'audit.

Varie ed eventuali

Maggiori dettagli su EDB Audit sono riportati nella documentazione ufficiale e sono disponibili anche diversi ottime pagine di esempio come su questo articolo.

Una panoramica delle possibilita' di auditing sulla versione PostgreSQL community e' contenuta in questo documento. Se si utilizza PostgreSQL su AWS puo' essere utile questo documento (su Amazon RDS e' utilizzato il PGAudit).


Titolo: EDB Audit
Livello: Medio (2/5)
Data: 14 Febbraio 2017 ❤️
Versione: 1.0.4 - 31 Ottobre 2021 🎃
Autore: mail [AT] meo.bogliolo.name