Руководство по установке#

Системные требования#

Настройки безопасности окружения и перечень платформенных (дополнительных внешних) продуктов, используемых для установки, настройки и контроля в конечной информационной системе (далее — ИС), выбираются клиентом при разработке конечной ИС, исходя из характера обрабатываемой в ней информации и иных требований информационной безопасности (далее — ИБ), предъявляемых к ней.

Системное программное обеспечение#

Ниже представлены категории системного программного обеспечения (далее — ПО), которые обязательны или опциональны для установки, настройки, контроля и функционирования CodeScanner. В каждой категории перечислены продукты сторонних правообладателей. Отдельно обозначены варианты, которые рекомендует АО «СберТех» (маркировка «Рекомендовано» в столбце «Продукт, функциональная совместимость с которым подтверждена»). Клиенту необходимо выбрать один из продуктов в каждой категории, исходя из условий использования конечной ИС.

Категория ПО

Обязательность установки*

Наименование ПО

Версия

Продукт, функциональная совместимость с которым подтверждена **

Назначение категории ПО

Операционная система

Да

ОС Альт 8 СП

5.4.145

Рекомендовано

ОС контейнеров для запуска модулей компонента CodeScanner

Средство контейнеризации

Нет

Docker CE

20.10.11

Рекомендовано

Инструмент для автоматизации работы с контейнерами

Java-машина

Да

OpenJDK

8 с последними патчами безопасности

Рекомендовано

Окружение для работы модулей компонента CodeScanner

Реляционная СУБД

Да

PostgreSQL

11

Рекомендовано. Правообладателем АО «СберТех» также рекомендована СУБД, основанная на PostgreSQL, — Platform V Pangolin SE, см. раздел «Платформенные зависимости»

Используется для хранения данных сервиса.

Браузер

Да

Яндекс

19.10+

Рекомендовано

Браузер для входа в UI

Google Chrome

79.0+

Опционально

Инструмент автоматической сборки

Да

Maven

3.1.0

Опционально

Инструмент для сборки проекта и запуска анализа кода

Gradle

5.1.0

Опционально

Инструмент сборки, тестирования, развертывания приложений

Да

Jenkins

2.3

Рекомендовано. Правообладателем АО «СберТех» также рекомендован инструмент оркестрации этапов CI/CD, основанный на Jenkins, — Platform V Works::Pipeliner, см. раздел «Платформенные зависимости»

Интегрированная платформа для проксирования, хранения и управления зависимостями Java (Maven), образами, а также распространения ПО

Примечание:

*

  • Да — категория ПО обязательна для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данной категории ПО).

  • Нет — категория ПО необязательна для функционирования сервиса (это означает, что сервис может выполнять свои основные функции без установки данной категории ПО).

**

  • Рекомендовано — рекомендованный правообладателем АО «СберТех» продукт.

  • Опционально — альтернативный по отношению к рекомендованному правообладателем АО «СберТех» продукт.

Платформенные зависимости#

Для настройки, контроля и функционирования CodeScanner реализована интеграция с программными продуктами, правообладателем которых является АО «СберТех»:

Наименование продукта

Код

Версия продукта

Код и наименование компонента

Обязательность установки (да/нет)***

Описание

Аналог других производителей****

Platform V Works::Pipeliner

CID

1.4.0

JSSE / Оркестровщик CI/CD (CIWork, CDWork)

Нет

Инструмент оркестрации этапов CI/CD

Jenkins 2.384

Platform V Works::OneWork

SSD

1.3.0

SSDP / Сервис самообслуживания в инструментах DevOps (OneWork)

Да

Универсальная инструментальная платформа для реализации всего жизненного цикла разработки и совместной работы

Azure DevOps 2022

Platform V Pangolin SE

PSQ

5.1.0 и выше

PSQL Platform V Pangolin

Да

Система управления базами данных, основанная на PostgreSQL

PostgreSQL 11

Примечание:

***

  • Да — компонент или продукт необходим для функционирования сервиса (это означает, что сервис не может выполнять свои основные функции без установки данного компонента).

  • Нет — необязательный для функционирования сервиса компонент или продукт (это означает, что сервис может выполнять свои основные функции без установки данного компонента).

