Перейти к содержимому

Журнал аудита

Журнал аудита, по адресу /audit, - это реестр. Каждое событие несёт SHA-256-хеш своего содержимого и хеш предыдущего события, а затем подпись Ed25519 той машины, которая его записала.

Журнал утверждает, что prev каждой строки равен hash строки под ней, и показ обеих колонок позволяет проверить это утверждение глазами. Одинокая зелёная галочка, которая всегда говорит verified, никого ничему не учит, и ей невозможно не доверять.

  • ⟳ Verify перечитывает сам журнал - не индекс - и заново проходит цепочку. Сверка производной копии с самой собой ничего бы не доказала.
  • Rebuild выбрасывает поисковый индекс и переигрывает журнал в новый. Безопасно в любой момент.
  • Колонка sig отмечает любое событие, чья подпись не совпадает с его хешем.

Отредактируйте одну строку журнала вручную - и каждое событие после неё провалит проверку, потому что каждый хеш покрывает предыдущий. Удаление хвоста - единственная правка, которую цепочка не видит; именно поэтому журнал реплицируется, а не доверяется одной машине.

Эфемерные события - присутствие, набор текста (kinds 9000-9999) - никогда не записываются. Heartbeat каждые пятнадцать секунд на трёх машинах - это четверть миллиона событий в год, которые никто никогда не прочитает.

Terminal window
curl -s localhost:3400/api/events/verify | jq
tail -f ~/.maven-teams/events/log.jsonl

Цепочка каждой машины проверяется отдельно, потому что у каждой свой файл; ok: false называет порядковый номер, на котором разрыв. Если цепочка разорвана, кто-то редактировал log.jsonl - восстановите его из резервной копии; не чините вручную.