Подсистема аудита изменения данных для PostgreSQL.
Является законченным, простым и достаточно универсальным средством, позволяющим быстро настроить протоколирование изменения данных в таблицах произвольной структуры.
Подсистема аудита располгается а отдельной схеме “audit”, включает две таблицы для хранения информации, две триггерные функции, две процедуры для включения и отключения аудита и функцию вычисления дополнительной, специфичной для приложения, информации о транзакции.
Таблица audit_context
используется для сохранения данных о транзакции (контекста) при аудите изменения данных. Несколько событий аудита могут быть объединены одной транзакцией.
Сохраняемая информация о транзакции содержит набор из типовых данных и настраиваемых данных.
Типовые данные включают:
- время начала транзакции
audit_context_begin_ts
; - время фиксации транзакции
audit_context_clock_ts
; - IP адрес клиента
audit_context_client_ip
; - пользователь при подключении
audit_context_client_user
.
Настраивамые данные сохраняются в поле audit_context_app
типа jsonb и вычисляются функцией audit_get_appctx
.
Таблица audit_block
используется для сохранения информации об изменении данных.
Сохраняемая информация содержит набор из типовых данных и настраиваемых данных.
Типовые данные включают:
- связанная транзакция
audit_context_id
, сслыка на таблицуaudit_context
; - время операции
audit_block_ts
; - IP адрес клиента
audit_context_client_ip
; - таблица, связанная с операцией
audit_block_relation
; - старые значения строки перед изменением
audit_block_backup
; - новые значения строки
audit_block_update
.
Настраивамые данные (тэги) сохраняются в поле audit_block_tags
типа jsonb.
Поля audit_block_backup
и audit_block_update
могут содержать значение NULL и комбинация NULL-значений определяет тип операции:
audit_block_backup | audit_block_update | Тип операции |
---|---|---|
NULL | {...} |
INSERT |
{...} |
{...} |
UPDATE |
{...} |
NULL | DELETE |
NULL | NULL | TRUNCATE |
Процедура audit_attach_table
с параметрами (target regclass, tags jsonb = NULL)
используется для установки триггеров аудита на заданную таблицу. Установленный триггер может содержать дополнительную необязательную информацию, указываемую в параметре tags.
Процедура audit_detach_table
с параметром (target regclass)
используется для снятия триггера у заданной таблицы.
Описание
Подсистема аудита изменения данных для PostgreSQL