Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso utilizzare l'estensione pgAudit per eseguire l'audit della mia istanza database Amazon RDS per PostgreSQL?
Desidero eseguire l'audit di tutti i miei database, ruoli, relazioni e colonne nella mia istanza database Amazon Relational Database Service (Amazon RDS) per PostgreSQL. Inoltre, desidero configurare l'estensione pgAudit per fornire diversi livelli di audit a diversi ruoli.
Risoluzione
Esistono diversi parametri che puoi impostare per registrare l'attività sulla tua istanza database RDS per PostgreSQL. Dopo aver attivato l'estensione pgAudit, puoi configurare il parametro pgaudit.log per controllare database, ruoli, tabelle e colonne specifici. Innanzitutto, imposta il valore del parametro pgaudit.log su none nel gruppo di parametri per un database, un ruolo o una tabella:
> show pgaudit.log;+---------------+ | pgaudit.log | |---------------| | none | +---------------+ SHOW
Utilizzo dell'estensione pgAudit per eseguire l'audit dei database
Completa i passaggi seguenti:
- Esegui il comando seguente per sovrascrivere la configurazione di sistema per il parametro pgaudit.log solo nel tuo database:
Nota: sostituisci test\ _database con il nome del database. Il comando precedente modifica il valore del parametro pgaudit.log in All in modo che pgAudit esegua l'audit solo di test_database.ALTER DATABASE test_database set pgaudit.log='All'; - Connettiti al database, quindi esegui la seguente query per eseguire l'audit del database:
Nota: sostituisci aud\ _table con la tabella di cui desideri eseguire l'audit.select * from aud_table;
L'output del log di errori è simile al seguente:2019-06-25 19:21:35 UTC:192.0.2.7(39330):testpar@test_database:[21638]:LOG: AUDIT: SESSION,2,1,READ,SELECT,,,select * from test_table;,<not logged>
Utilizzo dell'estensione pgAudit per eseguire l'audit dei ruoli
È anche possibile modificare i ruoli nel parametro pgaudit.log per avere valori diversi. Per impostare valori diversi per il parametro pgaudit.log per i tuoi ruoli, esegui i seguenti comandi:
ALTER ROLE test1 set pgaudit.log='All';
ALTER ROLE test2 set pgaudit.log='DDL';
Nota: sostituisci test1 e test2 con i nomi dei tuoi ruoli.
Per verificare se le modifiche vengono apportate a livello di ruolo, esegui la seguente query:
> select rolname,rolconfig from pg_roles where rolname in ('test1',' test2'); +-----------+----------------------+ | rolname | rolconfig | |-----------+----------------------| | test1 | [u'pgaudit.log=All'] | | test2 | [u'pgaudit.log=DDL'] | +-----------+----------------------+ SELECT 2 Time: 0.010s
Nota: sostituisci test1 e test2 con i nomi dei tuoi ruoli.
Per testare il comportamento di registrazione di pgAudit dei ruoli, esegui le seguenti query per ciascun ruolo:
CREATE TABLE test_table (id int);CREATE TABLE
select * from test_table;id ---- (0 rows)
L'output del log per due ruoli diversi è simile agli esempi seguenti.
test1:
...2019-06-26 14:51:12 UTC:192.0.2.7(44754):test1@postgres:[3547]:LOG: AUDIT: SESSION,1,1,DDL,CREATE TABLE,,,CREATE TABLE test_table (id int);,<not logged> 2019-06-26 14:51:18 UTC:192.0.2.7(44754):test1@postgres:[3547]:LOG: AUDIT: SESSION,2,1,READ,SELECT,,,select * from test_table;,<not logged> ...
test2:
...2019-06-26 14:53:54 UTC:192.0.2.7(44772):test2@postgres:[5517]:LOG: AUDIT: SESSION,1,1,DDL,CREATE TABLE,,,CREATE TABLE test_table (id int);,<not logged> ...
Nell'output di esempio test2, non è presente una voce di audit per la query SELECT perché il parametro pgaudit.log per test2 è impostato solo su DDL. Questo test verifica che il ruolo test2 registri solo le operazioni DDL.
Utilizzo dell'estensione pgAudit per verificare le tabelle
Nota: l'estensione pgAudit può registrare solo i comandi SELECT, INSERT, UPDATE e DELETE. L'estensione non può eseguire l'audit di TRUNCATE.
Per eseguire l'audit delle tabelle, esegui il comando seguente per concedere al ruolo rds_pgaudit l'accesso ai comandi:
grant select, delete on test_table to rds_pgaudit;
Nota: il comando precedente consente al ruolo rds_pgaudit di accedere a SELECT e DELETE. Sostituisci select e delete con i comandi di cui desideri eseguire l'audit.
Per verificare che la registrazione di audit sia configurata correttamente, esegui un'istruzione sulla tabella. Il comando di esempio seguente esegue un'istruzione DELETE su test_table:
Time: 0.008s DELETE 1 >delete from test_table where pid=5050;
L'output per l'istruzione DELETE è simile al seguente:
2019-06-25 17:13:02UTC:192.0.2.7(41810):postgresql104saz@postgresql104saz:[24976]:LOG: AUDIT: OBJECT,3,1,WRITE,DELETE,TABLE,public.t1,delete from test_table where pid=5050,<not logged>
Utilizzo dell'estensione pgAudit per l'audit delle colonne
È possibile eseguire l'audit delle colonne per una tabella specifica, ad esempio quando i dati sensibili sono presenti in una sola colonna. Il seguente comando di esempio crea una tabella di retribuzioni che presenta una colonna con dati salariali sensibili che devono essere sottoposti a audit:
create table payroll( name text, salary text );
Per eseguire l'audit della colonna dei dati salariali, esegui innanzitutto il seguente comando per concedere al ruolo rds_pgaudit l'accesso a SELECT nella colonna salary:
grant select (salary) on payroll to rds_pgaudit;
Quindi, esegui il comando SELECT di seguito per selezionare tutte le colonne della tabella, inclusa la colonna salary:
select * from payroll;
Se la query SELECT non contiene la colonna salary, pgAudit non esegue l'audit di tale colonna.
Nel seguente output di esempio, pgAudit esegue l'audit di qualsiasi operazione SELECT che include la colonna salary:
2019-06-25 18:25:02 UTC:192.0.2.7(42056):postgresql104saz@postgresql104saz:[4118]:LOG: AUDIT: OBJECT,2,1,READ,SELECT,TABLE,public.payroll,select * from payroll,<not logged>
Informazioni correlate
Common DBA tasks for Amazon RDS for PostgreSQL (Attività DBA comuni per Amazon RDS per PostgreSQL)
Using pgAudit to log database activity (Utilizzo di pgAudit per registrare l'attività del database)
- Lingua
- Italiano
Video correlati

