Аудит в MIS3

Материал из ИбисоПедии
Перейти к: навигация, поиск

Существуют следующие виды аудита

  • Аудит изменения данных
  • аудит входа/выхода

Аудит изменения данных

  1. Аудит данных осуществляется посредством триггров на таблицы
  2. Триггеры имеют название: audit_trigger%
  3. Данные аудита хранятся в схеме audit
  4. Пока Существуют два хранилища аудита:
  • audit.logged_action_dict - справочники
  • audit.logged_action - все остальное
  1. Хранилище к которому относится аудит конкретной таблицы можно получить из таблицы audit.table_conf. Эта таблица должна быть одинаковой на всех БД

Включение аудита

  • SELECT audit.audit_table('mm.naz');
  • в хранилище справочников: SELECT audit.audit_table_dict();
  • пример с исключающими столбцами select audit.audit_table('mm.naz_text', true, true, '{"textb"}' )

Выключение аудита

DROP TRIGGER if exists audit_trigger_row ON &table_name ; DROP TRIGGER if exists audit_trigger_stm ON &table_name ;

Просмотр

Ниже примеры:


SELECT a.action_tstamp_tx,

      a.table_name,
      a.session_user_name,
      a.client_addr,
      a.client_query,
      a.action,
      a.row_data,
      a.changed_fields

FROM audit.logged_actions a

where a.table_name = 'naz_text'  and
     schema_name = 'mm'  and
     a.row_data -> 'naz_id' = '8204'

</source>

<source lang="sql"> -- все снятые подписи SELECT a.action_tstamp_tx,

      a.TABLE_NAME,
      a.session_user_name,
      a.client_addr,
      a.client_query,
      a.action,
      a.row_data,
      a.changed_fields

FROM audit.logged_actions a

WHERE a.TABLE_NAME = 'naz'  AND
     schema_name = 'mm'  
     AND a.action_tstamp_tx >= current_date - interval '100 day'
     and a.row_data -> 'naz_state_id' in ('1', '6','7','8','9')
     and a.changed_fields -> 'naz_state_id' = '2'


-- Изменение по определенной ИБ select nd.name,naz_audit.* from

(SELECT

 (populate_record(NULL::mm.naz, a.row_data)).*, a.action_tstamp_tx,
      a.TABLE_NAME,
      a.session_user_name,
      a.client_addr,
      a.client_query,
      a.action,
      a.row_data,
      a.changed_fields

FROM audit.logged_actions a

WHERE a.TABLE_NAME = 'naz'  AND
     schema_name = 'mm'  
     AND a.row_data -> 'mdoc_id' ='6048') naz_audit left join mm.naz_dict nd on naz_audit.naz_dict_id = nd.id


Просмотр истории изменения из форм наследников TfmWinOnTask

Формы-наследники от TfmWinOnTask могут показывать аудит при нажатии на клавишу "Ctrl+Shift+H"

Для этого необходимо:

  1. Заполнить запись в таблице mm.entity (Справочники -> система и пользователи -> Сущности). Прописать два SQL-запроса для просмотра аудита.
  2. В форме WOT установить соответствующее свойство EntityName, например EntityName := 'ambticket';

Восстановление данных из аудита

select (populate_record(null::mm.ambticket, a.row_data)).* FROM audit.logged_actions a WHERE a.TABLE_NAME = 'ambticket'

     AND schema_name = 'mm'
     AND a.row_data -> 'mdoc_id' = '9992'
     and a.action_tstamp_tx = '2016-02-08 13:56:39.021+03'


Аудит входа / выхода

Работает на основе логов postgresql. Для этого необходимо включить следующие настройки

log_timezone = 'Etc/GMT-3'
log_destination = 'csvlog'
log_directory = 'pg_log'		# directory where log files are written,
logging_collector = on
log_connections = on
log_disconnections = on
log_duration = on
#log_statement = 'all'
log_statement = 'ddl'			# none, ddl, mod, all
lc_messages = 'English_English.1251'			# locale for system error message
log_filename = 'postgresql-%Y-%m-%d.log'	# log file name pattern,

Просмотреть можно на закладке Аудит, журнал входов/ выходов. Импорт данных работает только под SOFTMASTER

Warning Внимание: Папку с логами нужно периодически чистить.