From f7b5fff04e00dd25659007a2180503af3756f44d Mon Sep 17 00:00:00 2001 From: PTah Date: Fri, 29 May 2026 16:06:58 +1000 Subject: [PATCH] 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 --- docs/operations-prod-status.md | 12 +++---- docs/testing-e2e-checklist.md | 58 ++++++++++++++++++++++++++++++++-- docs/todo-2026-05-29.md | 2 +- 3 files changed, 63 insertions(+), 9 deletions(-) diff --git a/docs/operations-prod-status.md b/docs/operations-prod-status.md index 8b5caee..f3e601f 100644 --- a/docs/operations-prod-status.md +++ b/docs/operations-prod-status.md @@ -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)) --- diff --git a/docs/testing-e2e-checklist.md b/docs/testing-e2e-checklist.md index 9a192bc..47533f8 100644 --- a/docs/testing-e2e-checklist.md +++ b/docs/testing-e2e-checklist.md @@ -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`) | diff --git a/docs/todo-2026-05-29.md b/docs/todo-2026-05-29.md index 2babe12..03d9ba2 100644 --- a/docs/todo-2026-05-29.md +++ b/docs/todo-2026-05-29.md @@ -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 «Настройки» (каналы)