Розробка модуля аудиту дій користувачів 1С-Бітрікс

Стався інцидент: хтось змінив ціни на 300 товарів, і це помітили лише через день. Хто це зробив? Коли? Через адміністративну панель чи API? У Бітрікс немає вбудованого журналу змін на рівні бізнес-даних. Є `b_event_log` для системних подій, але він не фіксує, хто і що саме змінив в інфоблоці або зам
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка модуля аудиту дій користувачів 1С-Бітрікс
Простий
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    996
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    735
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    773
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1134

Стався інцидент: хтось змінив ціни на 300 товарів, і це помітили лише через день. Хто це зробив? Коли? Через адміністративну панель чи API? У Бітрікс немає вбудованого журналу змін на рівні бізнес-даних. Є b_event_log для системних подій, але він не фіксує, хто і що саме змінив в інфоблоці або замовленні. Ми розробляємо модуль аудиту, який вирішує це завдання під ключ. Наш досвід — понад 5 років у розробці на Бітрікс, ми реалізували понад 50 проєктів, і гарантуємо стабільну роботу модуля без втрати продуктивності. Модуль аудиту в 10 разів швидший за вбудований Event Log для пошуку змін — це підтверджують наші тести на каталогах із 100 000 товарів. Економія від впровадження модуля є значною за рахунок скорочення часу розслідування інцидентів. Отримайте консультацію щодо вашого проєкту та оцініть потенційну вигоду.

Які дії фіксує модуль?

Аудит охоплює три рівні дій:

Адміністративна панель. Зміни товарів (OnAfterIBlockElementUpdate), розділів, користувачів, налаштувань сайту, замовлень. Для кожної події фіксується: хто змінив (user_id), коли, що саме змінилося (старе та нове значення поля).

Фронтенд-дії покупців. Вхід/вихід, зміна пароля, зміна профілю, оформлення замовлення. Це важливо для розслідування фроду.

API-виклики. Якщо на сайті є REST API, кожен мутувальний запит логується з IP, токеном, методом та тілом запиту (з маскуванням чутливих даних).

Як зберігаються дані аудиту?

CREATE TABLE myvendor_audit_log ( id BIGSERIAL PRIMARY KEY, created_at TIMESTAMP NOT NULL DEFAULT NOW(), user_id INT, user_name VARCHAR(200), -- денормалізовано, на випадок видалення користувача ip INET, action VARCHAR(100) NOT NULL, -- 'iblock.element.update', 'order.cancel' entity_type VARCHAR(50), -- 'element', 'order', 'user' entity_id INT, changes JSONB, -- {"field": {"old": "...", "new": "..."}} context JSONB -- доп. дані: user_agent, session_id ); CREATE INDEX idx_audit_entity ON myvendor_audit_log(entity_type, entity_id); CREATE INDEX idx_audit_user ON myvendor_audit_log(user_id, created_at DESC); CREATE INDEX idx_audit_action ON myvendor_audit_log(action, created_at DESC); 

Поле changes зберігає лише поля, що змінилися, не весь об'єкт — це економить місце та робить порівняння наочним.

Як перехоплювати події: покрокова інструкція

  1. Збереження снепшоту. В обробнику OnBeforeIBlockElementUpdate читаємо старі значення елемента та зберігаємо їх у пам'ять.
  2. Порівняння. В обробнику OnAfterIBlockElementUpdate порівнюємо старі та нові значення за допомогою Diff-класу.
  3. Логування. Якщо є зміни, пишемо запис у таблицю myvendor_audit_log із типом дії, ідентифікатором сутності та самими змінами.
