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

Audit del Database in PostgreSQL

Audit del Database in PostgreSQL

Introduzione: Il Prezzo dell’Integrità e Responsabilità del Database

Nell’attuale panorama guidato dai dati, le poste in gioco per proteggere le informazioni sensibili non sono mai state più alte. Le organizzazioni nei settori della finanza, della sanità, dell’e-commerce e oltre sono sotto costante pressione per conformarsi a regolamenti come GDPR, CCPA e HIPAA. La conformità non è solo una parola di moda; è una necessità per evitare multe, mitigare i rischi e mantenere la fiducia dei clienti.

Sapevi che dalla introduzione del Regolamento Generale sulla Protezione dei Dati (GDPR) nel 2018, le multe hanno superato la cifra straordinaria di $4,9 miliardi entro aprile 2024? Ciò equivale a oltre $1 milione in sanzioni giornaliere per violazioni come sicurezza insufficiente o mancanza di trasparenza. Queste ingenti sanzioni illustrano ulteriormente l’importanza critica di mantenere capacità di audit del database robuste.

PostgreSQL, un sistema di gestione di database relazionale open-source noto per essere tra i più flessibili e affidabili, dispone di una gamma di strumenti integrati progettati per l’audit. Questo articolo esplorerà come l’audit del database in PostgreSQL possa essere implementato utilizzando quelle capacità di registrazione native. Inoltre, verso la fine, esamineremo come l’audit del database in PostgreSQL utilizzando strumenti integrati si confronta con le soluzioni DataSunrise che affrontano le loro limitazioni.

Audit del Database in PostgreSQL con Strumenti Integrati

1. log_statement

Configurazione e Utilizzo

Il parametro log_statement in PostgreSQL ti consente di registrare dichiarazioni SQL in base al loro tipo (DDL, DML o SELECT). È configurato nel file postgresql.conf o tramite un comando SQL.

Passi per Abilitare:

  1. Modifica il file postgresql.conf:

    Puoi utilizzare la query "SHOW config_file" per ottenere la posizione di questo file. Una volta aperto, aggiorna queste righe:

    log_statement = 'all'   # Opzioni: 'none', 'ddl', 'mod', 'all'
    log_directory = 'pg_log'  # Directory per i file di log
    log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # Impostazione del nome file
    
  2. Puoi anche impostarlo temporaneamente tramite SQL:

    SET log_statement = 'all';
    
  3. Riavvia PostgreSQL per applicare le modifiche:

    sudo systemctl restart postgresql
  4. Apri il file di log per la visualizzazione o il monitoraggio continuo in tempo reale usando questo comando:

    Sostituisci la posizione del file nell’esempio con il tuo effettivo nome file e percorso

    tail -f /var/log/postgresql-2024-11-25.log

Esempio di Query: Una volta configurato, eseguire una query come:

SELECT * FROM users WHERE id = 1;

Risulterà in una voce di log simile a quella nello screenshot qui sotto:

Usi: Questa configurazione di base fornisce visibilità su tutte le query SQL eseguite, aiutando nell’audit e nel debugging.

2. pg_stat_statements

Configurazione e Utilizzo

pg_stat_statements è un’estensione disponibile in PostgreSQL di default che tiene traccia delle metriche di prestazione delle query. Deve essere abilitata esplicitamente.

Passi per Abilitare:

  1. Aggiungi l’estensione pg_stat_statements alla tua istanza PostgreSQL:

    CREATE EXTENSION pg_stat_statements;
    
  2. Aggiorna il file postgresql.conf per caricare il modulo:

    shared_preload_libraries = 'pg_stat_statements'
    pg_stat_statements.track = all
    
  3. Ricarica PostgreSQL:

    sudo systemctl restart postgresql
    

Esempio di Query: Per visualizzare le statistiche delle query:

SELECT query, calls, total_exec_time, mean_exec_time
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 5;

Questa query elenca le prime 5 query con il maggior tempo totale di esecuzione, aiutando a identificare query lente o usate frequentemente.

Usi: Perfetto per l’auditing delle prestazioni a lungo termine delle query e per ottimizzare le query eseguite frequentemente.

3. pg_stat_activity

Configurazione e Utilizzo

pg_stat_activity è una vista di sistema che visualizza informazioni sulle sessioni di database attuali, incluse le query in esecuzione, gli indirizzi client e gli stati di connessione.

Passi per Abilitare: Non è richiesta configurazione speciale, in quanto è abilitata di default.

Esempio di Query: Per monitorare le sessioni attive:

SELECT pid, usename, client_addr, state, query, query_start
FROM pg_stat_activity
WHERE state = 'active';

Questa query produce dettagli di tutte le query attive:

  • pid: ID del processo della sessione.
  • application_name: L’applicazione usata per stabilire la connessione.
  • usename: Nome utente dell’utente collegato.
  • client_addr: Indirizzo IP del client.
  • state: Stato della connessione (ad es., active, idle).
  • query: La query SQL in esecuzione.
  • query_start: Timestamp di quando la query è iniziata.

Usi: Questo è utile per il monitoraggio in tempo reale delle query a lunga durata o potenzialmente problematiche.

4. Triggers

Configurazione e Utilizzo

I trigger in PostgreSQL sono oggetti del database che eseguono automaticamente una funzione specificata quando si verificano certi eventi (INSERT, UPDATE, DELETE) su una tabella.

