Files
security-alert-center/docs/work-plan.md
T
PTah d1b89c75dd docs: add 2-day delivery and hourly checklist
Add execution checklist for next two development days and a follow-up week of testing in work-plan.md.
2026-05-27 16:12:56 +10:00

152 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План работ — Security Alert Center
**Актуальный порядок:** сначала подготовка агентов (параллельно с минимальным SAC ingest), затем полный SAC MVP, затем prod rollout `UseSAC=exclusive`.
---
## Фаза 0. Документация ✅
| # | Задача | Статус |
|---|--------|--------|
| 0.1–0.3 | ТЗ, архитектура, схема, deployment | ✅ |
| 0.5 | Репозиторий git.kalinamall.ru | ✅ |
| 0.6 | Multi-root workspace | ✅ |
---
## Фаза 1A. Агенты — контракт SAC (параллельно с 1B)
**Репозитории:** `ssh-monitor`, `RDP-login-monitor`
**Прод:** везде `UseSAC=off` по умолчанию.
| # | Задача | Статус |
|---|--------|--------|
| 1A.1 | Параметры `UseSAC`, `SAC_URL`, `SAC_API_KEY`, spool | ✅ ssh-monitor |
| 1A.2 | `build_sac_event()` + `send_sac_event()` по schema v1 | ✅ `sac-client.sh` |
| 1A.3 | `notify_or_sac()`: off / dual / exclusive / fallback | ✅ + маппинг событий |
| 1A.4 | `--check-sac` / `Test-SacConnection` | ✅ ssh-monitor `--check-sac` |
| 1A.5 | README агентов, first deploy | ✅ `first_deploy.sh`, `--deploy` |
**Выход:** на тестовом хосте `dual` шлёт JSON в SAC + Telegram.
---
## Фаза 1B. SAC — минимальный ingest ✅ (prod)
| # | Задача | Статус |
|---|--------|--------|
| 1B.1 | Scaffold backend FastAPI | ✅ |
| 1B.2 | PostgreSQL + Alembic (hosts, events, api_keys) | ✅ |
| 1B.3 | `POST /api/v1/events`, `GET /health` | ✅ prod `sac.kalinamall.ru` |
| 1B.4 | systemd + nginx + TLS | ✅ |
| 1B.5 | Валидация JSON Schema v1 | ✅ |
**Выход:** ingest с curl и UI на prod — достигнут.
---
## Фаза 1C. SAC — MVP UI и оповещения
| # | Задача | Статус |
|---|--------|--------|
| 1C.1 | Frontend Vue: Events, Hosts | ✅ prod |
| 1C.2 | Auth JWT, admin bootstrap | ✅ prod |
| 1C.3 | Problems (базовые правила) | ✅ API + UI (деплой ⏳) |
| 1C.4 | Telegram из SAC | ✅ backend (деплой + TELEGRAM_* в env) |
| 1C.5 | Dashboard (3 виджета), SSE | ✅ v0.2.0 |
**Выход:** тег `v0.2.0-mvp`.
---
## Фаза 2. Пилот и exclusive
| # | Задача |
|---|--------|
| 2.1 | E2E: 1 Linux + 1 Windows, `UseSAC=exclusive` | ✅ Linux [pilot-2.1-exclusive.md](pilot-2.1-exclusive.md) |
| 2.2 | Daily report / heartbeat через SAC | ✅ [pilot-2.2-heartbeat-reports.md](pilot-2.2-heartbeat-reports.md) |
| 2.3 | fallback на агентах | ✅ счётчик `SAC_FALLBACK_FAILURES` в sac-client |
**Выход:** `v0.2.0`.
---
## Фаза 3. Эксплуатация
См. [roadmap.md](roadmap.md).
---
## Ближайшие 2 дня (чеклист исполнения)
### День 1
- [ ] `d1-1` Ingest: `event_id` UUID обязателен, UNIQUE индекс, коды duplicate, логи, docs/schema
- [ ] `d1-2` MVP Problems: модель, корреляция `host+type+окно`, API `GET/ack/resolve`
- [ ] `d1-3` Правила v1: `brute-force burst`, `privilege spike`, `host silence`
### День 2
- [ ] `d2-1` UI Problems: список, фильтры, `Ack/Resolve`, карточка с таймлайном
- [ ] `d2-2` Dashboard: top hosts/types, `open vs resolved 24h`, drill-down
- [ ] `d2-3` Ops: retention, health checks, runbook backup/restore/deploy
- [ ] `dod` DoD: нет дублей `event_id`, Problems e2e, 3 правила, UI MVP, docs, push в kalinamall
### Почасовой чеклист
#### День 1
- [ ] `09:0010:00` миграция `event_id` + UNIQUE, валидация ingest
- [ ] `10:0011:00` поведение duplicate (`201/409`) и логирование reject
- [ ] `11:0012:00` обновить `event-schema-v1.json` и `agent-integration.md`
- [ ] `13:0014:30` модель Problems + миграция
- [ ] `14:3016:00` корреляция при ingest (`fingerprint`, `count`, `last_seen`)
- [ ] `16:0017:30` API `GET /problems`, `ack`, `resolve` + smoke
- [ ] `18:0019:00` правила `brute/privilege/silence` + unit tests
#### День 2
- [ ] `09:0011:00` UI Problems: таблица + фильтры (`status/severity/host`)
- [ ] `11:0012:00` карточка проблемы + таймлайн событий
- [ ] `13:0014:30` Dashboard: виджеты top hosts/types
- [ ] `14:3016:00` Dashboard: `open/resolved 24h` + drill-down
- [ ] `16:0017:00` retention job (`events 3090d`, `problems 180d+`)
- [ ] `17:0018:00` health checks (DB/worker/heartbeat stale)
- [ ] `18:0019:00` runbook + финальный push в kalinamall + freeze dev
### Неделя после freeze (только тестирование)
- [ ] `дни 12` функциональные E2E (`RDP + SSH + mixed load`)
- [ ] `дни 34` нагрузка, дубликаты, флаппинг heartbeat
- [ ] `день 5` регресс + known issues
- [ ] `дни 67` soak-test, только bugfix
---
## Gantt (упрощённо)
```mermaid
gantt
title SAC — актуальный план
dateFormat YYYY-MM-DD
section Документы
Фаза 0 :done, 2026-05-26, 1d
section SAC
1B ingest+deploy :done, 2026-05-26, 1d
1C UI базовый :done, 2026-05-26, 1d
1C notify+dash :active, 2026-05-27, 14d
section Агенты
1A UseSAC dual :2026-05-26, 10d
section Prod
Пилот exclusive :2026-06-16, 7d
```
---
## См. также
- [install-ubuntu-24.04.md](install-ubuntu-24.04.md) — подготовка сервера
- [operations-prod-status.md](operations-prod-status.md) — статус prod и деплой
- [roadmap.md](roadmap.md)
- [TZ.md](TZ.md)