**** Рекомендуется установка программного продукта, правообладателем которого является АО «СберТех», при этом не исключена возможность (допускается правообладателем) использования аналога других производителей. Аналоги, в отношении которых продукт успешно прошел испытания и подтвердил свою работоспособность, указаны в разделе «Системное программное обеспечение».

Аппаратные требования#

Для установки и эксплуатации компонента требуется следующая конфигурация аппаратного обеспечения:

Минимальные аппаратные требования:

  • 2 ядра CPU;

  • 3 ГБ оперативной памяти (1 ГБ для системы, 2 ГБ для CodeScanner);

  • 10 ГБ дискового пространства.

Рекомендуемые аппаратные требования:

  • 8 ядер CPU;

  • 16 ГБ оперативной памяти;

  • 32 ГБ дискового пространства (объем необходимого дискового пространства зависит от того, какой объем кода требуется анализировать с помощью CodeScanner).

Требования к промышленной нагрузке рассчитываются индивидуально в зависимости от предполагаемой нагрузки.

Минимальный размер (резерв) свободного дискового пространства рекомендуется поддерживать согласно нормативным документам эксплуатирующей организации, а при отсутствии таковых — не меньшим, чем обеспечивающим расход в течение 15 дней в темпе, максимальном за последний год эксплуатации компонента.

В случае необходимости выбора между процессором с более высокой тактовой частотой и процессором с большим количеством ядер, рекомендуется выбрать процессор с большим количеством ядер. Многоядерность позволяет обеспечить более высокое быстродействие системы.

Рекомендации по построению кластера#

Все серверы, включая сервер БД компонента, должны быть расположены в одном месте и иметь статические IP-адреса (ссылка через имя хоста не поддерживается). Сетевой трафик не должен быть ограничен между приложением и поисковыми узлами.

Все узлы приложений и узлы поиска должны быть идентичны с точки зрения аппаратного и программного обеспечения. Однако, как правило, узлы поиска требуют больший объем оперативной памяти и количество ядер процессора, чем узлы приложений.

Для построения кластера (до 200 млн строк) можно использовать следующую конфигурацию:

  • App Node (Узел приложения): 4 CPU, 16 Гбайт ОЗУ;

  • Search Node (Узел поиска): 8 CPU, 32 Гбайт ОЗУ;

Прокси-сервер должен обеспечивать возможность балансировки HTTP-запросов (нагрузки) между узлами приложения в кластере CodeScanner.

Рекомендуется использовать SSD диск, вместо HDD, так как скорость обмена данными будет значительно быстрее.

Конфигурация Java#

Настройка установки Java#

Если на сервере установлено несколько версий Java, то может потребоваться явно указать, какая версия Java должна использоваться.

Чтобы изменить Java JVM, используемую CodeScanner, нужно отредактировать $CodeScanner-HOME/conf/wrapper.conf и обновить следующую строку:

wrapper.java.command=/path/to/my/jdk/bin/java
Установка JDK для использования задачей#

Можно установить версию JDK, которая будет использоваться задачей, в разделе конфигурации «Общие». Этот параметр виден только в том случае, если настроены несколько версий JDK в разделе «Управление CID» > «Глобальная конфигурация инструмента».

Установка JDK для «Execute CodeScanner Scanner»#

Если в конвейере используется шаг «Execute CodeScanner Scanner», то можно установить JDK для этого шага в диалоговом окне конфигурации. Для всех остальных шагов задания будет использоваться глобально настроенный JDK.

Java 8 проекты#

Pipeliner не предусматривает функциональности для переключения JDK при использовании «Freestyle» или Maven проекта. Для создания проекта с использованием Java 8, необходимо вручную установить значение для переменной JAVA_HOME. Для этого нужно использовать плагин «Tool Environment». Этот плагин позволяет указать местоположение JDK, добавленного в разделе «Настроить CID» > «Глобальная конфигурация инструмента». Затем местоположение JDK можно использовать для установки переменной JAVA_HOME в команде post step, например:

export JAVA_HOME=$OPENJDK_11_HOME/Contents/Home
mvn $SONAR_MAVEN_GOAL

Установка#

