Перейти до вмісту

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

Журнал аудиту, за адресою /audit, - це реєстр. Кожна подія несе SHA-256-хеш свого вмісту та хеш попередньої події, а потім підпис Ed25519 від машини, яка її записала.

Показано обидва стовпці хешів

Section titled “Показано обидва стовпці хешів”

Журнал стверджує, що prev кожного рядка дорівнює hash рядка під ним, і показ обох дозволяє перевірити це твердження на око. Одна зелена галочка, яка завжди каже verified, нікого нічого не навчить, і їй неможливо не довіряти.

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

Відредагуйте один рядок журналу вручну - і кожна подія після нього не пройде перевірку, бо кожен хеш охоплює попередній. Видалення хвоста - єдина правка, якої ланцюжок не бачить, - саме тому журнал реплікується, а не довіряється одній машині.

Ефемерні події - присутність, набір тексту (види 9000-9999) - ніколи не записуються. Серцебиття кожні п’ятнадцять секунд на трьох машинах - це чверть мільйона подій на рік, яких ніхто ніколи не прочитає.

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

Ланцюжок кожної машини перевіряється окремо, бо кожен із них - окремий файл; ok: false називає порядковий номер, де стався розрив. Якщо ланцюжок зламано, хтось редагував log.jsonl - відновіть його з резервної копії; не лагодьте вручну.