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

5.1 KiB
Raw Blame History

Развёртывание на 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

sudo apt update
sudo apt install -y ca-certificates curl
# Официальная инструкция Docker CE для Ubuntu 24.04

3.2. Конфигурация

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. Запуск

cd /opt/security-alert-center/deploy
sudo docker compose up -d
sudo docker compose exec api alembic upgrade head

3.4. Обновление

git pull
sudo docker compose build
sudo docker compose up -d
sudo docker compose exec api alembic upgrade head

4. Вариант B: Native systemd

Пакеты:

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

# /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. Восстановление (тест раз в месяц)

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/health200, "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: только нужные порты

См. также