Passi per Creare un Trigger di Base:

  1. Crea una tabella di audit

    CREATE TABLE audit_table 
    (old_data JSONB, new_data JSONB, action TEXT, changed_at TIMESTAMPTZ);
    
  2. Scrivi una funzione di trigger:

    CREATE OR REPLACE FUNCTION audit_log()
    RETURNS TRIGGER AS $$
    BEGIN
    INSERT INTO audit_table (old_data, new_data, action, changed_at)
    VALUES (row_to_json(OLD), row_to_json(NEW), TG_OP, now());
    RETURN NEW;
    END;
    
  3. Crea un trigger per usare la funzione:

    CREATE TRIGGER user_changes_audit
    AFTER INSERT OR UPDATE OR DELETE ON users
    FOR EACH ROW EXECUTE FUNCTION audit_log();
    

Esempio di Query: Quando una riga nella tabella users viene aggiornata:

UPDATE users SET lastname = 'New' WHERE id = 1;

La audit_table catturerebbe la modifica:

Usi: I trigger sono altamente flessibili e possono registrare cambiamenti dettagliati a livello di dati e di schema, rendendoli essenziali per un auditing a grana fine.

Affrontare le Limitazioni dell’Audit Nativo del Database in PostgreSQL con le Soluzioni DataSunrise.

1. Supporto alla Conformità Automatizzato

  • Limitazione: I log di PostgreSQL richiedono un significativo sforzo manuale per essere interpretati secondo la conformità a GDPR, HIPAA, PCI-DSS.
  • DataSunrise automatizza la creazione dei rapporti di conformità formattando i dati di audit in rapporti pre-costruiti allineati con i principali standard normativi, riducendo i carichi di lavoro manuali e garantendo precisione.

2. Consapevolezza in Tempo Reale

  • Limitazione: PostgreSQL può registrare eventi attraverso log e trigger ma manca di avvisi in tempo reale per incidenti critici come accessi non autorizzati o SQL injection.
  • DataSunrise colma questa lacuna monitorando il traffico del database in tempo reale, rilevando attività insolite e notificando immediatamente gli amministratori tramite canali configurati come e-mail o Slack. Questo approccio proattivo garantisce un’azione rapida contro potenziali minacce.

3. Gestione Unificata dei Log

  • Limitazione: PostgreSQL memorizza i log per singola istanza di database, rendendo difficile la correlazione dei log cross-sistema.
  • DataSunrise centralizza i log in una piattaforma unica da PostgreSQL e oltre 40 altri motori di database supportati, semplificando la correlazione degli eventi e abilitando una rapida rilevazione di anomalie tra i sistemi.

4. Storia delle Sessioni e Tracciamento degli Utenti

  • Limitazione: Gli strumenti PostgreSQL come pg_stat_activity tracciano solo sessioni attive o inattive, senza alcuna storia di connessioni già terminate.
  • DataSunrise mantiene un record completo di tutte le sessioni utente, comprese quelle terminate, supportando indagini retrospettive e analisi delle attività.

5. Regole di Audit Complete e Filtraggio

  1. Limitazione: Anche se i trigger PostgreSQL possono essere configurati per l’audit, possono richiedere una manutenzione complessa e mancano di una gestione unificata delle regole di audit su diversi livelli di sicurezza.
  2. DataSunrise offre regole di audit flessibili a più livelli – dall’accesso alla sessione e agli oggetti a specifici pattern di query. Tutti i registri di audit e gli eventi di sicurezza sono monitorati attraverso un’unica interfaccia, eliminando la complessità nella gestione dei trigger e fornendo un controllo granulare su ciò che viene registrato e come.

6. Versatilità e Caratteristiche Avanzate

  • Limitazione: Le funzionalità integrate di PostgreSQL spesso richiedono estensioni o personalizzazioni per esigenze avanzate di sicurezza e conformità.
  • DataSunrise migliora il controllo del database con la ricerca di dati guidata da intelligenza artificiale, supporto multi-database, monitoraggio in tempo reale, generazione automatica di report e caratteristiche aggiuntive di livello enterprise, fornendo una gestione scalabile e ottimizzata per ambienti diversificati.

Conclusione:

L’auditing efficace del database è più di un checkbox normativo—è un pilastro della gestione moderna dei dati. L’audit del database in PostgreSQL utilizzando capacità native, come log_statement, pg_stat_statements, e i trigger, può fornire un solido punto di partenza per il monitoraggio delle attività del database. Tuttavia, questi strumenti presentano limitazioni che richiedono un’attenta configurazione e possono influire sulle prestazioni se non configurati correttamente.

DataSunrise eccelle proprio qui, offrendo caratteristiche avanzate di auditing pronte all’uso che sono facili da gestire e ottimizzate per le prestazioni. Dalle notifiche in tempo reale delle attività sospette alla creazione automatizzata di rapporti di conformità e al monitoraggio completo degli eventi e delle sessioni, DataSunrise migliora l’auditing del database per soddisfare le esigenze dell’attuale rigido panorama normativo.

Esplora le nostre soluzioni con una demo online per vedere come possono migliorare le tue capacità di auditing.

“`

Successivo

Audit del Database per Amazon DynamoDB

Audit del Database per Amazon DynamoDB

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]