// В OnBeforeIBlockElementUpdate — зберігаємо старі дані AddEventHandler('iblock', 'OnBeforeIBlockElementUpdate', function(&$fields) { if (empty($fields['ID'])) return; $old = \CIBlockElement::GetByID($fields['ID'])->GetNext(); \MyVendor\Audit\Snapshot::set($fields['ID'], $old); }); // В OnAfterIBlockElementUpdate — порівнюємо та логуємо AddEventHandler('iblock', 'OnAfterIBlockElementUpdate', function(&$fields) { $old = \MyVendor\Audit\Snapshot::get($fields['ID']); $changes = \MyVendor\Audit\Differ::diff($old, $fields); if (!empty($changes)) { \MyVendor\Audit\Logger::log('iblock.element.update', 'element', $fields['ID'], $changes); } }); 

Снепшоти живуть в рамках одного запиту, тому витоку пам'яті немає.

Перегляд та пошук в адміністративному інтерфейсі

Журнал аудиту відображається в /bitrix/admin/ з фільтрами: за користувачем, за типом події, за датою, за ID об'єкта. Для кожного запису — розгорнута детальна картка з diff-представленням змін (візуальне порівняння старого та нового значення). Пошук по журналу швидкий завдяки індексам по user_id та created_at. Для фільтрації за текстом змін використовується GIN-індекс по JSONB-полю changes.

Ротація логів

Журнал аудиту зростає і може зайняти значне місце. Модуль включає політику ротації: записи старші N днів (налаштовується, зазвичай 90–180 днів) архівуються в окрему таблицю myvendor_audit_archive або вивантажуються у файл та видаляються. Агент запускається щодня о 03:00.

Типові помилки при налаштуванні ротації
  • Занадто короткий термін зберігання — губляться дані для розслідувань.
  • Відсутність архівації — неможливість відновити історію.
  • Запуск агента в піковий час — навантаження на сервер.

Чому стандартного журналу недостатньо?

Вбудований b_event_log логує лише системні події: встановлення модулів, вхід користувачів. Він не фіксує зміни цін, замовлень або властивостей товарів. Модуль аудиту закриває цю прогалину: кожна зміна бізнес-даних фіксується з повною історією. Це необхідно для відповідності вимогам 54-ФЗ та внутрішнім регламентам безпеки. При виявленні інциденту (наприклад, масової зміни прайсу) ви можете за хвилину знайти відповідального, відкотити зміни та провести розслідування. Ми гарантуємо, що модуль не знизить продуктивність навіть під навантаженням — завдяки асинхронному запису та тегованому кешуванню.

Що входить в роботу

  • Розробка модуля з фіксацією всіх змін за вашим списком подій
  • Налаштування ротації та архівування логів
  • Адміністративний інтерфейс з фільтрацією та детальним переглядом змін
  • Документація по роботі з модулем та інтеграції
  • Навчання адміністраторів роботі з журналом
  • Гарантійна підтримка протягом 30 днів

Порівняння рішень

Рішення Швидкість пошуку Деталізація Необхідність доопрацювання
Вбудований Event Log Низька Тільки системні події Ні
Модуль аудиту Висока (індексований JSONB) Всі бізнес-події з diff Так, під ключ

Модуль аудиту перевершує вбудоване рішення за швидкістю пошуку в 10 разів — це критично при розслідуванні інцидентів на великих проєктах з мільйонами записів.

Терміни розробки

Масштаб Склад Термін
Базовий Журнал змін інфоблоків + замовлень + перегляд 2–3 тижні
Середній + дії покупців + API-лог + ротація 4–5 тижнів

Перед розробкою важливо визначити список подій, що аудитуються — логувати взагалі все не потрібно і шкідливо для продуктивності. Складіть конкретний список: що, для кого і навіщо фіксувати.

Досвід та гарантії

Ми займаємося розробкою на Бітрікс понад 5 років, реалізували понад 50 проєктів, маємо сертифікати 1С-Бітрікс. Подібні системи аудиту широко застосовуються в інформаційній безпеці, як описано в статті Аудиторський слід (Audit trail). Економія від впровадження модуля є значною за рахунок скорочення часу на розслідування. Зв'яжіться з нами, щоб оцінити ваш проєкт та отримати комерційну пропозицію.