Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Logging SELECT statements in PostgreSQL 8.4

I've got a table which contains sensitive data and according to data protection policy we have to keep a record of every read/write of the data including a row identifier and the user who accessed the table. The writing is no issue using triggers but triggers aren't supported for SELECT statements.

What's the best method of doing this? I've looked at rules but I can't get them to INSERT into a table, and I've tried logging every query but this doesn't seem to log SELECT statements. Ideally for security I'd like to keep the log within a table on the database but logging to a file is fine too.

Thanks,
David

like image 219
David Anniwell Avatar asked Oct 15 '22 07:10

David Anniwell


2 Answers

You could enable SENTENCE LOGGING in PostgreSQL:

In postgresql.conf:

log_statement = 'all'                   # none, ddl, mod, all

Then restart your database and all senteces will be logged.

like image 178
Pablo Santa Cruz Avatar answered Oct 19 '22 03:10

Pablo Santa Cruz


You can take either take the log files and import them into the database using the cvslog format, or setup something like syslog-ng to put the messages back into postgres or some other database.

like image 24
h0tw1r3 Avatar answered Oct 19 '22 02:10

h0tw1r3