docs: E2E checklist for SAC Telegram severity (notif-02)

Add synthetic ingest curl steps, update prod next steps for migration 004.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
PTah
2026-05-29 16:06:58 +10:00
parent 79a78dc7c9
commit f7b5fff04e
3 changed files with 63 additions and 9 deletions
+6 -6
View File
@@ -48,13 +48,13 @@ sudo /opt/sac-deploy.sh
---
## Следующие шаги
## Следующие шаги (2026-05-29)
1. **Деплой SAC**`sudo /opt/sac-deploy.sh`, `alembic upgrade head` (миграция `002_problems`)
2. **ssh-monitor на ubabuba**`update_ssh_monitor.sh` (10.10.36.9), маппинг `notify_or_sac` уже в `main`
3. **Деплой v0.2.0**`sudo /opt/sac-deploy.sh`; проверка `curl -sS https://sac.kalinamall.ru/healthz | jq .version`
4. **1C.5** — dashboard
5. RDP-login-monitor — аналог UseSAC
1. **Деплой SAC v0.5.0**`sudo /opt/sac-deploy.sh` (включает `alembic upgrade head`, миграция **`004_notification_channels`**)
2. **notif-02** — прогон [testing-e2e-checklist.md](testing-e2e-checklist.md) § «SAC Telegram» на prod
3. **Настройки UI**`/settings`: Telegram `warning+`, кнопка «Проверить Telegram»
4. **RDP 1.2.20-SAC** — NETLOGON + `Deploy-LoginMonitor.ps1` на пилотных хостах
5. Пилот **UseSAC=exclusive** на Windows — ~16.06 (см. [todo-2026-05-29.md](todo-2026-05-29.md))
---
+56 -2
View File
@@ -28,6 +28,60 @@
- [ ] Дубликат `event_id` → HTTP 409, одна строка в БД
- [ ] Правило brute-force (порог событий) → Problem
### SAC Telegram — severity и exclusive (`notif-02`)
**Предусловие:** на prod после `79a78dc+` выполнен деплой (`sudo /opt/sac-deploy.sh` → миграция **`004_notification_channels`**).
| # | Шаг | Ожидание |
|---|-----|----------|
| 1 | UI → **Настройки** → «Проверить Telegram» | Сообщение «✅ SAC: тестовое сообщение…» в чате |
| 2 | Включить Telegram, `min severity` = **warning**, сохранить (token/chat из env или форма) | GET: `source=db`, `configured=true` |
| 3 | Ingest **`rdp.login.failed`** (severity `warning`) — см. curl ниже | Telegram: «🚨 SAC событие», severity warning |
| 4 | Ingest **`rdp.login.success`** (severity `info`) — новый `event_id` | Событие в UI, **нет** сообщения в Telegram |
| 5 | Сменить `min severity` на **high**, сохранить | Повтор `failed` (warning) → **нет** TG; `high` problem → TG |
| 6 | Агент **`UseSAC=exclusive`**: неудачный вход | TG только из SAC, **не** из бота агента |
**Синтетический ingest (без RDP-хоста):** подставьте `SAC_API_KEY` и уникальный `event_id`.
```bash
API_KEY="sac_…"
BASE="https://sac.kalinamall.ru"
# warning → должен уйти в TG при min=warning
curl -sS -X POST "$BASE/api/v1/events" \
-H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
-d '{
"schema_version": "1.0",
"event_id": "00000000-0000-4000-8000-000000000101",
"occurred_at": "2026-05-29T12:00:00+03:00",
"source": {"product": "rdp-login-monitor", "product_version": "1.2.20-SAC"},
"host": {"hostname": "E2E-RDP", "os_family": "windows", "display_name": "E2E RDP test"},
"category": "auth",
"type": "rdp.login.failed",
"severity": "warning",
"title": "RDP login failed (E2E)",
"summary": "notif-02 synthetic failed login"
}'
# info → не должен уйти в TG при min=warning
curl -sS -X POST "$BASE/api/v1/events" \
-H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
-d '{
"schema_version": "1.0",
"event_id": "00000000-0000-4000-8000-000000000102",
"occurred_at": "2026-05-29T12:01:00+03:00",
"source": {"product": "rdp-login-monitor", "product_version": "1.2.20-SAC"},
"host": {"hostname": "E2E-RDP", "os_family": "windows"},
"category": "auth",
"type": "rdp.login.success",
"severity": "info",
"title": "RDP login success (E2E)",
"summary": "notif-02 synthetic success — no TG expected"
}'
```
Отметка: дата ______, оператор ______, результат TG шагов 3–4: ☐ OK / ☐ fail
## Дни 3–4: нагрузка и устойчивость
- [ ] Пакет 50+ `ssh.login.failed` с одного IP → агрегация/Problem, без зависания UI
@@ -51,5 +105,5 @@
| Компонент | Версия |
|-----------|--------|
| ssh-monitor | 1.2.6-SAC |
| RDP-login-monitor | 1.2.15-SAC |
| security-alert-center | см. `backend/app/version.py` |
| RDP-login-monitor | 1.2.20-SAC |
| security-alert-center | 0.5.0 (`backend/app/version.py`) |
+1 -1
View File
@@ -27,7 +27,7 @@
| ID | Задача | Критерий |
|----|--------|----------|
| `notif-01` | Зафиксировать в `agent-integration.md` / runbook: при **exclusive** канал оповещений = SAC; рекомендуемый `TELEGRAM_MIN_SEVERITY=warning` | ✅ docs + `env.native.example` |
| `notif-02` | Проверить на staging: ingest `rdp.login.failed` (warning) → TG; `rdp.login.success` (info) → нет TG при `min=warning` | Чеклист в E2E |
| `notif-02` | Проверить на staging/prod: ingest `rdp.login.failed` (warning) → TG; `rdp.login.success` (info) → нет TG при `min=warning` | ✅ чеклист [testing-e2e-checklist.md](testing-e2e-checklist.md) § SAC Telegram |
| `notif-03` | `notify_problem`: учитывать `telegram_min_severity` | ✅ unit-тест |
### P1 — UI «Настройки» (каналы)