Установка и запуск с помощью Dockerfile#

  1. Распакуйте архив с дистрибутивом и перейдите в папку с дистрибутивом.

  2. При необходимости поменяйте базовый образ и/или порт сервиса и отредактируйте файл install.sh в части задания переменных окружения.

  3. Запустите файл install.sh.

Ручная установка#

Установка CodeScanner#

Скачайте и разархивируйте дистрибутив в директорию с именем, не начинающимся с цифры.

CodeScanner нельзя запустить как корневую службу в системах на базе Unix, поэтому при необходимости нужно создать специальную учетную запись пользователя для CodeScanner.

$CodeScanner-HOME указывает путь к каталогу, в который был разархивирован дистрибутив CodeScanner.

Подготовка базы данных#

  1. Создайте пустую схему и CodeScanner-пользователя.

  2. Предоставьте данному CodeScanner-пользователю разрешения на создание, обновление и удаление объектов для этой схемы.

Если нужно использовать пользовательскую схему, а не общедоступную по умолчанию, в search_path необходимо установить название таблицы PostgreSQL:

ALTER USER mySonarUser SET search_path to myCodeScannerSchema

Подключение к базе данных#

Отредактируйте файл $CodeScanner-HOME/conf/sonar.properties, чтобы настроить параметры базы данных:

sonar.jdbc.username=myname
sonar.jdbc.password=mypassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube

Установка плагинов#

Для корректной работы необходимо установить плагины sonarqube-community-branch-plugin-1.8.1 и sonar-auth-oidc-plugin-2.1.1.

Чтобы установить плагин, выполните следующие действия:

  1. Загрузите плагин, который требуется установить. Версия должна быть совместима с версией CodeScanner.

  2. Поместите загруженный плагин в папку $CodeScanner-HOME/extensions/plugins и удалите все предыдущие версии тех же плагинов.

  3. Перезапустите сервер CodeScanner.

Настройка интеграции с SSD#

Интеграция с SSD обеспечивает взаимодействие CodeScanner с Platform V Works::Pipeliner и другими доступными сервисами в одном интерфейсе.

Параметры интеграции#

Боковое меню использует переменные окружения, задаваемые:

  • в качестве аргументов к Docker;

  • в конфигурационном файле (при локальном запуске).

Переменная

Назначение

Значение по умолчанию

SSD_URL

атрибут ssd-ui-admin-url для side-menu

/

TOOL_KEY

атрибут tool-key для side-menu

snr

MENU_KEY

используется для формирования ключей пунктов меню

staticAnalysis

Сборка и подключение#
  1. Выполните команду ./gradlew build для сборки.

  2. Распакуйте собранный архив.

  3. Перейдите в папку /frontend и выполните следующие команды:

    • npm ci;

    • npm run build.

  4. Скопируйте содержимое папки dist в папку web распакованного архива.

Запуск веб-сервера#

Порт по умолчанию — 9000, а контекстный путь — /. Эти значения можно изменить в файле $CodeScanner-HOME/conf/sonar.properties:

sonar.web.host=192.168.0.1
sonar.web.port=80
sonar.web.context=/sonarqube

Выполните следующий скрипт, чтобы запустить сервер:

bin/linux-x86-64/sonar.sh

CodeScanner доступен по адресу http://localhost:9000.

Добавление драйвера JDBC#

Драйверы для поддерживаемых баз данных уже предустановлены в системе. Не заменяйте предустановленные драйверы, так как только они поддерживаются.

Период жизни DNS-кеш CodeScanner#

При отправке отчетов о статусе Quality Gate платформам DevOps, CodeScanner имеет 30-секундный период жизни кеша DNS. При необходимости можно изменить этот параметр в JVM:

echo "networkaddress.cache.ttl=5" >> "${JAVA_HOME}/conf/security/java.security"

Обновление#

Удаление предыдущей версии CodeScanner перед обновлением не требуется.

