Установка оффлайн-версии¶
CodeScoring поддерживает работу в закрытом контуре. Для доступа к базе данных о пакетах и уязвимостях в таком режиме используется сервис Index API Offline.
Предварительная установка продукта
Для использования Index API Offline на сервере должна быть предварительно развернута платформа CodeScoring с использованием Docker или Kubernetes.
Ресурсы для установки и обновления¶
Адрес ресурса с установочными файлами, Docker Registry и файлами оффлайн-БД можно узнать у вендора.
В примерах ниже используются плейсхолдеры:
<REGISTRY_URL>— HTTPS-адрес ресурса с файлами дистрибутива;<REGISTRY_HOST>— адрес Docker Registry без протокола.
На ресурсе доступны:
- Docker Registry с образами CodeScoring и Index API Offline
- Полная версия оффлайн-БД Index API:
<REGISTRY_URL>/db/index-api.db - Инкрементальные обновления оффлайн-БД:
<REGISTRY_URL>/#browse/browse:codescoring-offline-files:db%2Fv1%2Fupdates
Оффлайн база данных представляет собой шифрованный файл SQLite. Инкрементальные обновления распространяются в виде WAL-файлов.
Скачивание базы данных¶
-
Выберите сервер с доступным дисковым пространством не менее 300 ГБ.
-
Создайте файл
curl.configсо следующими параметрами доступа: -
Запустите скачивание базы данных:
Рекомендуется выполнять загрузку в screen или tmux, так как процесс может занимать значительное время.
Установка Index API Offline¶
-
Выполните авторизацию в Docker Registry:
-
Скачайте архив с установочными файлами и распакуйте его:
-
Переместите скачанный файл базы данных в директорию сервиса, например:
-
Перейдите в директорию с конфигурацией:
-
Скопируйте шаблон конфигурации
.env.templateв.envи заполните его:Основные параметры:
INDEX_API_OFFLINE_VERSION— версия Index API Offline;NGINX_SSL_ENABLED— включение SSL (true | false);NGINX_HOST— имя хоста для nginx;OFFLINE_DB_UPDATE_ENABLED— включение автоматического обновления базы данных;WAL_CHECK_INTERVAL— интервал проверки обновлений;NEXUS_HOST— адрес репозитория обновлений;NEXUS_USERNAME— логин для доступа к Nexus;NEXUS_PASSWORD— пароль для доступа к Nexus;CODESCORING_ACTIVATION_KEY— лицензионный ключ.
Параметры аутентификации для обновления базы данных и получения метрик через Prometheus (опционально):
MAINTENANCE_USERNAME- Basic Auth логин для метода/system/update_database;MAINTENANCE_PASSWORD- Basic Auth пароль для метода/system/update_database;METRICS_USERNAME- Basic Auth логин для метода/metrics;METRICS_PASSWORD- Basic Auth пароль для метода/metrics.
-
При использовании SSL (
NGINX_SSL_ENABLED=true) разместите сертификат и ключ в каталогеssl.Важно
Формат сертификата – PEM. Файл сертификата должен иметь расширение
.crt, а файл ключа сертификата должен иметь расширение.key -
Запустите сервис:
После установки и запуска в интерфейсе CodeScoring можно посмотреть версию последнего загруженного в Index API Offline WAL-файла.
Обновление базы данных¶
Автоматическое обновление оффлайн базы данных¶
Процесс обновления базы данных можно выполнить автоматически.
Механизм обновления работает следующим образом:
- Запущенный сервис Index API Offline с заданной периодичностью опрашивает репозиторий обновлений.
- Сервис хранит номер текущей версии базы данных (например, 72).
- При обнаружении следующего доступного обновления (например, 73) файл загружается автоматически.
- Загруженный WAL-файл применяется к локальной базе данных.
Интервал проверки задаётся параметром WAL_CHECK_INTERVAL.
При отключённом параметре OFFLINE_DB_UPDATE_ENABLED автоматическое обновление не выполняется.
Ручное обновление базы данных¶
Ручное обновление используется в случаях, когда автоматическая загрузка WAL-файлов отключена (OFFLINE_DB_UPDATE_ENABLED=false) или невозможна по сетевым ограничениям.
Обновление с использованием отдельных файлов обновлений¶
Если развёрнута первая версия оффлайн базы данных, необходимо последовательно скачать и загрузить все доступные WAL-файлы обновлений, начиная с версии, следующей за текущей версией базы данных.
Файлы обновлений необходимо размещать в директории, указанной в параметре WAL_DIR в конфигурации Index API Offline. Сервис отслеживает появление файлов в этой директории и применяет их к базе данных.
В комплект обновления входят:
*.wal— файл с изменениями (основные данные обновления);*.shm— вспомогательный служебный файл, необходимый SQLite для корректного применения WAL.
Обновление с использованием полной версии базы данных¶
В случае загрузки актуального файла полной оффлайн-БД необходимо выполнить следующие действия:
- Остановить сервис Index API Offline.
- Переместить текущий файл базы данных в резервную директорию (рекомендуется сохранить копию до завершения обновления).
- Разместить новый файл базы данных в директории, указанной в параметре
DB_FILE. - Запустить сервис Index API Offline.
- Убедиться, что сервис успешно запущен.
После этого, при необходимости, можно продолжить обновление с помощью WAL-файлов, размещая их в директории WAL_DIR в стандартном порядке.
Запуск процесса обновления¶
При использовании ручного режима обновления запуск процесса обновления также выполняется вручную.
-
В файле
.envнеобходимо указать параметры аутентификации: -
Файлы обновлений (
*.wal,*.shm) необходимо разместить в директории, указанной в параметреWAL_DIR.
Для запуска процесса обновления выполните запрос:
curl -X GET --location "{{INDEX_API_URL}}/system/update_database" \
-H "Accept: application/json" \
-H "Authorization: Basic {{metrics_auth}}"
Где:
{{INDEX_API_URL}}— значение из переменнойINDEX_API_URLв.env;{{metrics_auth}}— Base64-кодированная строка видаuser:password.
Статус обновления отслеживается в логах сервиса Index API Offline.
Возможные сообщения:
WAL files download scheduler started with interval:— сервис обновлений запущен;missing mandatory Nexus configuration parameters— допустимое сообщение для ручного режима;The WAL file [%s] was successfully loaded into the main database file— обновление успешно применено;Failed to checkpoint WAL file:— ошибка применения WAL-файла;No WAL files to checkpoint— отсутствуют файлы для применения;Error getting latest database update:— ошибка получения информации об обновлениях.