Files
security-alert-center/docs/todo-2026-05-29.md
T
PTah ebb450be92 feat: global notification policy severity to channels (notif-22)
Singleton notification_policy table, NOTIFY_MIN_SEVERITY/CHANNELS env,
central dispatch gate, Settings policy UI, migration 007.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-29 16:19:26 +10:00

5.2 KiB
Raw Blame History

ToDo — 29.05.2026 (оповещения SAC + «Настройки»)

Контекст: при UseSAC=exclusive на агентах Telegram/email с хоста не идут — оператору нужны оповещения из SAC. Аналитика и прочее — отдельно (analytics-backlog.md).


Уже есть в коде (не путать с «ещё не сделано»)

Что Где Ограничение
Telegram из SAC backend/app/services/telegram_notify.py Только если в sac-api.env: TELEGRAM_ENABLED=true, токен, chat_id
Порог severity telegram_min_severity (по умолчанию high) События info (успешный RDP rdp.login.success) не уходят в TG, пока порог не снизить до warning
Вызов при ingest events.pynotify_event / notify_problem Шаблон короткий («🚨 SAC событие»), не как у агента
UI «Настройки» /settings, GET/PUT Telegram БД notification_channels (миграция 004) + fallback на sac-api.env
Email / webhook TZ F-NOT-01 Email , Webhook

Вывод на завтра: для exclusive нужно (1) включить и настроить TG на сервере SAC или (2) сделать раздел «Настройки» в UI + хранение каналов; порог warning и выше для событий и problems.

Замечание по коду: notify_problem() сейчас не проверяет telegram_min_severity (в отличие от notify_event) — исправить в рамках notif-03.


Задачи (приоритет)

P0 — exclusive + Telegram

ID Задача Критерий
notif-01 Зафиксировать в agent-integration.md / runbook: при exclusive канал оповещений = SAC; рекомендуемый TELEGRAM_MIN_SEVERITY=warning docs + env.native.example
notif-02 Проверить на staging/prod: ingest rdp.login.failed (warning) → TG; rdp.login.success (info) → нет TG при min=warning чеклист testing-e2e-checklist.md § SAC Telegram
notif-03 notify_problem: учитывать telegram_min_severity unit-тест

P1 — UI «Настройки» (каналы)

ID Задача Критерий
notif-10 Маршрут /settings, пункт в сайдбаре (только admin JWT) страница + GET API
notif-11 Блок Telegram: enabled, bot token, chat id, min severity форма + GET/PUT
notif-12 Хранение: вариант A — запись в БД notification_channels + fallback на env миграция 004, PUT /notifications/telegram
notif-13 Секреты: токен не возвращать целиком в GET (маска ***…last4) GET settings
notif-14 Кнопка «Проверить Telegram» → тестовое сообщение POST …/telegram/test + UI

P2 — Email и webhook (после Telegram)

ID Задача Критерий
notif-20 SMTP: host, port, user, from, to, TLS — по аналогии с RDP login_monitor.settings PUT/test API + UI + ingest
notif-21 Webhook: URL, optional secret header, JSON payload (event/problem) PUT/test API + UI + ingest
notif-22 TZ F-NOT-02 урезанно: правило «severity ≥ X → каналы» без сложного конструктора notification_policy + UI «Правило оповещений»

P3 — Качество сообщений (можно сдвинуть)

ID Задача
notif-30 Шаблон TG ближе к агенту (HTML, поля user/ip/logon_type из details)
notif-31 Cooldown/dedup на уровне SAC (F-NOT-03) — не дублировать problem при burst
notif-32 F-NOT-05: daily report из SAC при exclusive (отдельный эпик)

Связь с агентами

UseSAC=off      → только агент (Telegram на хосте)
UseSAC=dual     → агент + SAC ingest (+ опционально SAC TG, риск дублей)
UseSAC=exclusive→ только SAC ingest; TG/email = настройки SAC (UI/env)

Оценка на день

Блок Часы (оценка)
P0 док + notif-03 + smoke 23
P1 UI Settings + API Telegram 46
P2 webhook/email +1 день

Минимум на завтра: notif-01notif-03 + черновик notif-10notif-14 (хотя бы API без полировки UI).


См. также

  • TZ.md §4.6 F-NOT-01 … F-NOT-05
  • agent-integration.md — режимы UseSAC
  • backend/app/config.pytelegram_*
  • backend/app/services/telegram_notify.py