Log di Audit AWS RDS PostgreSQL in DataSunrise
Oggi non sorprende più imbattersi in titoli relativi a violazioni dei dati o alla privacy. Ciò La riguarda personalmente in quanto cliente di tali aziende – desidera che qualcuno si prenda cura adeguata dei Suoi dati. Lo riguarda inoltre a livello professionale; in qualità di persona che lavora con i dati, Lei è quella “persona” per i Suoi clienti. Una buona registrazione degli audit è uno strumento importante nell’arsenale di un professionista dei dati attento alla sicurezza. In questo articolo discuteremo dei Log di Audit per RDS PostgreSQL e di come configurarli con DataSunrise.
L’idea generale dell’audit del database è conoscere chi e quando ha avuto accesso alle tabelle del Suo database e quali modifiche sono state apportate. In teoria, tutte queste esigenze possono essere soddisfatte tramite i meccanismi di audit nativi del database. Questo articolo si concentrerà inoltre sull’audit nativo di un database AWS RDS PostgreSQL.
Esistono diversi parametri che è possibile impostare per registrare l’attività sul Suo database AWS RDS PostgreSQL. La registrazione di base delle istruzioni può essere fornita dal consueto servizio di logging con log_statement = all. Tale impostazione è accettabile per il monitoraggio e altri usi, ma non fornisce il livello di dettaglio generalmente richiesto per un audit. Non basta disporre di un elenco di tutte le operazioni eseguite contro il database; deve essere possibile individuare anche istruzioni particolari di interesse per un revisore. Il servizio di logging standard mostra ciò che l’utente ha richiesto. Per informazioni più dettagliate e strutturate, è possibile utilizzare l’estensione pgaudit (pgAudit su GitHub), configurabile a piacere. Il plugin pgaudit fornisce una registrazione dettagliata delle sessioni e degli oggetti per l’audit in Amazon RDS PostgreSQL. Dopo aver abilitato l’estensione pgAudit, potrà configurare il parametro pgaudit.log per effettuare l’audit di database, ruoli, tabelle e colonne specifici.
Abilitazione dell’estensione pgAudit su un’istanza AWS RDS in esecuzione PostgreSQL
- Crei un Gruppo di Parametri RDS e modifichi i valori predefiniti dei parametri come indicato di seguito:
Nome del parametro Valore da impostare Log_checkpoints (facoltativo) 0 log_connections 1 log_destination csvlog log_disconnections 1 pgaudit.log all pgaudit.role rds_pgaudit shared_preload_libraries pg_stat_statements, pgaudit Assegni il Gruppo di Parametri alla Sua istanza del database RDS PostgreSQL (RDS Instance → Configuration → Modify → Configurazione Aggiuntiva del database → Gruppo di Parametri DB);
Si connetta al Suo database RDS PostgreSQL utilizzando un client (psql, PgAdmin, ecc.) ed esegua la seguente query per creare un ruolo di database denominato rds_pgaudit:
CREATE ROLE rds_pgaudit;
Riavvii la Sua istanza del database RDS Postgres per applicare le modifiche (RDS Instance → Action → Reboot)
Si assicuri che pgAudit sia inizializzato eseguendo il seguente comando:
show shared_preload_libraries;
Dovrebbe ricevere la seguente risposta:
shared_preload_libraries -------------------------- Rdsutils,pg_stat_statements,pgaudit
Crei l’estensione pgaudit eseguendo il seguente comando:
CREATE EXTENSION pgaudit;
Si assicuri che il parametro pgaudit.role sia impostato su rds_pgaudit eseguendo il seguente comando:
SHOW pgaudit.role;
Dovrebbe ricevere la seguente risposta:
Pgaudit.role ------------------ Rds_pgaudit
Può visualizzare i file di log del database per il Suo motore DB utilizzando la AWS Management Console:
- Sulla console Amazon RDS, scelga il nome dell’istanza DB PostgreSQL che contiene il file di log che desidera visualizzare.
- Selezioni la scheda Logs & events.
- Scorra verso il basso fino alla sezione Logs.
- Nella sezione Logs, scelga il log che desidera visualizzare e, successivamente, prema Visualizza.
Per testare la registrazione dell’audit, esegua diversi comandi che ha scelto di sottoporre ad audit. Ad esempio, potrebbe eseguire il seguente comando:
INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (7, 1, 68611, 1557, CURRENT_TIMESTAMP);
I log del database dovrebbero contenere un’entrata simile a quella seguente.
... 2020-12-08 11:05:14.093 UTC,"postgres","pg_test",9937,"18.222.214.187:45210",5fcf5de8.26d1,99, "INSERT",2020-12-08 11:05:12 UTC,7/1305,5563,LOG,00000,"AUDIT: SESSION,97,1,WRITE,INSERT,,,"" INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (7, 1, 68611, 1557, CURRENT_TIMESTAMP); "",<not logged>",,,,,,,,,"" ...
Esaminiamo il formato dei log di pgAudit:

