Документация / Руководство по установке / Подготовка
Системные требования
SecurityFlow работает в Kubernetes площадки заказчика. Базы данных, реестр образов и хранилище резервных копий живут на отдельных виртуальных машинах рядом с кластером. Сервер лицензий работает у SecurityFlow, ставить его не нужно.
Ниже - типовой состав площадки и требования к каждой его части. Число узлов и их размер зависят от потока сканирований: формулы и готовые варианты - в разделе Расчёт ресурсов.
Состав площадки
| Роль | Узлов | vCPU | RAM | Диски | Что работает |
|---|---|---|---|---|---|
| Мастер Kubernetes | 3 | 4 | 8 GiB | 100 GB SSD | control plane и etcd |
| Узел app | 3 | 16 (12 при 30 проектах и меньше) | 32 GiB (24) | ОС 100 GB + данные 200 GB, SSD | Core, Radar back, брокеры, Redis, ingress |
| Узел scan | от 2 | 16 | 48 GiB | ОС 100 GB + Docker 200 GB, SSD | воркеры сканирования и контейнеры сканеров |
| ВМ PostgreSQL | 3 | 8 (4) | 32 GiB (16) | ОС 50 GB + PGDATA + WAL 50 GB + etcd 20 GB, SSD | две базы: Core и Radar |
| ВМ реестра образов | 1 | 4 | 8 GiB | ОС 30 GB + 200 GB SSD | образы платформы и сканеров |
| Служебная ВМ | 1 | 4 (2) | 8 GiB (4) | ОС 50 GB + резервные копии + media 100 GB | NFS для файлов Core, репозиторий резервных копий |
Размер PGDATA и области резервных копий считается от числа проектов - см. Расчёт ресурсов.
Хосты нужны чистые: Linux и SSD. Балансировщик в состав не входит: вход на платформу даёт внешний прокси площадки.
Архитектура процессора
Все узлы кластера - x86-64 (amd64). Образы бэкенда Core и воркеров Core (sf-core-back, sf-core-importer, sf-core-db-helper, sf-core-jira-helper) выпускаются под amd64.
Kubernetes
| Требование | Значение | Зачем |
|---|---|---|
| Мастера | 3, etcd на SSD | кворум etcd 2 из 3; etcd требует fsync p99 < 10 мс |
| Шифрование etcd | encryption at rest включено | секреты платформы хранятся в Kubernetes Secrets |
| RBAC | без wildcard-доступа к secrets | доступ к секретам - только тем, кому он нужен |
| Пулы узлов | app - без taint; scan - taint dedicated=scanners:NoSchedule |
сканирование не отнимает ресурсы у Core |
| Pod Security Admission | уровень privileged для пространства Radar | воркер сканирования запускает Docker-in-Docker в привилегированном контейнере |
| Namespaces | securityflow-core, securityflow-radar |
Core и Radar разделены |
| Ingress | ingress-nginx, по реплике на узел app | вход с внешнего прокси |
| Версия Kubernetes | согласуется с командой SecurityFlow при подготовке площадки | - |
Настройки ingress-nginx:
| Параметр | Значение | Почему |
|---|---|---|
client-max-body-size |
100m |
Core принимает отчёт целиком в память и передаёт его через брокер. Лимит тела обязан быть ниже max_message_size RabbitMQ (128 МиБ), иначе отчёт принимается и теряется при постановке в очередь |
proxy-read-timeout |
300s |
долгие запросы API и загрузка крупных отчётов |
Хранилище
Распределённое хранилище и CSI площадки не нужны.
| Что | Тип | Объём | Чем обслуживается |
|---|---|---|---|
| Тома RabbitMQ Core | локальный PV на узле app | 30 GiB на реплику, 3 реплики | local-path-provisioner |
| Тома RabbitMQ Radar | локальный PV | 10 GiB на реплику, 3 реплики | local-path-provisioner |
| Тома Redis | локальный PV | 5 GiB на реплику, 3 реплики | local-path-provisioner |
| Файлы Core (media): аватары и изображения в уязвимостях | RWX | 20 GiB | NFS со служебной ВМ, NFS-провизионер |
| Docker в поде воркера | emptyDir на локальном SSD узла scan | диск Docker узла | - |
Локальные тома брокеров
Локальный PV привязывает под к своему узлу. При потере узла app том брокера на нём удаляется вручную, после чего новая реплика поднимается на другом узле и догоняет кворум. Данные в брокерах одноразовые: очереди и живые логи сканов.
Внешние компоненты
| Компонент | Версия | Назначение | Требования |
|---|---|---|---|
| PostgreSQL | 15 и выше, проверено на 17 | две базы: Core и Radar | 3 узла с Patroni и etcd (кворум 2 из 3), HAProxy и keepalived с общим адресом, синхронная реплика на один узел |
| PgBouncer | - | пул соединений | обязателен: у Core нет своего пула, у Radar пул в каждом процессе API. Без PgBouncer в пик открывается больше сотни соединений |
| RabbitMQ | проверено на 3.13 | два брокера: Core и Radar | 3 реплики каждый, quorum queues в брокере Core |
| Redis | проверено на 7 | живые логи сканов Radar | 3 реплики |
| Реестр образов | Nexus | образы платформы и сканеров | не меньше 8 GiB RAM и всегда 4 GB свободного места, иначе база Nexus переходит в режим только чтения |
| NFS | - | RWX-том media | экспорт со служебной ВМ |
| pgBackRest | - | резервные копии PostgreSQL | репозиторий на служебной ВМ, см. Резервное копирование |
| Сервер лицензий | у SecurityFlow | активация и сверка лицензии | исходящий HTTPS до securityflow.ru:443 |
Docker для сканеров ставить на узлы не нужно: он входит в образ воркера сканирования (Docker 29.5.1, режим Docker-in-Docker).
Не нужны: Vault или другое хранилище секретов, S3 или MinIO, СХД площадки, раннеры CI площадки, отдельный кластер БД под Radar.
Сеть
Кратко - что открыть:
- вход пользователей и CI на внешний прокси по HTTPS 443;
- исходящий HTTPS из кластера до
securityflow.ru:443; - доступ узлов scan к системам контроля версий (SSH 22 или HTTPS 443) и к реестру образов;
- доступ узлов app к служебной ВМ по NFS 2049 и к PostgreSQL 5432;
- доступ команды SecurityFlow к kube-apiserver 6443 и реестру образов площадки на время установки и обновлений.
Полная матрица потоков - в разделе Сетевое взаимодействие.
Что даёт площадка
| Площадка | Команда SecurityFlow |
|---|---|
| Хосты по расчёту ресурсов: Linux, SSD | образы платформы и сканеров в реестре площадки |
| DNS-имена для Core и Radar и TLS-сертификаты на них | развёртывание PostgreSQL, реестра, NFS и резервного копирования |
| Внешний прокси, который терминирует TLS и передаёт запросы в ingress | развёртывание Core и Radar, секреты |
Исходящий HTTPS до securityflow.ru:443 |
первичная настройка и проверка |
| SSH и sudo на хосты для первичной установки, NTP | обновления |
| Разрешение privileged-подов в пространстве Radar | |
| Сетевые доступы из раздела Сетевое взаимодействие | |
| Согласованные RPO и RTO - см. Резервное копирование |
Рабочее место пользователя
Интерфейсы Core и Radar - веб-приложения: на рабочее место ничего не устанавливается. Нужен браузер с доступом к адресам Core и Radar по HTTPS.
Язык интерфейса - русский по умолчанию, доступны английский и узбекский.
Для загрузки отчётов из CI и quality gate раннерам нужен доступ к Core по HTTPS. Security checker поставляется образом под amd64 и arm64 - см. Security checker.