Регистрация операторов SELECT в PostgreSQL 8.4 - PullRequest
4 голосов
/ 16 апреля 2010

У меня есть таблица, которая содержит конфиденциальные данные, и в соответствии с политикой защиты данных мы должны вести учет каждого чтения / записи данных, включая идентификатор строки и пользователя, который получил доступ к таблице. Запись не является проблемой при использовании триггеров, но триггеры не поддерживаются для SELECT операторов.

Какой лучший способ сделать это? Я посмотрел на правила, но я не могу получить их в INSERT в таблицу, и я пытался регистрировать каждый запрос, но это не похоже на запись операторов SELECT. В идеале, для безопасности, я хотел бы хранить журнал в таблице базы данных, но запись в файл тоже подойдет.

Спасибо,
David

Ответы [ 2 ]

3 голосов
/ 16 апреля 2010

Вы можете включить SENTENCE LOGGING в PostgreSQL:

В postgresql.conf:

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

Затем перезапустите базу данных, и все сообщения будут зарегистрированы.

1 голос
/ 18 апреля 2010

Вы можете взять файлы журнала и импортировать их в базу данных, используя формат cvslog , или настроить что-то вроде syslog-ng , чтобы вернуть сообщения в postgres или некоторые другие. другая база данных.

...