Перейти к содержимому
РуководствоQA и инспекция

Проверить целостность цепочки аудита

Записи аудиторского следа сцеплены хешами: каждая несёт отпечаток, в расчёт которого входит отпечаток предыдущей. Проверка пересчитывает всю цепочку от начала и показывает, цела ли она, — это доказательство, что журнал не переписывали.

QA и инспекция — специалист QA или аудитор. Нужно право «запускать проверку хеш-цепочки» (audit.verify); достаточно держать его на любом уровне внутри организации, например на исследовании. Модулям это право недоступно.

Проверяйте цепочку перед инспекцией или аудитом, перед передачей выгрузки следа или инспекционного пакета, а также периодически — по вашей процедуре.

  • У вас есть право audit.verify.
  • Учтите: проверка читает весь журнал организации, а не только одного исследования, и на большом журнале занимает время.
  • Если хотите сверить голову цепочки с якорем, держите под рукой ранее собранный инспекционный пакет.
  1. Откройте исследование → Аудиторский след. Внизу экрана — блок Целостность журнала.

  2. Нажмите Проверить целостность журнала. Пока идёт пересчёт, кнопка показывает «Проверка…».

  3. Прочитайте результат:

    • Цепочка целостна — «Проверен весь журнал организации — записей: N» и Голова цепочки — отпечаток последней записи;
    • Цепочка нарушена — «Целостность журнала нарушена: запись № N» — номер (seq) первой сломанной записи.
  4. Зафиксируйте результат по вашей процедуре: дату, число проверенных записей и голову цепочки.

Администратор видит ту же проверку на обзоре Администрирование — строка Целостность журнала аудита, кнопка Проверить (затем Проверить снова). При нарушении строка предлагает Открыть журнал на сломанной записи.

Каждая сборка инспекционного пакета фиксирует голову цепочки (якорь) и кладёт в пакет всю историю якорей. Найдите в ранее сохранённом пакете последний якорь и убедитесь, что живая цепочка проходит проверку и продолжает его: записи, сделанные до якоря, не изменились.

  • Проверка только читает журнал — данные и сам журнал не меняются.
  • Пересчитывается вся цепочка организации, от первой записи до последней; диапазон не выбирается.
  • Результат остаётся на экране до ухода со страницы.
  • Нет блока «Целостность журнала» и кнопки проверки — нет права audit.verify ни на одном уровне организации. Обратитесь к администратору доступа.
  • «Не удалось выполнить проверку» — сбой выполнения (например, сеть или сервер), а не вердикт о цепочке. Повторите проверку.
  • Цепочка нарушена — это не ошибка интерфейса, а сигнал о возможном вмешательстве. Не пытайтесь «исправить» журнал: сообщите ответственному за качество, откройте журнал на указанной записи, зафиксируйте результат и сохраните последние инспекционные пакеты — их якоря нужны для расследования.

Если кто-то попытается изменить, удалить или вставить запись в середину — отпечатки перестанут сходиться. Проверка обнаруживает правку содержимого, удаление записи, вставку в середину (разрыв нумерации) и подмену причины.

Таблица аудита защищена триггерами PostgreSQL, а рантайм-роль приложения лишена прав менять журнал. Обладатель прав владельца схемы или суперпользователя СУБД технически может снять защиту — но не незаметно: якоря в ранее выданных инспекционных пакетах покажут расхождение. Сам пакет служит внешним write-once носителем: сложив его в собственное WORM- или eTMF-хранилище, вы получаете датированную копию, с которой позже сверяется живая цепочка. Это позволяет доказать целостность, даже если предположить, что кто-то с доступом к базе пересчитал всю цепочку целиком. Регулярность якорения задаёт ваша процедура сборки пакетов.