Audit Log di AWS RDS PostgreSQL in DataSunrise
Oggi non è quasi sorprendente vedere un altro titolo correlato a violazioni dei dati o alla privacy dei dati. Questo ti riguarda personalmente come cliente di quelle aziende – vuoi che qualcuno si prenda cura bene dei tuoi dati. Ti interessa anche professionalmente; come persona che lavora con i dati, sei tu quel ‘qualcuno’ per i tuoi clienti. Un buon audit logging è uno strumento importante per un professionista dei dati consapevole della sicurezza. In questo articolo, discutiamo gli Audit Log di RDS PostgreSQL e come configurarli con DataSunrise.
L’idea generale di audit del database è sapere chi e quando ha accesso alle tue tabelle del database, e quali modifiche sono state effettuate. Teoricamente, tutte queste richieste possono essere soddisfatte utilizzando meccanismi nativi di audit del database. Questo articolo si concentra anche sull’audit nativo di un database AWS RDS PostgreSQL.
Ci sono diversi parametri che puoi impostare per registrare l’attività sul tuo database AWS RDS PostgreSQL. La registrazione base delle dichiarazioni può essere fornita dalla struttura di registrazione standard con log_statement = all. Questo è accettabile per il monitoraggio e altri usi, ma non fornisce il livello di dettaglio generalmente richiesto per un audit. Non è sufficiente avere un elenco di tutte le operazioni eseguite contro il database. Deve anche essere possibile trovare dichiarazioni particolari che sono di interesse per un revisore. La struttura di registrazione standard mostra cosa ha richiesto l’utente. Per informazioni più dettagliate e strutturate, puoi utilizzare l’estensione pgaudit (https://github.com/pgaudit/pgaudit), che puoi anche configurare. Il plugin pgaudit fornisce registrazioni di audit dettagliate delle sessioni e degli oggetti per Amazon RDS PostgreSQL. Dopo aver abilitato l’estensione pgAudit, puoi configurare il parametro pgaudit.log per audit di specifici database, ruoli, tabelle e colonne.
Abilitare l’estensione pgAudit su un’istanza AWS RDS che esegue PostgreSQL
- Crea un Gruppo di Parametri RDS e modifica i valori predefiniti dei parametri con i valori mostrati di seguito:
Nome del parametro Valore da impostare Log_checkpoints (opzionale) 0 log_connections 1 log_destination csvlog log_disconnections 1 pgaudit.log all pgaudit.role rds_pgaudit shared_preload_libraries pg_stat_statements, pgaudit Assegna il Gruppo di Parametri alla tua istanza del database RDS PostgreSQL (RDS Instance → Configuration → Modify → Additional Configuration del database → DB parameter group);
Collegati al tuo database RDS PostgreSQL usando un client (psql, PgAdmin, ecc.) ed esegui la seguente query per creare un ruolo del database denominato rds_pgaudit:
CREATE ROLE rds_pgaudit;
Riavvia l’istanza del database Postgres RDS per applicare le modifiche (RDS Instance → Action → Reboot)
Assicurati che pgAudit sia inizializzato eseguendo il comando seguente:
show shared_preload_libraries;
Dovresti ricevere la seguente risposta:
shared_preload_libraries -------------------------- Rdsutils,pg_stat_statements,pgaudit
Crea l’estensione pgaudit eseguendo il seguente comando:
CREATE EXTENSION pgaudit;
Assicurati che il pgaudit.role sia impostato su rds_pgaudit eseguendo il seguente comando:
SHOW pgaudit.role;
Dovresti ricevere la seguente risposta:
Pgaudit.role ------------------ Rds_pgaudit
Puoi visualizzare i file di log del database per il tuo motore DB utilizzando la Console di Gestione AWS:
- Sulla console Amazon RDS scegli il nome dell’istanza del database PostgreSQL che ha il file di log che vuoi visualizzare.
- Scegli la scheda Log e eventi.
- Scorri verso il basso alla sezione Log.
- Nella sezione Log, scegli il log che vuoi visualizzare e poi scegli Visualizza.
Per testare l’audit logging, esegui diversi comandi che hai scelto di audit. Ad esempio, potresti 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 alla 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 CLASSE categorizza il tipo di dichiarazione (READ, WRITE, DDL, ecc.) e il COMANDO ti dice quale sottoclasse è. Il campo STATEMENT contiene il testo completo dell’INSERT INTO e il nome completo di una particolare tabella.
Dobbiamo sottolineare che, dal punto di vista del revisore, tali log di audit nativi sono piuttosto difficili da leggere e analizzare. L’audit nativo necessita di software/risorse aggiuntivi (come DataSunrise) per il parsing e l’elaborazione al fine di produrre tracce di audit user-friendly. Inoltre, l’audit nativo comporta un sovraccarico sul server del database, grandi archivi di audit richiedono spazio di archiviazione nel database e i dati degli audit non sono catturati nel formato richiesto dai revisori e dalle squadre di sicurezza. In altre parole, i revisori necessitano di log che presentino le informazioni in modo significativo e i meccanismi nativi del database non possono fornire loro il tipo di log richiesto.
Entra in gioco DataSunrise
Basandosi sulle limitazioni dei meccanismi nativi di audit che abbiamo menzionato sopra, diamo un’occhiata più da vicino alle capacità di DataSunrise. DataSunrise può essere impiegato in configurazioni di Audit Log Trailing del database di PostgreSQL. Questa opzione consente di ottenere i risultati della audit raccolti dagli strumenti di audit nativi di PostgreSQL.
Il database di PostgreSQL esegue l’audit utilizzando i suoi meccanismi di audit integrati e salva i risultati dell’audit in un file CSV dedicato in base alla configurazione selezionata. Successivamente DataSunrise stabilisce una connessione con la base per ulteriori informazioni sulla sessione, scarica i dati dell’audit dal server del database utilizzando l’API RDS e li passa alla Memoria dell’Audit per un’ulteriore analisi. Prima di tutto, questa configurazione è pensata per essere utilizzata per database Amazon RDS perché DataSunrise non supporta lo sniffing su RDS. Questa modalità operativa presenta tre principali svantaggi:
- Se l’amministratore del database ha accesso ai log del database, può eliminarli.
- L’auditing nativo ha un impatto negativo sulle prestazioni del database.
- È impossibile scoprire quali dati sono stati ricevuti per una richiesta specifica.
Configurazione degli Audit Log Trailing del Database di PostgreSQL
Per utilizzare la Traccia di Audit per l’audit delle query del database Amazon RDS PostgreSQL è necessario fare quanto segue:
- Assegna i ruoli IAM appropriati alla tua istanza EC2 con le istanze DataSunrise:
Crea una Politica IAM AWS 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>" } ] }
- Allega la politica al tuo Ruolo IAM (Policies → Policy actions → Attach)
- Assegna il Ruolo IAM alla tua macchina EC2 di DataSunrise (Macchina EC2 → Impostazioni dell’istanza → Assegna/Sostituisci Ruolo IAM)
- Connettiti alla Web Console di DataSunrise.
- Crea un profilo del Database nel modulo Configurazioni → Database. Nell’elenco a discesa Modalità, seleziona Trailing the db audit logs e compila tutti i campi richiesti:
Elemento di interfaccia Descrizione Server Server DataSunrise Tipo di formato Formato del file per memorizzare i dati dell’audit Regione Regione AWS in cui si trova il database di destinazione Identificatore del DB Nome dell’istanza del database Metodo di autenticazione - Ruolo IAM: utilizza il ruolo IAM assegnato per l’autenticazione
- Regolare: autenticazione utilizzando AWS Access/Secret Key
Richiedi dati con la seguente periodicità (secondi) 10 per impostazione predefinita
- Vai all’Audit e configura una Regola di Audit per l’istanza PostgreSQL.
- Verifica che non ci siano sessioni attive.
- Collegati direttamente al database PostgreSQL ed esegui qualsiasi query.
- Vai su Audit → Transactional Trails per controllare i risultati dell’audit.
Perché DataSunrise è utile nella gestione dei Log di Audit di PostgreSQL?
Il componente di Data Audit di DataSunrise è in grado di audit TUTTE le azioni degli utenti e le query inviate al database di destinazione. L’auditing non dipende semplicemente dal tipo di utente del database. Pertanto, può audit sia le query degli utenti regolari che le query degli utenti privilegiati.
DataSunrise memorizza i suoi risultati di audit in un database SQLite integrato o in un database esterno come PostgreSQL, MS SQL Server, Vertica, Redshift, Aurora MySQL, MySQL. DS consente anche di filtrare i log di audit del DB, organizzarli e generare rapporti basati su di essi che sono uniformi per tutti i database. Grazie al componente avanzato di reporting Report Gen, puoi presentare i tuoi dati di audit come un rapporto personalizzabile adatto alle esigenze del tuo revisore. Puoi anche creare rapporti periodici secondo un programma.