Към съдържанието
N1
CRM / Bitrix24 · наблюдаемост · сигурност

Основа за on-premise Bitrix24: логове, известия, клиент за 1С и одит на сигурността

Клиент: Автомобилен маркетплейс, NDA Категория: CRM / Bitrix24 Стек: PHP 8.3, Bitrix24 D7, JSONL логове, Telegram Bot API, nginx, cron Срок: внедрявано поетапно
Проблем

Кастомният слой на портала растеше с години: около 20 собствени логера в 8 различни директории, нито едно известие, около 50 „сурови“ curl извиквания към 1С (основното — без таймаут), 21 хардкоднати токена и 7 несъгласувани нормализатора на телефони. За сривовете се научаваше от мениджърите.

Ограничения

Порталът работи за продажбите всеки ден — промени са възможни само точково, с бекъп на всеки файл; продукцията се разминава с git, затова файловете не могат да се качват изцяло.

Какво направих
  • Анализ на 454 PHP файла: общите обвивки са избрани по реалния брой извиквания, а не по вкус
  • Единен JSONL логер с request id по цялата верига и маскиране на лични данни; critical грешка веднага отива като известие в Telegram и в чата на портала, с дедупликация
  • Стандартен клиент за 1С: таймаути и повторни опити само за идемпотентни заявки — повторен POST би създал втори документ в 1С
  • Преглед на логовете с търсене по цялата верига, health endpoint за мониторинг и ротация: първият прогон сви 1087 МБ до 30 МБ
  • Одит на сигурността: затворен е анонимният достъп до действията по сделка, приемането от 1С е ограничено до нейните адреси, файловете с токени и лични данни са премахнати от публичен достъп
  • Над 15 cron задачи и помощни скрипта са превключени само към CLI, уебхукът е ротиран, в CSV експортите е затворена formula injection
Архитектура
Модули на портала → Core: логер, клиент за 1С, известия → JSONL логове с request id → Известия в Telegram и чата → Преглед на логове и health
Резултат

Сривовете станаха видими в момента на възникване, а не след оплакване: critical грешка пристига като известие, всяка заявка се проследява по request id. Всичко, открито при одита, е затворено с точкови внедрявания с бекъп — след тях 0 отговора 5xx.

Какво може да се преизползва
Единен логер с маскиране на лични данни и известия Клиент за 1С с безопасна политика за повторни опити Преглед на логове с health endpoint