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>
This commit is contained in:
2026-05-29 16:19:26 +10:00
parent 9b177c145b
commit ebb450be92
19 changed files with 577 additions and 126 deletions
+7 -7
View File
@@ -50,25 +50,25 @@ $SacSpoolDir = "D:\Soft\Logs\sac-spool"
При **`exclusive`** агент **не** шлёт Telegram/email — оператору нужны оповещения **из SAC** (`backend/app/services/telegram_notify.py`).
На сервере SAC в **`/opt/security-alert-center/config/sac-api.env`** (см. `deploy/env.native.example`):
На сервере SAC **`sac-api.env`** или UI **Настройки****Правило оповещений**: один порог severity и выбор каналов (Telegram / webhook / email).
```env
NOTIFY_MIN_SEVERITY=warning
NOTIFY_CHANNELS=telegram,webhook,email
TELEGRAM_ENABLED=true
TELEGRAM_BOT_TOKEN=<bot>
TELEGRAM_CHAT_ID=<chat>
# warning — failed login, sudo, problems; high — только high/critical
TELEGRAM_MIN_SEVERITY=warning
```
| Severity события | `warning` | `high` (по умолчанию в example) |
|------------------|-----------|----------------------------------|
| Severity события | `NOTIFY_MIN_SEVERITY=warning` | `high` |
|------------------|-------------------------------|--------|
| `info` (успешный RDP/SSH login) | нет | нет |
| `warning` (`*.login.failed`, sudo) | **да** | нет |
| `high` / `critical` (ban, problem) | **да** | **да** |
Problems (`notify_problem`) учитывают тот же порог `TELEGRAM_MIN_SEVERITY`.
Events и problems используют **одно** глобальное правило (`notification_policy` в БД, миграция `007`).
UI **Настройки** (`/settings`) — просмотр и редактирование Telegram (JWT admin): значения в БД `notification_channels` с fallback на `sac-api.env`, пока запись не создана. После деплоя выполнить `alembic upgrade head` на сервере SAC.
UI **Настройки** (`/settings`) — правило + параметры каналов (JWT admin). После деплоя: `alembic upgrade head`.
### 1.4. Версии и доставка обновлений