Налаштування журналу подій 1С-Бітрікс
Журнал подій у Бітриксі (b_event_log) — вбудований механізм аудиту, який за замовчуванням працює у мінімальній конфігурації. З коробки він логує авторизації та критичні системні операції, але не фіксує бізнес-дії: зміни у каталозі, операції з замовленнями, дії в інфоблоках. Налаштування журналу — це приведення його у стан, коли він реально корисний для розбору інцидентів.
Включення та базова конфігурація
Управління журналом: Налаштування → Налаштування продукту → Налаштування модулів → Головний модуль → вкладка «Журнал подій».
Параметри, які потрібно задати:
- Записувати подiї — включити (за замовчуванням може бути виключено)
- Час зберігання записів — рекомендується 90 днів для продакшену, 30 днів для dev-оточення
- Типи подій — відзначити всі необхідні категорії
Типи подій, доступні у штатному налаштуванні:
| Тип | Код | Що фіксує |
|---|---|---|
| Авторизація | USER_LOGIN | Успішний вхід |
| Помилка авторизації | USER_LOGIN_FAILED | Невдалі спроби входу |
| Вихід | USER_LOGOUT | Завершення сесії |
| Зміна користувача | USER_EDIT | Редагування профілю/прав |
| Зміна прав | GROUP_POLICY_CHANGED | Зміна політик безпеки |
| Файлові операції | FILE_DELETE | Видалення через файловий менеджер |
Перегляд та фільтрація
Журнал доступний у Налаштування → Інструменти → Журнал подій. Інтерфейс підтримує фільтрацію по:
- Типу поді (
AUDIT_TYPE_ID) - Модулю (
MODULE_ID) - Користувачу (
USER_ID) - Періоду (
TIMESTAMP_X) - Рівню важливості (
SEVERITY: INFO, WARNING, SECURITY)
Проблема штатного інтерфейсу — відсутність повнотекстового пошуку по полю DESCRIPTION. Якщо потрібно знайти конкретну зміну, використовуйте SQL:
SELECT * FROM b_event_log
WHERE AUDIT_TYPE_ID = 'IBLOCK_ELEMENT_UPDATE'
AND DESCRIPTION LIKE '%"PRICE"%'
AND TIMESTAMP_X >= '2024-01-01'
ORDER BY TIMESTAMP_X DESC
LIMIT 100;
Розширення списку подій
Штатний набір подій покриває безпеку, але не бізнес-логіку. Для додавання кастомних типів подій використовуйте CEventLog::Add():
CEventLog::Add([
'SEVERITY' => 'INFO',
'AUDIT_TYPE_ID' => 'CUSTOM_ORDER_STATUS',
'MODULE_ID' => 'sale',
'ITEM_ID' => $orderId,
'DESCRIPTION' => "Статус змінений: $oldStatus → $newStatus",
]);
Кастомні типи автоматично з'являються у фільтрі журналу. Рекомендується використовувати префікс (CUSTOM_) для відтинку від штатних типів.
Налаштування автоочистки
Без ротації таблиця b_event_log розростається до сотень тисяч записів. Автоочистка налаштовується через агент:
CAgent::AddAgent(
"CEventLog::CleanUpAgent();",
"main",
"N",
86400 // раз на день
);
Агент видаляє записи старше строку, заданого у налаштуваннях модуля. Якщо потрібен архів — перед очисткою експортуйте дані через CEventLog::GetList() у CSV або окремої таблиці.
Моніторинг безпеки через журнал
Практичний мінімум для відслідковування підозрілої активності:
-
Брутфорс — більше 5 записів
USER_LOGIN_FAILEDз одної IP за 10 хвилин -
Еzkалація привілеїв — подія
USER_EDITзі змін групи на адміністраторську - Масове видалення — серія подій видалення елементів за короткий промiжок
Для автоматичного сповіщення про ці ситуації потребуватиме окремий скрипт-аналізатор, запускається по cron, який парсить свіжі записи та відправляє сповіщення через CEvent::Send().
Налаштування журналу подій — задача на один робочий день. Результат: повна видимість критичних дій користувачів з ротацією та можливістю швидкого пошуку по інцидентах.