Для обновления версии CodeScanner выполните следующие действия:

  1. Выполните резервное копирование БД.

  2. Загрузите и разархивируйте новый дистрибутив CodeScanner в новый каталог, например $NEW_CodeScanner_HOME.

  3. Если используются сторонние плагины, вручную установите плагины, совместимые с новой версией CodeScanner. Копирование плагинов со старого сервера на новый не рекомендуется, так как несовместимые или повторяющиеся плагины могут вызвать ошибки запуска. Анализ всех языков, поддерживаемых версией компонента в базовой конфигурации, не требует использования плагинов.

  4. Обновите содержимое файлов sonar.properties и wrapper.conf в $NEW_CodeScanner_HOME/conf настройками из соответствующих файлов в каталоге $OLD_CodeScanner_HOME/conf (URL-адрес веб-сервера, база данных, настройки LDAP и т. д.). Не копируйте и не вставляйте старые файлы.

  5. Остановите старый сервер CodeScanner.

  6. Запустите новый сервер CodeScanner.

  7. Перейдите по адресу http://{CodeScanner-your-server-url:port}/setup и следуйте инструкциям по установке.

  8. Для актуализации результатов сканирования повторно проанализируйте проекты.

Удаление#

Удаление сервиса#

Для удаления сервиса необходимо удалить каталог установки CodeScanner.

Удаление информации из БД#

Для удаления информации из БД необходимо очистить или удалить БД, используемую для работы CodeScanner.

Проверка работоспособности#

Для проверки работоспособности CodeScanner необходимо выполнить следующие действия:

  1. Обратитесь по адресу http://{code_scanner-ipAddress}:9000, где {code_scanner-ipAddress} — адрес сервера CodeScanner. В появившемся окне авторизуйтесь: введите логин и пароль. Убедитесь, что открылась главная страница CodeScanner.

  2. Перейдите в раздел «Сканирования» и проконтролируйте отображение списка сканирований (непосредственно после установки компонента и до выполнения первого сканирования данный список пуст).

  3. Поочередно перейдите в каждый подраздел бокового меню. Проконтролируйте соответствие отображаемой информации названию подраздела.

  4. Создайте и настройте новое сканирование и выполните анализ проекта. Проконтролируйте успешное создание сканирования и завершение анализа проекта.

  5. Проконтролируйте успешное формирование отчета анализа проекта на странице сканирования в подразделах «Обзор», «Замечания», «Потенциальные уязвимости», «Показатели», «Код», «Активность».

  6. Перейдите на страницу ранее просканированного проекта и проконтролируйте отображение информации о сканировании, отчета анализа проекта, уязвимостей в подразделах «Обзор», «Замечания», «Потенциальные уязвимости», «Показатели», «Код», «Активность».

  7. Проконтролируйте отсутствие возможности выполнения действий, заведомо недоступных текущему пользователю согласно выданной роли.

Работоспособность подтверждается, если каждая из перечисленных операций выполнена успешно и без сообщений об ошибках, а объем отображаемых данных соответствует настройкам прав пользователя.

Откат#

Удаление предыдущей версии CodeScanner перед откатом не требуется.

Для отката к предыдущей версии CodeScanner необходимо выполнить следующие действия:

  1. Выполните резервное копирование БД.

  2. Остановить сервер CodeScanner.

  3. Откатить базу данных CodeScanner до резервной копии, сделанной перед началом обновления.

  4. Установить предыдущую версию CodeScanner, как описано в разделе Установка.

  5. Запустить сервер CodeScanner.

Часто встречающиеся проблемы и пути их устранения#

В текущей версии типовые проблемы не выявлены. В случаях сбоев диагностику ситуации следует начинать со следующих проверок:

  • подключения клиента (компьютера пользователя) к сети;

  • доступности сервера CodeScanner - проверка доступности страниц сервиса;

  • в случае неудачной аутентификации необходимо обратить внимание на корректность введенных учетных данных пользователя.

Чек-лист валидации установки#

  1. Архив с дистрибутивом распакован.

  2. Файл install.sh успешно запущен.

  3. Установка компонента выполнена успешно согласно инструкциям, изложенным в разделе Установка настоящего Руководства:

    1. Выполнены все шаги установки компонента.

    2. При выполнении шагов установки компонента ошибки отсутствовали.

  4. Успешно выполнены все действия раздела Проверка работоспособности настоящего Руководства.

  5. Успешно настроена интеграция с программными продуктами. Подробности приведены в подразделе Платформенные зависимости и Установка настоящего Руководства.