Аудит в MIS3 — различия между версиями
Материал из ИбисоПедии
Admin (обсуждение | вклад) (→Просмотр) |
Admin (обсуждение | вклад) |
||
| (не показано 5 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
| + | Внимание аудит данных изменился и стал как в КИС | ||
| + | |||
| + | см [[АУДИТ в KIS]] | ||
| + | |||
Существуют следующие виды аудита | Существуют следующие виды аудита | ||
* Аудит изменения данных | * Аудит изменения данных | ||
| Строка 4: | Строка 8: | ||
== Аудит изменения данных == | == Аудит изменения данных == | ||
| − | # Аудит данных осуществляется посредством | + | # Аудит данных осуществляется посредством триггеров на таблицы |
# Триггеры имеют название: audit_trigger% | # Триггеры имеют название: audit_trigger% | ||
# Данные аудита хранятся в схеме audit | # Данные аудита хранятся в схеме audit | ||
| Строка 21: | Строка 25: | ||
=== Выключение аудита === | === Выключение аудита === | ||
| − | + | ||
DROP TRIGGER if exists audit_trigger_row ON &table_name ; | DROP TRIGGER if exists audit_trigger_row ON &table_name ; | ||
DROP TRIGGER if exists audit_trigger_stm ON &table_name ; | DROP TRIGGER if exists audit_trigger_stm ON &table_name ; | ||
| − | |||
== Просмотр == | == Просмотр == | ||
Ниже примеры: | Ниже примеры: | ||
| − | <source | + | <source> |
SELECT a.action_tstamp_tx, | SELECT a.action_tstamp_tx, | ||
a.table_name, | a.table_name, | ||
| Строка 44: | Строка 47: | ||
</source> | </source> | ||
| − | <source | + | <source> |
-- все снятые подписи | -- все снятые подписи | ||
SELECT a.action_tstamp_tx, | SELECT a.action_tstamp_tx, | ||
| Строка 60: | Строка 63: | ||
and a.row_data -> 'naz_state_id' in ('1', '6','7','8','9') | and a.row_data -> 'naz_state_id' in ('1', '6','7','8','9') | ||
and a.changed_fields -> 'naz_state_id' = '2' | and a.changed_fields -> 'naz_state_id' = '2' | ||
| + | |||
</source> | </source> | ||
| + | |||
| + | -- Изменение по определенной ИБ | ||
| + | <source> | ||
| + | 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 | ||
| + | |||
| + | </source> | ||
| + | |||
=== Просмотр истории изменения из форм наследников TfmWinOnTask === | === Просмотр истории изменения из форм наследников TfmWinOnTask === | ||
| Строка 72: | Строка 97: | ||
== Восстановление данных из аудита == | == Восстановление данных из аудита == | ||
| − | + | ||
select (populate_record(null::mm.ambticket, a.row_data)).* | select (populate_record(null::mm.ambticket, a.row_data)).* | ||
FROM audit.logged_actions a | FROM audit.logged_actions a | ||
| Строка 79: | Строка 104: | ||
AND a.row_data -> 'mdoc_id' = '9992' | AND a.row_data -> 'mdoc_id' = '9992' | ||
and a.action_tstamp_tx = '2016-02-08 13:56:39.021+03' | and a.action_tstamp_tx = '2016-02-08 13:56:39.021+03' | ||
| − | + | ||
== Аудит входа / выхода == | == Аудит входа / выхода == | ||
Текущая версия на 08:39, 20 января 2025
Внимание аудит данных изменился и стал как в КИС
см АУДИТ в KIS
Существуют следующие виды аудита
- Аудит изменения данных
- аудит входа/выхода
Содержание
Аудит изменения данных
- Аудит данных осуществляется посредством триггеров на таблицы
- Триггеры имеют название: audit_trigger%
- Данные аудита хранятся в схеме audit
- Пока Существуют два хранилища аудита:
- audit.logged_action_dict - справочники
- audit.logged_action - все остальное
- Хранилище к которому относится аудит конкретной таблицы можно получить из таблицы 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'-- все снятые подписи
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"
Для этого необходимо:
- Заполнить запись в таблице mm.entity (Справочники -> система и пользователи -> Сущности). Прописать два SQL-запроса для просмотра аудита.
- В форме 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
Внимание: Папку с логами нужно периодически чистить.