Files
security-alert-center/docs/testing-e2e-checklist.md
T
PapaTramp 415d863b3b feat: SAC daily reports from DB aggregation (notif-32)
- Aggregate report.daily.ssh/rdp from 24h ingest; job and systemd timer

- notify_daily_report bypasses NOTIFY_MIN_SEVERITY; ingest routes agent reports

- HTML templates, env SAC_DAILY_REPORT_*, docs and tests (56 cases)

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

5.5 KiB
Raw Blame History

E2E и нагрузочное тестирование SAC + агенты

Чеклист после freeze MVP (work-plan.md). Отмечайте дату и хост.

Дни 1–2: функциональный E2E

Linux (ssh-monitor, UseSAC=dual или exclusive)

  • ssh-monitor --check-sac → HTTP 201/202, событие agent.test в UI
  • Успешный SSH login → ssh.login.success в SAC + Telegram (dual)
  • Неудачный SSH → ssh.login.failed
  • SERVER_DISPLAY_NAME задан → в SAC Хосты отображается display name
  • Heartbeat → agent.heartbeat, хост не stale в пределах SAC_HEARTBEAT_STALE_MINUTES
  • Daily report → report.daily.ssh (агент или SAC: python -m app.jobs.daily_report --force, details.generated_by)

Windows (RDP-login-monitor, UseSAC=dual)

  • -CheckSac → ingest OK
  • Старт монитора → agent.lifecycle в SAC (HTTP 201), Telegram «ЗАПУЩЕН»
  • Версия в UI Хосты = $ScriptVersion после деплоя
  • $ServerDisplayName → display name в SAC
  • 4624/4625 (тестовый вход) → rdp.login.* при наличии событий
  • Dashboard: новое событие появляется в «Последние события» без F5 (~5 с)

SAC UI

  • Problems: open → ack → resolve
  • Дубликат 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.

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
  • Повтор ingest с тем же event_id → 409
  • Остановка SAC API → spool на агенте, восстановление после /health
  • Flapping heartbeat: stale → warning в health / хостах

День 5: регресс

  • Обновление RDP через Deploy: одна версия в deployed_version.txt, ingest после 1.2.14+ JSON
  • sac-retention.timer active; ручной systemctl start sac-retention.service — exit 0
  • Известные issues занесены в issue tracker / known-issues.md

Дни 67: soak

  • 4872 ч dual mode: нет роста spool без причины, диск БД в норме
  • Только bugfix по результатам выше

Версии на момент чеклиста

Компонент Версия
ssh-monitor 1.2.6-SAC
RDP-login-monitor 1.2.20-SAC
security-alert-center 0.5.0 (backend/app/version.py)