Files
security-alert-center/docs/deployment.md
T
PTah 4f3adc9429 docs: ТЗ v1.0, планы и схема SAC (фаза 0)
Security Alert Center — документация без кода приложения.

- TZ, архитектура, интеграция агентов (UseSAC)

- JSON Schema событий v1, deployment Ubuntu 24.04

- План работ, roadmap, multi-root workspace
2026-05-26 19:54:47 +10:00

196 lines
5.1 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.
# Развёртывание на Ubuntu 24.04
Руководство для эксплуатации SAC. Реализация `deploy/` — в фазе 1; здесь — целевая архитектура развёртывания.
---
## 1. Требования к серверу
| Параметр | Минимум | Рекомендуется |
|----------|---------|---------------|
| ОС | Ubuntu 24.04 LTS | Ubuntu 24.04 LTS |
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB | 8 GB |
| Диск | 50 GB SSD | 100+ GB SSD (отдельный том для PostgreSQL) |
| Сеть | Статический IP или DNS | TLS-сертификат (Let's Encrypt / внутренний CA) |
**Порты:**
| Порт | Назначение |
|------|------------|
| 443 | HTTPS (UI + API ingest) |
| 80 | Редирект на 443 (опционально) |
PostgreSQL **не** публикуется наружу.
---
## 2. Сетевые правила
**Исходящие с агентов:**
- Linux (ssh-monitor) → `https://sac.example.com:443`
- Windows (RDP-monitor) → тот же URL
**Исходящие с SAC:**
- `api.telegram.org` (если Telegram)
- SMTP-сервер организации
**Входящие на SAC:**
- 443 от сетей, где расположены агенты и админы UI
---
## 3. Вариант A: Docker Compose (рекомендуется)
Целевая структура (фаза 1):
```
deploy/
docker-compose.yml
.env.example
nginx/
sac.conf
```
Сервисы:
- `postgres:16`
- `api` (FastAPI)
- `worker` (тот же образ, другая command)
- `nginx` (static + proxy)
### 3.1. Установка Docker
```bash
sudo apt update
sudo apt install -y ca-certificates curl
# Официальная инструкция Docker CE для Ubuntu 24.04
```
### 3.2. Конфигурация
```bash
sudo mkdir -p /etc/security-alert-center
sudo cp deploy/.env.example /etc/security-alert-center/.env
sudo chmod 600 /etc/security-alert-center/.env
# Заполнить: POSTGRES_PASSWORD, JWT_SECRET, TELEGRAM_*, SAC_PUBLIC_URL
```
### 3.3. Запуск
```bash
cd /opt/security-alert-center/deploy
sudo docker compose up -d
sudo docker compose exec api alembic upgrade head
```
### 3.4. Обновление
```bash
git pull
sudo docker compose build
sudo docker compose up -d
sudo docker compose exec api alembic upgrade head
```
---
## 4. Вариант B: Native systemd
Пакеты:
```bash
sudo apt install -y postgresql nginx python3.12 python3.12-venv
```
- PostgreSQL: БД `sac`, пользователь `sac`
- venv в `/opt/security-alert-center/.venv`
- Units: `sac-api.service`, `sac-worker.service`
- Static UI в `/var/www/sac/`
- nginx site `/etc/nginx/sites-available/sac`
Детальные unit-файлы — при реализации фазы 1.
---
## 5. TLS
- Публичный: **certbot** + nginx
- Внутренний: корпоративный CA, полный chain в nginx
Агенты должны доверять CA (или `SAC_TLS_SKIP_VERIFY=1` только для dev — **запрещено в prod**).
---
## 6. Резервное копирование
### 6.1. Ежедневный pg_dump
```bash
# /etc/cron.d/sac-backup (пример)
0 3 * * * postgres pg_dump -Fc sac > /var/backups/sac/sac_$(date +\%Y\%m\%d).dump
```
Ротация: 14 daily + 4 weekly.
### 6.2. Восстановление (тест раз в месяц)
```bash
pg_restore -d sac_restored /var/backups/sac/sac_YYYYMMDD.dump
```
---
## 7. Обслуживание
| Задача | Периодичность |
|--------|---------------|
| `unattended-upgrades` security | автоматически |
| Проверка диска PostgreSQL | еженедельно |
| Ротация логов nginx/app | logrotate |
| Проверка `/health` | каждые 5 мин (Uptime Kuma / cron) |
| Review Problems «хост мёртв» | ежедневно |
| Тест restore БД | ежемесячно |
---
## 8. Мониторинг самого SAC
- `GET https://sac.example.com/health``200`, `"database": "ok"`
- Алерт если нет ingest с активного хоста > 90 мин (настраивается)
- Диск > 85% — алерт ОС
---
## 9. Создание API key для хоста
(После реализации UI)
1. Войти как admin → Hosts → Add / Generate API key.
2. Скопировать ключ в `/etc/ssh-monitor.conf` или RDP-конфиг.
3. `UseSAC=exclusive`, перезапуск агента.
4. `--check-sac` на хосте.
---
## 10. Чеклист первого prod-развёртывания
- [ ] Ubuntu 24.04, hostname, DNS A-record
- [ ] TLS работает
- [ ] PostgreSQL backup настроен
- [ ] `.env` не в git, chmod 600
- [ ] Создан admin-пользователь
- [ ] Telegram test notification
- [ ] Тестовый ingest с одного Linux и одного Windows
- [ ] Firewall: только нужные порты
---
## См. также
- [TZ.md](TZ.md) §5, §9
- [agent-integration.md](agent-integration.md)