La CLASSA categorizza il tipo di istruzione (READ, WRITE, DDL, ecc.) e il COMMAND indica a quale sottoclasse appartiene. Il campo STATEMENT contiene il testo completo dell’INSERT INTO e il nome completamente qualificato di una particolare tabella.
È necessario sottolineare che, dalla prospettiva del revisore, tali log di audit nativi sono piuttosto difficili da leggere e analizzare. L’audit nativo necessita di software/risorse aggiuntive (come DataSunrise) per il parsing e il processamento al fine di produrre tracciati di audit fruibili. Inoltre, l’audit nativo comporta un sovraccarico sul server del database, grandi archivi di audit richiedono spazio di archiviazione nel database e i dati di audit non vengono catturati nel formato richiesto dai revisori e dai team di sicurezza. In altre parole, i revisori necessitano di log che presentino le informazioni in modo significativo, e i meccanismi nativi del database non sono in grado di fornire il tipo di log richiesto.
Ecco DataSunrise
Sulla base delle limitazioni dei meccanismi di audit nativi menzionati in precedenza, esaminiamo più da vicino le capacità di DataSunrise. DataSunrise può essere implementato nelle configurazioni dei PostgreSQL Trailing DB Audit Logs. Questa opzione consente di ottenere i risultati dell’audit raccolti dagli strumenti di audit nativi di PostgreSQL.

Il database PostgreSQL esegue l’audit utilizzando i suoi meccanismi di audit integrati e salva i risultati in un file CSV dedicato, in base alla configurazione selezionata. Successivamente, DataSunrise stabilisce una connessione con il database per reperire ulteriori informazioni sulle sessioni, scarica i dati di audit dal server utilizzando l’API RDS e li inoltra all’Audit Storage per ulteriori analisi. Prima di tutto, questa configurazione è destinata all’utilizzo con database Amazon RDS, poiché DataSunrise non supporta il sniffing su RDS. Tale modalità operativa presenta tre principali svantaggi:
- Se l’amministratore del database ha accesso ai log, questi possono essere eliminati.
- L’audit nativo incide negativamente sulle prestazioni del database.
- È impossibile determinare quali dati siano stati ricevuti per una richiesta specifica.
Configurazione dei Trailing DB Audit Logs di PostgreSQL
Per utilizzare l’Audit Trail per eseguire l’audit delle query del database Amazon RDS PostgreSQL, è necessario procedere come segue:
- Assegni i ruoli IAM appropriati alla Sua istanza EC2 contenente le istanze DataSunrise:
Crei una AWS IAM Policy utilizzando il seguente JSON:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds:DownloadDBLogFilePortion", "rds:DescribeDBLogFiles", "rds:DownloadCompleteDBLogFile" ], "Resource": "arn:aws:rds:<region>:<012345678901>:db:<db-instance-name>" } ] }- Allegare la policy al Suo IAM Role (Policies → Policy actions → Attach)
- Allegare l’IAM Role alla Sua macchina EC2 di DataSunrise (EC2 machine → Instance Settings → Attach/Replace IAM Role)
- Si connetta alla Web Console di DataSunrise.
- Crei un profilo di Database in Configurations → Databases. Nel menu a tendina Mode, selezioni “Trailing the db audit logs” e compili tutti i campi richiesti:
Elemento dell’interfaccia Descrizione Server Server DataSunrise Format Type Formato del file in cui memorizzare i dati di audit Region Regione AWS in cui si trova il database di destinazione DB Identifier Nome dell’istanza del database Authentication method - IAM Role: utilizzi l’IAM role allegato per l’autenticazione
- Regular: autenticazione utilizzando AWS Access/Secret Key
Request data with the following periodicity (seconds) 10 per impostazione predefinita

- Vada alla sezione Audit e configuri una Regola di Audit per l’istanza PostgreSQL.
- Verifichi che non vi siano sessioni attive.
- Si connetta direttamente al database PostgreSQL ed esegua qualsiasi query.
- Vada su Audit → Transactional Trails per verificare i risultati dell’audit.
Perché DataSunrise è utile nella gestione dei Log di Audit di PostgreSQL?
Il componente Data Audit di DataSunrise è in grado di eseguire l’audit di TUTTE le azioni e le query degli utenti inviate al database di destinazione. L’audit non dipende esclusivamente dal tipo di utente del database; pertanto, può monitorare sia le query degli utenti regolari che quelle degli utenti privilegiati.
DataSunrise memorizza i risultati dell’audit in un database SQLite integrato oppure in un database esterno come PostgreSQL, MS SQL Server, Vertica, Redshift, Aurora MySQL, MySQL. DS consente inoltre di filtrare i log di audit, organizzarli e generare report uniformi su tutti i database. Grazie al componente avanzato di reporting Report Gen, potrà presentare i dati audit in un report personalizzabile adatto alle esigenze del Suo revisore. È inoltre possibile creare report periodici secondo una pianificazione stabilita.