Документация / Руководство по установке / Установка
Первичная настройка
После развёртывания Core открывается на экране активации лицензии, Radar - на экране входа по токену. Ниже - шаги от активации до первого скана в том порядке, в котором их нужно выполнить. В конце - чек-лист.
Перед началом
- Core и Radar развёрнуты и проверены - см. Установка в Kubernetes.
- Есть ключ лицензии от SecurityFlow.
- Известны логин и пароль первого администратора Core или есть доступ к журналу Job подготовки базы.
- Есть доступ на запись к секрету Radar или контакт команды SecurityFlow, которая его меняет.
- Подготовлена учётная запись в системе контроля версий с правом чтения репозиториев и SSH-ключ к ней.
Активация лицензии
- Откройте Core, например
https://core.example.ru. Без лицензии откроется экран "Активация лицензии". - Вставьте ключ целиком в поле "Пожалуйста, введите ключ вашей лицензии здесь". Пробелы и переносы строк Core вырежет сам.
- Нажмите "Активировать лицензию".
Core отправляет ключ на сервер лицензий и сохраняет лицензию, если сервер её подтвердил. Ошибки активации и замена ключа - в разделе Активация лицензии.
Вход администратора
- На экране входа нажмите "Войти через пароль".
- Введите "Имя пользователя" - значение
ADMIN_USER, по умолчаниюadmin- и "Пароль".
Если пароль не задавали в ADMIN_PASSWORD, Core сгенерировал его при подготовке базы и вывел в журнал один раз:
kubectl -n securityflow-core logs job/sf-core-init | grep '\[admin\]'
Ищите строку [admin] Пароль сгенерирован автоматически: <пароль>.
- Смените пароль: "Профиль" → "Изменить пароль".
Повторный запуск подготовки базы пароль существующего администратора не меняет. Журнал Job с паролем удалите или ограничьте к нему доступ.
Адреса Core
Откройте "Глобальные настройки" → "Рабочий процесс" и заполните:
| Поле | Что указать | Зачем |
|---|---|---|
| "Внешний URL приложения" | адрес Core для пользователей, например https://core.example.ru/ |
ссылки в уведомлениях и комментариях в системе контроля версий |
| "Внутренний URL приложения" | адрес Core, доступный из пространства Radar, со слешем в конце, например http://<сервис фронта Core>.securityflow-core.svc/ |
по этому адресу воркеры Radar отправляют отчёты: адрес + api/v1/scan/import/ |
Если "Внутренний URL приложения" пуст, Core подставляет адрес первого запроса к настройкам - обычно это адрес браузера, а не внутренний. Имя из внутреннего адреса добавьте в ALLOWED_HOSTS Core.
Токен Radar
Radar пускает в интерфейс и API по одному общему токену. Тем же токеном к Radar обращаются Core и воркеры сканирования.
- Откройте Radar, например
https://radar.example.ru. - Нажмите "Создать новый Токен".
- Скопируйте токен из окна "Ваш Токен Авторизации": он показывается один раз.
- Запишите токен в переменную
ACCESS_TOKENсекрета Radar и перезапустите Radar back и воркеры. Переменная нужна обоим: воркеры обращаются с ней к API Radar, Radar back запускает с ней проверку таймаутов и сбор статистики. - Войдите в Radar: вставьте токен в поле "Токен Авторизации" и нажмите "Войти с Токеном".
Создайте токен до открытия доступа к Radar
Токен создаётся один раз, первым нажатием "Создать новый Токен". Выполните этот шаг сразу после развёртывания, пока Radar недоступен из пользовательской сети. Смена токена - в разделе Безопасная конфигурация.
Пока токена нет, Radar при каждом старте пересоздаёт каталог джоб. Поэтому образы сканеров меняйте после создания токена.
Связь Core и Radar
Откройте в Core "Radar" → "Настройки".
"Шаг 1" - "Аутентификация":
| Поле | Что указать |
|---|---|
| "Radar URL" | адрес API Radar, доступный из Core: внутренний адрес Radar back, например http://<сервис Radar back>.securityflow-radar.svc:8090/, или внешний адрес Radar. Слеш в конце Core добавит сам |
| "Токен доступа" | токен Radar из предыдущего шага |
| "Проверять SSL" | включите, если адрес на https |
Сохраните и нажмите "Проверить подключение". В блоке "Статус подключения" должно быть "Подключено" и "Аутентифицировано".
| Статус | Что значит |
|---|---|
| "Недоступно: проверьте ваш Radar URL" | Core не достучался до Radar: адрес, DNS или сеть |
| "Не аутентифицировано: проверьте ваш токен доступа" | Radar ответил, но токен не подходит |
Поля и остальные настройки Radar - в разделе Настройки Radar.
Доступ к репозиториям
Код для сканирования клонирует джоба Code Downloader. Она берёт SSH-ключ из настроек Radar в Core.
- Создайте SSH-ключ и добавьте открытую часть в систему контроля версий учётной записи или ключу развёртывания с правом чтения.
- В Core откройте "Radar" → "Настройки" → "Шаг 2" - "Настройки окружения пайплайнов".
- Вставьте закрытый ключ в "Приватный SSH ключ" и сохраните.
Ключ один на все репозитории. В пайплайн он уходит скрытой переменной PRIVATE_SSH_KEY. Адреса репозиториев в ассетах указывайте в SSH-виде, например git@gitlab.example.ru:team/payments.git.
Поля "Пользователь Docker-репозитория", "Пароль Docker-репозитория" и "Адрес Docker-репозитория" задают учётные данные по умолчанию для джоб, которые сканируют образы контейнеров. Для сканирования кода они не нужны.
Образы сканеров
Образы джоб должны указывать на реестр площадки. Команда SecurityFlow загружает туда образы сканеров при установке.
- Откройте в Radar "Джобы" и выберите джобу.
- Убедитесь, что "Использовать настройки поставщика" выключено.
- В "Пользовательские Настройки" укажите "Образ" с реестром и тегом, например
registry.example.ru/<образ сканера>:<тег>. - Если реестр требует входа, создайте запись в "Настройки" → "Уч. Данные Docker" и выберите её в поле "Учетные данные" джобы.
Начните с джоб последовательности по умолчанию: Code Downloader, Trufflehog3 Scan, Gitleaks Scan, Semgrep, Trivy Code Dependencies. Образ скачивается при каждом запуске джобы, поэтому реестр должен быть доступен из узлов scan всегда.
Служебный образ воркера задаётся переменной UTILITY_IMAGE - см. Параметры конфигурации.
Первый скан
- Создайте продукт и добавьте ассет-репозиторий - см. Продукты и ассеты.
- На странице продукта нажмите "Запустить аудит". "Ветка (необязательно)" и "Последовательность джоб (необязательно)" можно не заполнять: возьмётся ветка по умолчанию и последовательность ассета или последовательность по умолчанию.
- В Radar откройте "Пайплайны". Пайплайн проходит статусы "В ожидании" → "Выполняется" → "Завершен". Лог каждой джобы - по кнопке "Логи".
- В Core откройте продукт → "Аудиты": появился аудит, находки - в "Уязвимости".
Если пайплайн "Остановлен" или находок нет, откройте лог джобы в Radar - Типовые ошибки.
Что дальше
| Задача | Раздел |
|---|---|
| Пользователи и роли | Пользователи, Роли и права |
| Вход через SSO | Вход через SSO |
| Импорт репозиториев и сканирование по пушу | Системы контроля версий |
| Задачи в Jira | Jira |
| Уведомления | Уведомления |
| Сканирование из CI | Security checker, Загрузка отчётов из CI |
| Расписание аудитов | Аудиты |
Чек-лист
| Проверка | Где | Ожидаемый результат |
|---|---|---|
| Лицензия активна | Core: "Глобальные настройки" → "Лицензия" | видны компания, тариф и срок |
| Пароль администратора сменён | Core: "Профиль" | вход с новым паролем |
| Адреса Core заданы | Core: "Глобальные настройки" → "Рабочий процесс" | заполнены оба URL |
| Токен Radar в секрете | ACCESS_TOKEN у Radar back и воркеров |
Radar back и воркеры перезапущены |
| Core видит Radar | Core: "Radar" → "Настройки" | "Подключено", "Аутентифицировано" |
| Воркеры подключены | Radar: "Настройки" → "Воркеры" | число пайплайн-воркеров равно числу подов воркера |
| SSH-ключ задан | Core: "Radar" → "Настройки" → "Шаг 2" | ключ сохранён |
| Образы джоб из реестра площадки | Radar: "Джобы" | у джоб последовательности по умолчанию заполнен "Образ" |
| Первый аудит | Core: продукт → "Аудиты" | аудит есть, пайплайн в Radar "Завершен" |
| Таймаут пайплайнов | Radar: "Настройки" → "Таймаут Пайплайнов" | задан больше самого долгого пайплайна - см. Запуск, остановка и масштабирование |