Верифіковане логування аудиту за допомогою Laravel Chronicle

Перекладено ШІ 0 Laravel News 07 травня, 2026

Звичайні логи аудиту легко підробити, проте Laravel Chronicle пропонує рішення на основі криптографічних ланцюжків хешів. Дізнайтеся, як забезпечити абсолютну цілісність та незмінність історії дій у вашому застосунку.

Журнали аудиту корисні лише тоді, коли ви впевнені у їхній достовірності. Записи у звичайній таблиці бази даних легко підробити або непомітно видалити — і стандартні інструменти Laravel цього не зафіксують.

Laravel Chronicle від Vasileios Ntoufoudis пропонує інший підхід. Замість простого логування, пакет будує криптографічний ланцюжок хешів за допомогою SHA-256. Кожен новий запис включає хеш попереднього, що робить увесь реєстр взаємопов’язаним. Якщо змінити або видалити будь-який елемент, ланцюжок розірветься, і Chronicle зафіксує порушення цілісності.

# Як почати

composer require laravel-chronicle/core
php artisan chronicle:install

# Запис у реєстр

Для створення нового запису використовуйте метод record() фасаду Chronicle:

use Chronicle\Facades\Chronicle;
 
Chronicle::record()
    ->actor($reviewer)
    ->action('application.approved')
    ->subject($application)
    ->metadata(['from' => 'pending', 'to' => 'approved'])
    ->tags(['applications', 'workflow'])
    ->commit();

Кожен запис повинен мати автора (actor), дію (action) та об'єкт (subject). Поля metadata та tags дозволяють додати необхідний контекст для вашої бізнес-логіки.

# Пошук записів

Chronicle пропонує готові scopes для найпоширеніших запитів — за автором, об'єктом, дією чи тегом:

use Chronicle\Entry\Entry;
 
Entry::forActor($reviewer);
Entry::forSubject($application);
Entry::action('application.approved');
Entry::withTag('workflow');

Для великих реєстрів Chronicle підтримує стрімінг за допомогою database cursor. Це дозволяє зберігати стабільне споживання пам'яті незалежно від кількості даних. Метод cursorPaginateLedger() забезпечує зручну пагінацію без повного завантаження таблиці.

# Контроль цілісності даних

Окрім ланцюжка хешів, Chronicle дозволяє фіксувати стан реєстру в певний момент часу за допомогою підписаних чекпоінтів. Такий чекпоїнт містить актуальну «голову» ланцюжка, алгоритм шифрування, криптографічний підпис та часову мітку. Якщо виникне сумнів у достовірності логів, ви матимете верифікований знімок для підтвердження.

Якщо дані аудиту потрібно передати зовнішньому аудитору або зберегти копію поза межами системи, Chronicle може експортувати реєстр як підписаний набір даних:

php artisan chronicle:export

Під час експорту створюються три файли: entries.ndjson, manifest.json та signature.json. Їх можна перевірити незалежно за допомогою Artisan-команди:

php artisan chronicle:verify-export

Chronicle ідеально підходить для проєктів, де критично важлива надійність аудит-трейлів: фінансових операцій, систем безпеки або комплаєнс-процесів. Вихідний код та повна документація доступні на GitHub.

Популярні

Інше, що варто прочитати

14 Оновлено 07 травня, 2026

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше

14 Оновлено 07 травня, 2026

Claude Agent тепер інтегрований в AI Assistant для PhpStorm

Ви коли-небудь задумувалися, як полегшити свою роботу в Laravel? У нашій статті ми розглядаємо, як інтеграція Claude Code в PhpStorm може підвищити вашу продуктивність, спростивши процес написання коду та навчання нових розробників. Читайте далі, щоб дізнатися більше про переваги та функціональність цього потужного поєднання

13 Оновлено 07 травня, 2026

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!