feat: phase 1C JWT UI, events/hosts API, Vue frontend
This commit is contained in:
@@ -146,6 +146,7 @@ sudo chmod 600 /opt/security-alert-center/config/sac-api.env
|
||||
- `JWT_SECRET` — `openssl rand -hex 32`
|
||||
- `SAC_PUBLIC_URL` — `https://sac.kalinamall.ru`
|
||||
- `SAC_BOOTSTRAP_API_KEY` — `python3.12 -c "import secrets; print('sac_'+secrets.token_urlsafe(32))"`
|
||||
- `SAC_ADMIN_PASSWORD` — пароль входа в веб-UI (отдельно от API key агентов)
|
||||
- `EVENT_SCHEMA_PATH=/opt/security-alert-center/schemas/event-schema-v1.json`
|
||||
|
||||
---
|
||||
@@ -291,7 +292,24 @@ sudo certbot --nginx -d sac.kalinamall.ru
|
||||
|
||||
---
|
||||
|
||||
## 10. Проверка
|
||||
## 10. Сборка веб-UI (фаза 1C)
|
||||
|
||||
```bash
|
||||
sudo apt install -y nodejs npm
|
||||
cd /opt/security-alert-center
|
||||
sudo -u sac git pull
|
||||
cd frontend
|
||||
sudo -u sac npm ci
|
||||
sudo -u sac npm run build
|
||||
ls -la dist/index.html
|
||||
sudo systemctl restart sac-api
|
||||
```
|
||||
|
||||
В `config/sac-api.env` задайте `SAC_ADMIN_PASSWORD`, затем откройте `https://sac.kalinamall.ru/` (логин `SAC_ADMIN_USERNAME`, по умолчанию `admin`).
|
||||
|
||||
---
|
||||
|
||||
## 11. Проверка
|
||||
|
||||
Локально на сервере:
|
||||
|
||||
@@ -330,7 +348,7 @@ curl -sS -X POST http://127.0.0.1:8000/api/v1/events \
|
||||
|
||||
---
|
||||
|
||||
## 11. Резервное копирование
|
||||
## 12. Резервное копирование
|
||||
|
||||
```bash
|
||||
sudo tee /etc/cron.d/sac-backup <<'EOF'
|
||||
@@ -342,7 +360,7 @@ EOF
|
||||
|
||||
---
|
||||
|
||||
## 12. Обновление SAC
|
||||
## 13. Обновление SAC
|
||||
|
||||
```bash
|
||||
cd /opt/security-alert-center
|
||||
@@ -354,7 +372,7 @@ sudo systemctl restart sac-api
|
||||
|
||||
---
|
||||
|
||||
## 13. Чеклист
|
||||
## 14. Чеклист
|
||||
|
||||
- [ ] Ubuntu 24.04, timezone
|
||||
- [ ] ufw: 22, 80, 443
|
||||
@@ -365,11 +383,12 @@ sudo systemctl restart sac-api
|
||||
- [ ] `sac-api` active (systemd)
|
||||
- [ ] nginx + TLS
|
||||
- [ ] `/health` ok, ingest 202
|
||||
- [ ] `frontend/dist` собран, UI открывается, вход admin OK
|
||||
- [ ] cron backup
|
||||
|
||||
---
|
||||
|
||||
## 14. Устранение неполадок
|
||||
## 15. Устранение неполадок
|
||||
|
||||
| Симптом | Действие |
|
||||
|---------|----------|
|
||||
|
||||
+13
-13
@@ -21,10 +21,10 @@
|
||||
|
||||
| # | Задача | Статус |
|
||||
|---|--------|--------|
|
||||
| 1A.1 | Параметры `UseSAC`, `SAC_URL`, `SAC_API_KEY`, spool | ⏳ |
|
||||
| 1A.2 | `build_sac_event()` + `send_sac_event()` по schema v1 | ⏳ |
|
||||
| 1A.3 | `notify_or_sac()`: off / dual / exclusive / fallback | ⏳ |
|
||||
| 1A.4 | `--check-sac` / `Test-SacConnection` | ⏳ |
|
||||
| 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 агентов | ⏳ |
|
||||
|
||||
**Выход:** на тестовом хосте `dual` шлёт JSON в SAC + Telegram.
|
||||
@@ -35,11 +35,11 @@
|
||||
|
||||
| # | Задача | Статус |
|
||||
|---|--------|--------|
|
||||
| 1B.1 | Scaffold backend FastAPI | 🔄 |
|
||||
| 1B.2 | PostgreSQL + Alembic (hosts, events, api_keys) | 🔄 |
|
||||
| 1B.3 | `POST /api/v1/events`, `GET /health` | 🔄 |
|
||||
| 1B.4 | systemd + nginx + [install-ubuntu-24.04-native.md](install-ubuntu-24.04-native.md) | 🔄 |
|
||||
| 1B.5 | Валидация JSON Schema v1 | ⏳ |
|
||||
| 1B.1 | Scaffold backend FastAPI | ✅ |
|
||||
| 1B.2 | PostgreSQL + Alembic (hosts, events, api_keys) | ✅ |
|
||||
| 1B.3 | `POST /api/v1/events`, `GET /health` | ✅ (prod) |
|
||||
| 1B.4 | systemd + nginx + [install-ubuntu-24.04-native.md](install-ubuntu-24.04-native.md) | ✅ |
|
||||
| 1B.5 | Валидация JSON Schema v1 | ✅ |
|
||||
|
||||
**Выход:** сервер Ubuntu принимает события от curl и от агентов в `dual`.
|
||||
|
||||
@@ -47,10 +47,10 @@
|
||||
|
||||
## Фаза 1C. SAC — MVP UI и оповещения
|
||||
|
||||
| # | Задача |
|
||||
|---|--------|
|
||||
| 1C.1 | Frontend Vue: Events, Hosts |
|
||||
| 1C.2 | Auth JWT, admin bootstrap |
|
||||
| # | Задача | Статус |
|
||||
|---|--------|--------|
|
||||
| 1C.1 | Frontend Vue: Events, Hosts | 🔄 |
|
||||
| 1C.2 | Auth JWT, admin bootstrap | 🔄 |
|
||||
| 1C.3 | Problems (базовые правила) |
|
||||
| 1C.4 | Telegram из SAC |
|
||||
| 1C.5 | Dashboard (3 виджета), SSE |
|
||||
|
||||
Reference in New Issue
Block a user