PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Registrazione di controllo per PostgreSQL

Il controllo è un requisito per molte normative o standard di sicurezza, come PCI - Payment Card Industry, e anche un buon modo per mantenere i tuoi dati il ​​più sicuri possibile sapendo cosa sta succedendo nei tuoi database.

In un database PostgreSQL, la registrazione delle istruzioni di base può essere fornita dalla funzione di registrazione standard con log_statement =all. Questo è accettabile per il monitoraggio e altri usi di base, ma non fornisce il livello di dettaglio generalmente richiesto per il controllo.

In questo blog, vedremo cos'è l'estensione pgAudit e come installarla e usarla nel tuo database PostgreSQL usando ClusterControl.

Cos'è pgAudit?

L'estensione di verifica PostgreSQL (pgAudit) fornisce una registrazione dettagliata di verifica delle sessioni e degli oggetti tramite la funzione di registrazione standard di PostgreSQL.

Non è sufficiente avere un elenco di tutte le operazioni eseguite sul database. Deve inoltre essere possibile trovare dichiarazioni particolari che interessano un revisore dei conti. La funzione di registrazione standard mostra ciò che l'utente ha richiesto, mentre pgAudit si concentra sui dettagli di ciò che è accaduto mentre il database stava soddisfacendo la richiesta.

Abilitazione di pgAudit con ClusterControl

Per questo esempio, assumiamo che ClusterControl sia installato e che stia gestendo il tuo database PostgreSQL. Altrimenti, puoi seguire questo post del blog per farlo funzionare in modo semplice, utilizzando ClusterControl.

Interfaccia utente ClusterControl

Dalla versione ClusterControl 1.8.2, introdotta di recente, è possibile abilitare facilmente il plug-in pgAudit dall'interfaccia utente di ClusterControl. Per abilitarlo, vai su ClusterControl -> Seleziona il tuo cluster PostgreSQL -> Scheda Sicurezza -> Registro di controllo -> Abilita.

Dovrai specificare gli eventi che vuoi controllare nel tuo PostgreSQL grappolo. PgAudit sarà abilitato su tutti i nodi e sarà necessario riavviare il servizio database per installarlo.

Gli eventi potrebbero essere:

  • RUOLO:Dichiarazioni relative a ruoli e privilegi:GRANT, REVOKE, CREATE/ALTER/DROP ROLE.

  • DDL:tutti i DDL non inclusi nella classe ROLE.

  • MISC:comandi vari, ad es. SCART, RECUPERARE, CHECKPOINT, VUOTO, SET.

  • LEGGI:​​SELEZIONA e COPIA quando la fonte è una relazione o una query.

  • SCRIVI:INSERT, UPDATE, DELETE, TRUNCATE e COPY quando la destinazione è una relazione.

  • FUNZIONE:chiamate di funzioni e blocchi DO.

  • TUTTI:includi tutto quanto sopra.

Puoi monitorare la tua installazione di pgAudit nella sezione Attività ClusterControl.

Al termine, puoi controllare il log di pgAudit nella stessa interfaccia utente di ClusterControl. Per questo, vai su ClusterControl -> Seleziona il tuo cluster PostgreSQL -> Scheda Registri -> Registri di sistema.

Qui troverai tutte le informazioni necessarie per controllare il tuo database PostgreSQL.

CLI ClusterControl

Invece di abilitare pgAudit dall'interfaccia utente di ClusterControl, un'altra opzione consiste nell'utilizzare ClusterControl CLI per eseguire il lavoro. A tale scopo, è possibile eseguire il seguente comando dal server ClusterControl:

$ s9s cluster --setup-audit-logging --cluster-id=ID

Dove ID è l'ID del cluster PostgreSQL.

Mentre è in esecuzione, puoi monitorare lo stato controllando il lavoro ClusterControl. Innanzitutto, avrai bisogno dell'ID lavoro, che puoi ottenere dall'elenco dei lavori:

$ s9s job --list
1600  48 RUNNING  test_dba                     admins 18:49:36            90% Setup Audit Logging

Ora, controlla i dettagli del lavoro:

$ s9s job --log --job-id=1600
Using SSH credentials from cluster.
Cluster ID is 48.
The username is 'root'.]
10.10.10.139:5432: Configuring audit logging.
10.10.10.139:5432: Installing 'pgaudit15_13'.
10.10.10.139: Installing pgaudit15_13.
10.10.10.139:5432: Setting pgaudit.log to ROLE,DDL,MISC.
Writing file '10.10.10.139:/var/lib/pgsql/13/data/postgresql.conf'.
10.10.10.139:5432: Restarting PostgreSQL node.
10.10.10.139: waiting for server to shut down.... done
server stopped
waiting for server to start....2021-03-24 18:49:43.468 UTC [16098] LOG:  pgaudit extension initialized
2021-03-24 18:49:43.505 UTC [16098] LOG:  redirecting log output to logging collector process
2021-03-24 18:49:43.505 UTC [16098] HINT:  Future log output will appear in directory "log".
 done
server started
10.10.10.139:5432: Waiting for node to be accessible.
10.10.10.139:5432: pgaudit 1.5.0 is enabled.

Questa azione richiederà il riavvio del servizio database che verrà eseguito da ClusterControl nella stessa attività. Dopo averlo riavviato, l'estensione pgAudit è abilitata e pronta per l'uso:

postgres=# SELECT * FROM pg_available_extensions WHERE name LIKE '%audit%';
  name   | default_version | installed_version |             comment
---------+-----------------+-------------------+---------------------------------
 pgaudit | 1.5             | 1.5               | provides auditing functionality
(1 row)

Conclusione

Il controllo è richiesto per molte normative di sicurezza. Viene utilizzato per sapere cosa è successo al tuo database, quando è successo e chi ne è responsabile.

In questo blog, abbiamo parlato dell'estensione pgAudit PostgreSQL come un buon modo per controllare i database PostgreSQL. Ti abbiamo anche mostrato come implementarlo rapidamente con ClusterControl dall'interfaccia utente e utilizzando ClusterControl CLI.

Tieni presente che, a seconda della configurazione, pgAudit può generare un enorme volume di dati. Quindi, dovresti fare attenzione a determinare cosa devi controllare e per quanto tempo.