Установка#

Данное руководство предназначено для описания установки Platform V ASOC Control Center в Platform V DropApp при помощи инструментов Platform V DevOps Tools (CDJE).

Порядок установки#

  1. Выбор режима Platform V ASOC Control Center

  2. Настройка подключения модулей Platform V ASOC Control Center (обязательный).

  3. Настройка интеграций (обязательный).

  4. Инициализация справочников и начальных данных.

  5. Развертывание

Выбор режима Platform V ASOC Control Center (обязательный)#

Последовательность действий#

В рамках выполнения шага, необходимо определить в каком режиме требуется функционирование Platform V ASOC Control Center.

В Platform V ASOC Control Center реализовано два режима работы:

  1. Установка в режиме встраивания в OneWork - установка как часть платформы OneWork, интеграция осуществляется через внутренние механизмы платформы. При этом компоненты ASOC используют общую инфраструктуру OneWork, включая аутентификацию, логирование и управление ресурсами.

  2. Установка в режиме Standalone - поднятие Docker-контейнеров на локальной машине или выделенном сервере. В этом режиме система работает независимо от OneWork, все зависимости и сервисы (база данных, брокер сообщений, веб-сервер) запускаются в контейнерах согласно конфигурации в docker-compose.yml. Данный режим подходит для тестирования, разработки или эксплуатации в изолированной инфраструктуре.

Проверка результата#

В результате выполнения шага должно быть однозначно определено, в каком режиме будет функционировать Platform V ASOC Control Center:

  • в режиме встраивания с OneWork;

  • в режиме Standalone.

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

Настройка подключения модулей Platform V ASOC Control Center (обязательный)#

Последовательность действий#

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

Настройка подключения UI Личного кабинета#

Настройка подключения UI Личного кабинета выполняется путем определения параметров. Параметры настройки подключения модуля UI Личного кабинета приведены в Справочнике конфигурационных файлов и параметров.

Настройка подключения SCAMASTER (Dependency Track)#

Для настройки подключения SCAMASTER (Dependency Track), необходимо выполнить следующие шаги:

  1. Перейти в Dependency Track:

       curl --request POST \
       --url https://${asoc-ingress-dependency-track}/api/v1/user/login \
       --header 'Content-Type: application/x-www-form-urlencoded' \
       --data username=admin \
       --data password=admin \
       --insecure
    
  2. Сменить пароль для администратора:

       curl --request POST \
       --url https://${asoc-ingress-dependency-track}/api/v1/user/forceChangePassword \
       --header 'Content-Type: application/x-www-form-urlencoded' \
       --data username=admin \
       --data password=admin \
       --data newPassword=${your_password} \
       --data confirmPassword=${your_password} \
       --insecure
    
  3. Выполнить повторный вход (с использованием нового пароля):

       curl --request POST \
       --url https://${asoc-ingress-dependency-track}/api/v1/user/login \
       --header 'Content-Type: application/x-www-form-urlencoded' \
       --data username=admin \
       --data password=${your_password} \
       --insecure
    

    В ответ вернется токен формата eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImlzcyI6IkRlcGVuZGVuY3ktVHJhY2siLCJpYXQiOjE3NTYzOTMyNjUsImV4cCI6MTc1Njk5ODA2NSwicGVybWlzc2lvbnMiOiJBQ0NFU1NfTUFOQUdFTUVOVCxCT01fVVBMT0FELFBPTElDWV9NQU5BR0VNRU5ULFBPTElDWV9WSU9MQVRJT05fQU5BTFlTSVMsUE9SVEZPTElPX01BTkFHRU1FTlQsUFJPSkVDVF9DUkVBVElPTl9VUExPQUQsU1lTVEVNX0NPTkZJR1VSQVRJT04sVEFHX01BTkFHRU1FTlQsVklFV19CQURHRVMsVklFV19QT0xJQ1lfVklPTEFUSU9OLFZJRVdfUE9SVEZPTElPLFZJRVdfVlVMTkVSQUJJTElUWSxWVUxORVJBQklMSVRZX0FOQUxZU0lTLFZVTE5FUkFCSUxJVFlfTUFOQUdFTUVOVCxBQ0NFU1NfTUFOQUdFTUVOVCxCT01fVVBMT0FELFBPTElDWV9NQU5BR0VNRU5ULFBPTElDWV9WSU9MQVRJT05fQU5BTFlTSVMsUE9SVEZPTElPX01BTkFHRU1FTlQsUFJPSkVDVF9DUkVBVElPTl9VUExPQUQsU1lTVEVNX0NPTkZJR1VSQVRJT04sVEFHX01BTkFHRU1FTlQsVklFV19CQURHRVMsVklFV19QT0xJQ1lfVklPTEFUSU9OLFZJRVdfUE9SVEZPTElPLFZJRVdfVlVMTkVSQUJJTElUWSxWVUxORVJBQklMSVRZX0FOQUxZU0lTLFZVTE5FUkFCSUxJVFlfTUFOQUdFTUVOVCIsImlkcCI6IkxPQ0FMIn0.340llxFb-A1NTSnRRkcUZyoUvkPmesiDPyWh-lMyEtk

  4. После повторного входа получить список групп администратора:

       curl --request GET \
       --url https://${asoc-ingress-dependency-track}/api/v1/team/ \
       --header 'Authorization: Bearer ${your_token}' \
       --insecure
    

    В ответ вернется json-файл со списком групп. В полученном json-файле, необходимо:

    • найти следующий фрагмент данных:

    {
    "uuid":"0c9e175e-a1c7-4144-b1ec-b7aaaf3a2857",
    "name":"Administrators"
    }
    
    • скопировать значение поля uuid.

Настройка подключения SCA-адаптер#

Настройка подключения SCA-адаптера выполняется путем определения параметров. Параметры настройки подключения модуля SCA-адаптер приведены в Справочнике конфигурационных файлов и параметров.

Настройка подключения Dependency track tool adapter#

Настройка подключения Dependency track tool adapter выполняется путем определения параметров. Параметры настройки подключения модуля Dependency track tool adapter приведены в Справочнике конфигурационных файлов и параметров.

Настройка подключения SASTMASTER#

Настройка подключения SASTMASTER, TASKMANAGER и инструментов сканирования SASTMASTER выполняется путем определения параметров. Параметры настройки подключения приведены в Справочнике конфигурационных файлов и параметров.

Настройка подключения модуля Orchestrator#

Настройка подключения модуля Orchestrator выполняется путем определения параметров. Параметры настройки подключения приведены в Справочнике конфигурационных файлов и параметров.

Настройка подключения модуля Access Control Service#

Настройка подключения модуля Access Control Service выполняется путем определения параметров. Параметры настройки подключения приведены в Справочнике конфигурационных файлов и параметров.

Настройка подключения модуля Project Store#

Настройка подключения модуля Project Store выполняется путем определения параметров. Параметры настройки подключения приведены в Справочнике конфигурационных файлов и параметров.

Настройка подключения модуля Сервис хранения единой базы уязвимостей#

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

Настройка подключения модуля Личный кабинет#

Подключение модуля Личный кабинет не требует заполнения параметров.

Проверка результата#

В результате выполнения шага все модули Platform V ASOC Control Center должны быть корректно настроены для взаимодействия между собой и с внешними системами.

Для проверки корректности работы модулей Platform V ASOC Control Center, необходимо выполнить шаги по проверке работоспособности описанные в разделе Чек-лист проверки корректности работы.

Настройка интеграций (обязательный)#

В рамках выполнения шага, требуется настроить необходимые для работы интеграции:

Последовательность действий#

Настройка интеграции с Базой данных ASOC (Platform V Pangolin DB)#

Для настройки интеграции с Базой данных ASOC, в файле ConfigMap.yml каждого сервиса имеющего подключение к БД, необходимо заполнить параметры:

  • DB_URL - URL подключения к БД;

  • DB_DRIVER - Класс драйвера БД;

  • DB_USER - пользователь.

В DropApp создать секцию secrets и заполнить следующие параметры:

  • asoc.database.certs.deploy - разворачивать ли TLS-сертификаты для подключения к БД;

  • asoc.ose.istio.type - тип интеграции с Istio в OpenShift;

  • asoc.ose.secrets.deploy - автоматическое создание Kubernetes Secrets из значений Helm.

Подробное описание и пример заполнения параметров приведено в таблице.

Имя параметра

Описание параметра

Пример заполнения

DB_URL

URL подключения к БД

jdbc:postgresql://vm-asoc-asoc-psql-001.vdc01.sc.dev.mycompany:5432/test_asoc?prepareThreshold=0&currentSchema=asoc

DB_DRIVER

Класс драйвера БД

org.postgresql.Driver

DB_USER

Имя пользователя для подключения к БД

test_asoc

asoc.database.certs.deploy

Разворачивать ли TLS-сертификаты для подключения к БД. Значение по умолчанию: false. Доступные значения: true - сертификаты (CA, client cert/key) будут созданы как Kubernetes Secret и смонтированы в поды

false

asoc.ose.istio.type

Тип интеграции с Istio в OpenShift. Определяет, как сервисы ASOC взаимодействуют с service-mesh Istio. Доступные значения: sidecar, gateway, none

sidecar

asoc.ose.secrets.deploy

Автоматическое создание Kubernetes Secrets из значений Helm. Доступные значения: true - создать автоматически, false - не создавать автоматически

true

Необходимо выполнить установку и конфигурирование базы данных согласно руководству по установке продукта Platform V Pangolin DB.

Настройка интеграции с Platform V IAM#

Для настройки интеграции, необходимо предварительно получить сертификаты необходимой точки подключения и создать ответвление в Platform V IAM.

Процесс выпуска и подготовки сертификатов описан в разделе Подготовка окружения.

Настройка интеграции с Platform V Keycloak (KCSE)#

Для настройки интеграции с Platform V Keycloak (KCSE), необходимо задать параметр приведенный в таблице. Параметр задается в файле asoc-cm-personal-office.yaml.

Имя параметра

Описание параметра

Пример заполнения

AUTH_ROLE_PATH

Путь до ролей в токене аутентификации

realm_access.roles

Глобальные роли в клиенте OneWork#

Для корректной работы системы ASOC через интеграцию с Keycloak, в клиенте OneWork должны быть назначены следующие глобальные роли пользователям, взаимодействующим с ASOC:

Роль

Описание

ROLE_AS53.10_GLOBAL_MANAGER

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

ROLE_AS53.10_USER

Базовая роль пользователя, предоставляющая доступ к проектам, данным и функционалу для выполнения повседневных задач в ASOC

ROLE_AS53.10_GLOBAL_DEVOPS

Глобальная роль DevOps-специалиста, отвечающего за интеграцию, настройку CI/CD и поддержку инфраструктуры безопасности

Эти роли должны быть добавлены в конфигурацию клиента OneWork в Keycloak.

Настройка интеграции с Platform V IAM Proxy#

Для настройки интеграции с Platform V IAM Proxy, необходимо создать junction (ответвление) на IAM proxy, это обеспечит перенаправление запросов к UI ASOC.

Пример junction (ответвления), для секции proxy_jct_list, для компонента ASOC:

   JunctionConfig[asoc-dev1]:
     junctionName: "ASOC / DEV1"                                                                                     # Имя ответвления
     junctionPoint: /asoc-dev1                                                                                       # Точка входа в ответвление
     indexUrl: /asoc                                                                                                 # Стартовая страница внутри ответвления
     transparent: false                                                                                              # Режим прозрачности ответвления (по умолчанию false)
     https: true                                                                                                     # Использовать HTTPS для соединения (по умолчанию true)
     sslCommonName: "office-ui-asoc-dev-1.apps.dap.devpub-02.solution.mycompny"                                      # Шаблон имени из CN сертификата backend-серверов
     applyJctRequestFilter: "common/rds-set-header-host-to-backend.location.conf, common/rds-ssl-sni-on.server.conf" # Список применяемых фильтров запросов
     serverAddresses:
       - office-ui-asoc-dev-1.apps.dap.devpub-02.solution.mycompny:443                                               # Хост сервиса ASOC

Процесс создания ответвлений описан в документации продукта Platform V IAM.

Настройка интеграции с Platform V S-UP#

Для настройки интеграции с Platform V S-UP, необходимо указать в файле конфигурации следующие переменные:

  • S3_BUCKET - название бакета;

  • S3_URL - URL подключения к S3;

  • S3_REGION - регион, где развернуто объектное хранилище S3;

  • EXPIRY_MINUTES - время жизни подписанной ссылки на файл (в минутах);

В DropApp в секции secrets заполнить следующие параметры:

  • S3_ACCESS_KEY - ключ доступа;

  • S3_SECRET_KEY - секретный ключ.

Подробное описание и пример заполнения параметров приведено в таблице.

Имя параметра

Описание параметра

Пример заполнения

S3_BUCKET

Имя S3-бакета, в котором хранятся артефакты (например, результаты сканирований, отчеты)

asoc-artifacts-prod

S3_URL

URL-адрес S3-совместимого хранилища Platform V S-UP для подключения по REST API. Должен включать схему (http:// или https://)

https://s3.cloud.ru

S3_REGION

Регион размещения S3-хранилища. Используется для корректной аутентификации и маршрутизации запросов

ru-central-1

EXPIRY_MINUTES

Срок действия временной подписанной ссылки (presigned URL) на скачивание или загрузку файла, в минутах

1440 (24 часа)

S3_ACCESS_KEY

Идентификатор ключа доступа (access key ID) для аутентификации в Platform V S-UP. Аналог логина

AxxAIxxFOxxN7xxAMxxE

S3_SECRET_KEY

Секретный ключ (secret access key), используемый для подписи запросов к Platform V S-UP. Аналог пароля. Должен храниться в секрете

wJxxrxxtxxExx/xxMxxNG/bxxRxxCxxXAxxLExxY

S3_CHECKSUM_PAYLOAD

Алгоритм расчета контрольной суммы для проверки целостности передаваемого payload

SIGNED-PAYLOAD

S3_PATH_STYLE

Режим адресации S3 (используется для старых версий S3, где требуется явное указание стиля адресации)

false

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

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

  • Параметр S3_CHECKSUM_PAYLOAD должен быть установлен в значение UNSIGNED-PAYLOAD, так как MinIO не поддерживает подписанные контрольные суммы.

  • Параметр S3_PATH_STYLE должен быть установлен в значение true, чтобы использовать классический стиль адресации, который поддерживается MinIO.

Настройки MinIO аналогичны настройкам Platform V S-UP, за исключением указанных выше параметров.

Настройка интеграции с Platform V Corax#

Для настройки интеграции с Platform V Corax, необходимо заполнить параметры в файле values.yaml всех компонентов пайплайна взаимодействующих с Platform V Corax.

Параметры настройки модуля Orchestrator#

Ниже приведены параметры конфигурации модуля Orchestrator, необходимые для установки безопасного соединения, включая настройки протокола, аутентификации и управления сертификатами.

Имя параметра

Описание параметра

Пример заполнения

bootstrap_servers

Список Kafka-брокеров (хост и порт), к которым подключается клиент для инициализации соединения с кластером

vm-asoc-asoc-kafka-1.vdc1.sc.dev.mycompany:0000

protocol

Протокол аутентификации и шифрования при подключении к Kafka

SSL

ssl_protocol

Версия протокола

TLSv1.3

truststore_location

Путь к файлу в хранилище доверенных сертификатов на файловой системе контейнера

/app/certs/kafka.jks

truststore_password

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

qwe123

truststore_type

Тип хранилища сертификатов

JKS

keystore_location

Путь к файлу в хранилище ключей на файловой системе контейнера

/app/certs/kafka.jks

keystore_password

Пароль для доступа к хранилищу ключей

qwe123

key_password

Пароль от приватного ключа внутри хранилища ключей. Может совпадать с keystore_password

qwe123

keystore_type

Тип хранилища ключей

JKS

Параметры настройки модуля Project Store#

Ниже приведены параметры конфигурации модуля Project Store, необходимые для установки защищенного соединения.

Имя параметра

Описание параметра

Пример заполнения

kafka.protocol

Протокол подключения к Kafka. Значение SSL включает шифрование соединения и аутентификацию на уровне TLS

SSL

kafka.ssl_protocol

Версия протокола

TLSv1.2

kafka.truststore_location

Путь к файлу в хранилище доверенных сертификатов на файловой системе контейнера

/app/certs/kafka.jks

kafka.truststore_password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.truststore_type

Формат хранилища доверенных сертификатов

JKS

kafka.keystore_location

Путь к файлу в хранилище ключей на файловой системе контейнера

/app/certs/kafka.jks

kafka.keystore_password

Пароль для доступа к хранилищу ключей

qwe123

kafka.key_password

Пароль от приватного ключа, хранящегося внутри хранилища ключей. Может совпадать с keystore_password

qwe123

kafka.keystore_type

Формат хранилища ключей клиента

JKS

Параметры модуля SASTMASTER#
Параметры SAST-адаптера#

Ниже приведены параметры конфигурации SAST-адаптера, отвечающие за:

  • Подключение к Kafka с использованием SSL;

  • Настройку уровня логирования;

  • Опции запуска JVM (параметры производительности и кодировки).

Имя параметра

Описание параметра

Пример заполнения

kafka.protocol

Протокол подключения к Kafka. Значение SSL включает шифрование и аутентификацию на уровне TLS

SSL

kafka.ssl_protocol

Версия протокола

TLSv1.3

kafka.truststore_location

Путь к файлу в к хранилище доверенных сертификатов

file:/app/certs/kafka.jks

kafka.truststore_password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.truststore_type

Формат хранилища доверенных сертификатов

JKS

kafka.keystore_location

Путь к файлу в хранилище ключей

file:/app/certs/kafka.jks

kafka.keystore_password

Пароль для доступа к хранилищу ключей

qwe123

kafka.keystore_type

Формат хранилища ключей клиента

JKS

kafka.key_password

Пароль от приватного ключа внутри хранилища ключей. Может совпадать с keystore_password

qwe123

kafka.sast_tasks_topic

Название топика Kafka, в который публикуются задачи SAST-анализа

sast.tasks

kafka.task_status_topic

Название топика Kafka, используемого для обновления статуса задач анализа

sast.task.status

Параметры инструмента сканирования Gitleaks#

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

Имя параметра

Описание параметра

Пример заполнения

kafka.user

Имя пользователя для аутентификации в Kafka. Пустое значение — если аутентификация не требует логина

kafka-user

kafka.password

Пароль пользователя Kafka

secret123

kafka.host

Хост (FQDN) брокера Kafka, к которому подключается клиент

vm-asoc-asoc-kafka-103.vdc13.sc.dev.mycompany

kafka.port

Порт брокера Kafka для подключения

9093

kafka.connect.mandatory

Определяет, является ли подключение к Kafka обязательным при старте приложения. Если true — приложение не запустится без Kafka

true

kafka.connect.test

Флаг, указывающий, нужно ли выполнять тестовое подключение к Kafka при старте. Если true — тестовое подключение выполняется

false

kafka.mechanism

Механизм аутентификации. NONE — если используется только SSL

NONE

kafka.ssl.enabled

Включает использование SSL/TLS для шифрования соединения с Kafka

true

kafka.ssl.keystore.type

Тип хранилища ключей клиента

X509

kafka.ssl.keystore.location

Путь к файлу сертификата клиента, используемому для аутентификации в Kafka

/app/certs/kafka.cert

kafka.ssl.keystore.password

Путь к файлу приватного ключа клиента (не пароль)

/app/certs/kafka.key

kafka.ssl.truststore.type

Тип хранилища доверенных сертификатов

PEM

kafka.ssl.truststore.location

Путь к файлу с доверенными сертификатами

/app/certs/kafka.cert

kafka.ssl.truststore.password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.scram.algorithm

Алгоритм хеширования для SCRAM-аутентификации

SHA256

kafka.group

Имя группы потребителей (consumer group), к которой принадлежит приложение

gitleaks

kafka.topic.tool

Название топика Kafka, связанного с инструментом анализа

GITLEAKS

Параметры инструмента сканирования Gosec#

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

Имя параметра

Описание параметра

Пример заполнения

kafka.user

Имя пользователя для аутентификации в Kafka. Пустое значение — если аутентификация не требует логина.

kafka-user

kafka.password

Пароль пользователя Kafka

secret123

kafka.host

Хост (FQDN) брокера Kafka, к которому подключается клиент

vm-asoc-asoc-kafka-103.vdc13.sc.dev.mycompany

kafka.port

Порт брокера Kafka для подключения

9093

kafka.connect.mandatory

Определяет, является ли подключение к Kafka обязательным при старте приложения. Если true — приложение не запустится без Kafka

true

kafka.connect.test

Флаг, указывающий, нужно ли выполнять тестовое подключение к Kafka при старте. Если true — тестовое подключение выполняется

false

kafka.mechanism

Механизм аутентификации. NONE — если используется только SSL/TLS

NONE

kafka.ssl.enabled

Включает использование SSL/TLS для шифрования соединения с Kafka

true

kafka.ssl.keystore.type

Тип хранилища ключей клиента

X509

kafka.ssl.keystore.location

Путь к файлу сертификата клиента, используемому для аутентификации в Kafka

/app/certs/kafka.cert

kafka.ssl.keystore.password

Путь к файлу приватного ключа клиента (не пароль)

/app/certs/kafka.key

kafka.ssl.truststore.type

Тип хранилища доверенных сертификатов

PEM

kafka.ssl.truststore.location

Путь к файлу с доверенными сертификатами

/app/certs/kafka.cert

kafka.ssl.truststore.password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.scram.algorithm

Алгоритм хеширования для SCRAM-аутентификации

SHA256

kafka.group

Имя группы потребителей (consumer group), к которой принадлежит приложение

gosec

kafka.topic.tool

Название топика Kafka, связанного с инструментом анализа

GOSEC

Параметры инструмента сканирования Infer#

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

Имя параметра

Описание параметра

Пример заполнения

kafka.user

Имя пользователя для аутентификации в Kafka (используется при SCRAM или SASL). Пустое значение — если аутентификация не требует логина

kafka-user

kafka.password

Пароль пользователя Kafka

secret123

kafka.host

Хост (FQDN) брокера Kafka, к которому подключается клиент

vm-asoc-asoc-kafka-103.vdc13.sc.dev.mycompany

kafka.port

Порт брокера Kafka для подключения

9093

kafka.connect.mandatory

Определяет, является ли подключение к Kafka обязательным при старте приложения. Если true — приложение не запустится без Kafka

true

kafka.connect.test

Флаг, указывающий, нужно ли выполнять тестовое подключение к Kafka при старте. Если true — тестовое подключение выполняется

false

kafka.mechanism

Механизм аутентификации. NONE — если используется только SSL/TLS

NONE

kafka.ssl.enabled

Включает использование SSL/TLS для шифрования соединения с Kafka

true

kafka.ssl.keystore.type

Тип хранилища ключей клиента

X509

kafka.ssl.keystore.location

Путь к файлу сертификата клиента

/app/certs/kafka.cert

kafka.ssl.keystore.password

Путь к файлу приватного ключа клиента (не пароль)

/app/certs/kafka.key

kafka.ssl.truststore.type

Тип хранилища доверенных сертификатов

PEM

kafka.ssl.truststore.location

Путь к файлу с доверенными сертификатами

/app/certs/kafka.cert

kafka.ssl.truststore.password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.scram.algorithm

Алгоритм хеширования для SCRAM-аутентификации

SHA256

kafka.group

Имя группы потребителей (consumer group), к которой принадлежит приложение

infer

kafka.topic.tool

Название топика Kafka, связанного с инструментом анализа

INFER

Параметры инструмента сканирования PTAI#

Конфигурация включает настройки подключения, безопасности, групп потребителей и топиков, что обеспечивает над ежное и защищ енное взаимодействие с инфраструктурой.

Имя параметра

Описание параметра

Пример заполнения

kafka.user

Имя пользователя для аутентификации в Kafka (используется при SCRAM или SASL). Пустое значение — если аутентификация не требует логина

kafka-user

kafka.password

Пароль пользователя Kafka

secret123

kafka.host

Хост (FQDN) брокера Kafka, к которому подключается клиент

vm-asoc-asoc-kafka-103.vdc13.sc.dev.mycompany

kafka.port

Порт брокера Kafka для подключения

9093

kafka.connect.mandatory

Определяет, является ли подключение к Kafka обязательным при старте приложения. Если true — приложение не запустится без Kafka

true

kafka.connect.test

Флаг, указывающий, нужно ли выполнять тестовое подключение к Kafka при старте. Если true — тестовое подключение выполняется

false

kafka.mechanism

Механизм аутентификации. NONE — если используется только SSL/TLS

NONE

kafka.ssl.enabled

Включает использование SSL/TLS для шифрования соединения с Kafka.

true

kafka.ssl.keystore.type

Тип хранилища ключей клиента

X509

kafka.ssl.keystore.location

Путь к файлу сертификата клиента , используемому для аутентификации в Kafka

/app/certs/kafka.cert

kafka.ssl.keystore.password

Путь к файлу приватного ключа клиента (не пароль)

/app/certs/kafka.key

kafka.ssl.truststore.type

Тип хранилища доверенных сертификатов

PEM

kafka.ssl.truststore.location

Путь к файлу с доверенными сертификатами .

/app/certs/kafka.cert

kafka.ssl.truststore.password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.scram.algorithm

Алгоритм хеширования для SCRAM-аутентификации

SHA256

kafka.group

Имя группы потребителей (consumer group), к которой принадлежит приложение

ptai

kafka.topic.tool

Название топика Kafka, связанного с инструментом анализа

PTAI

Параметры инструмента сканирования Semgrep#

Конфигурация включает настройки подключения, безопасности, групп потребителей и топиков, что обеспечивает над ежное и защищ енное взаимодействие с инфраструктурой.

Имя параметра

Описание параметра

Пример заполнения

kafka.user

Имя пользователя для аутентификации в Kafka (используется при SCRAM или SASL). Пустое значение — если аутентификация не требует логина

kafka-user

kafka.password

Пароль пользователя Kafka

secret123

kafka.host

Хост (FQDN) брокера Kafka, к которому подключается клиент

vm-asoc-asoc-kafka-103.vdc13.sc.dev.mycompany

kafka.port

Порт брокера Kafka для подключения

9093

kafka.connect.mandatory

Определяет, является ли подключение к Kafka обязательным при старте приложения. Если true — приложение не запустится без Kafka

true

kafka.connect.test

Флаг, указывающий, нужно ли выполнять тестовое подключение к Kafka при старте. Если true — тестовое подключение выполняется

false

kafka.mechanism

Механизм аутентификации. NONE — если используется только SSL/TLS

NONE

kafka.ssl.enabled

Включает использование SSL/TLS для шифрования соединения с Kafka

true

kafka.ssl.keystore.type

Тип хранилища ключей клиента

X509

kafka.ssl.keystore.location

Путь к файлу сертификата клиента, используемому для аутентификации в Kafka

/app/certs/kafka.cert

kafka.ssl.keystore.password

Путь к файлу приватного ключа клиента (не пароль)

/app/certs/kafka.key

kafka.ssl.truststore.type

Тип хранилища доверенных сертификатов

PEM

kafka.ssl.truststore.location

Путь к файлу с доверенными сертификатами

/app/certs/kafka.cert

kafka.ssl.truststore.password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.scram.algorithm

Алгоритм хеширования для SCRAM-аутентификации

SHA256

kafka.group

Имя группы потребителей (consumer group), к которой принадлежит приложение

semgrep

kafka.topic.tool

Название топика Kafka, связанного с инструментом анализа

SEMGREP

Параметры инструмента сканирования Svace#

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

Имя параметра

Описание параметра

Пример заполнения

kafka.user

Имя пользователя для аутентификации в Kafka (используется при SCRAM или SASL). Пустое значение — если аутентификация не требует логина

kafka-user

kafka.password

Пароль пользователя Kafka

secret123

kafka.host

Хост (FQDN) брокера Kafka, к которому подключается клиент

vm-asoc-asoc-kafka-103.vdc13.sc.dev.mycompany

kafka.port

Порт брокера Kafka для подключения

9093

kafka.connect.mandatory

Определяет, является ли подключение к Kafka обязательным при старте приложения. Если true — приложение не запустится без Kafka

true

kafka.connect.test

Флаг, указывающий, нужно ли выполнять тестовое подключение к Kafka при старте. Если true — тестовое подключение выполняется

false

kafka.mechanism

Механизм аутентификации. NONE — если используется только SSL/TLS

NONE

kafka.ssl.enabled

Включает использование SSL/TLS для шифрования соединения с Kafka

true

kafka.ssl.keystore.type

Тип хранилища ключей клиента

X509

kafka.ssl.keystore.location

Путь к файлу сертификата клиента, используемому для аутентификации в Kafka

/app/certs/kafka.cert

kafka.ssl.keystore.password

Путь к файлу приватного ключа клиента (не пароль)

/app/certs/kafka.key

kafka.ssl.truststore.type

Тип хранилища доверенных сертификатов

PEM

kafka.ssl.truststore.location

Путь к файлу с доверенными сертификатами

/app/certs/kafka.cert

kafka.ssl.truststore.password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.scram.algorithm

Алгоритм хеширования для SCRAM-аутентификации

SHA256

kafka.group

Имя группы потребителей (consumer group), к которой принадлежит приложение

svace

kafka.topic.tool

Название топика Kafka, связанного с инструментом анализа

SVACE

Параметры модуля SCAMASTER#
Параметры SCA-адаптер#

Модуль интегрирован с кластером Platform V Corax и использует защищенное соединение по протоколу SSL/TLS. Аутентификация осуществляется с помощью хранилища ключей и хранилища доверенных сертификатов.

Имя параметра

Описание параметра

Пример заполнения

kafka.bootstrap_servers

Список брокеров Kafka (хост:порт), к которым подключается клиент для инициализации соединения с кластером

vm-asoc-asoc-kafka-103.vdc13.sc.dev.mycompany:9093

kafka.protocol

Протокол подключения к Kafka

SSL

kafka.ssl_protocol

Версия протокола TLS, используемая для безопасного соединения

TLSv1.3

kafka.truststore_location

Путь к файлу хранилища доверенных сертификатов на файловой системе контейнера

/app/certs/kafka.jks

kafka.truststore_password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.truststore_type

Формат хранилища доверенных сертификатов

JKS

kafka.keystore_location

Путь к файлу хранилища ключей на файловой системе контейнера

/app/certs/kafka.jks

kafka.keystore_password

Пароль для доступа к хранилищу ключей

qwe123

kafka.key_password

Пароль от приватного ключа, хранящегося внутри хранилища ключей

qwe123

kafka.keystore_type

Формат хранилища ключей

JKS

Параметры модуля Dependency track tool adapter#

Модуль настроен на работу с кластером Platform V Corax по защищенному протоколу SSL/TLS с использованием взаимной аутентификации (mTLS). Для аутентификации применяются хранилище ключей и хранилище доверенных сертификатов.

Имя параметра

Описание параметра

Пример заполнения

kafka.bootstrap_servers

Список брокеров Kafka (хост:порт), к которым подключается клиент для инициализации соединения с кластером

vm-asoc-asoc-kafka-103.vdc13.sc.dev.mycompany:9093

kafka.protocol

Протокол подключения к Kafka

SSL

kafka.ssl_protocol

Версия протокола TLS, используемая для безопасного соединения

TLSv1.3

kafka.truststore_location

Путь к файлу хранилища доверенных сертификатов на файловой системе контейнера

/app/certs/kafka.jks

kafka.truststore_password

Пароль для доступа к хранилищу доверенных сертификатов

qwe123

kafka.truststore_type

Формат хранилища доверенных сертификатов

JKS

kafka.keystore_location

Путь к файлу хранилища ключей на файловой системе контейнера

/app/certs/kafka.jks

kafka.keystore_password

Пароль для доступа к хранилищу ключей

qwe123

kafka.key_password

Пароль от приватного ключа, хранящегося внутри хранилища ключей

qwe123

kafka.keystore_type

Формат хранилища ключей

JKS

Настройка подключения модуля Дашборд (Microfrontend)#

Подключение модуля Дашборд (Microfrontend) не требует заполнения параметров.

Настройка Platform V ASOC Control Center для работы в едином меню OneWork#

Настройка для работы в едином меню OneWork, выполняется в соответствии с разделом «Внутренние событийные топики Kafka для интеграции новых инструментов» руководства прикладного разработчика документации продукта Platform V Works OneWork.

Для работы в едином меню OneWork, в Platform V ASOC Control Center реализован OneWork-адаптер. Описание OneWork-адаптера приведено в разделе OneWork-адаптер руководства прикладного разработчика ASOC.

Настройка встраивания Microfrontend Platform V ASOC Control Center в OneWork#

Для интеграции UI Личного кабинета ASOC в единое меню OneWork реализована поддержка архитектуры Microfrontend (MFE) на базе Module Federation 2.0. Это позволяет отображать интерфейс ASOC как встроенный компонент в рамках хост-приложения OneWork.

Настройка включает два этапа:

Подготовка и запуск Microfrontend Platform V ASOC Control Center#

Microfrontend Platform V ASOC Control Center — это отдельное React-приложение, которое должно быть собрано и размещено в доступном для OneWork статическом хранилище (например, через ssd-proxy-ws или Platform V SynGX).

Для установки зависимостей и запуска Microfrontend Platform V ASOC Control Center, необходимо выполнить команды:

   npm install
   npm start

Приложение запускается на localhost:8080 и предоставляет:

  • UI Личного кабинета ASOC.

  • Файл mf-manifest.json — точку входа для загрузки микрофронтенда в OneWork.

Конфигурация взаимодействия с OneWork задается в файле oneWorkSideMenu.ts компонента UI Личного кабинета. Для конфигурации взаимодействия с OneWork, необходимо задать параметры приведенные в таблице.

Имя параметра

Описание параметра

Пример заполнения

toolKey

Уникальный ключ инструмента в OneWork. Значение по умолчанию asoc. Параметр должен соответствовать зарегистрированному ключу в системе OneWork

asoc

contextUri

Относительный путь к проекту в UI ASOC. Определяет, какой контекст будет передан при переходе из OneWork в ASOC

/sast/...

Настройка параметров Kafka для OneWork-адаптера#

Для обмена событиями между Platform V ASOC Control Center и OneWork используется интеграция через Kafka. После получения из документации OneWork адресов Kafka-брокеров, названий топиков (inbound, outbound) и параметров безопасности (при использовании), необходимо настроить asoc-one-work-adapter в файле values.yaml.

Адаптер использует следующие топики для обмена сообщениями:

  • project_operation_topic — операции по проектам (из OneWork в ASOC);

  • project_operation_reply_topic — ответы на операции по проектам;

  • user_role_operation_topic — операции по ролям пользователей;

  • user_role_operation_reply_topic — ответы на операции по ролям.

Параметры подключения к Kafka

Имя параметра

Описание параметра

Пример заполнения

asoc_one_work_adapter_cm.kafka.bootstrap_servers

Список адресов Kafka-брокеров OneWork

vm-asoc-asoc-kafka-103.vdc13.sc.dev.sbt:9093

asoc_one_work_adapter_cm.kafka.protocol

Протокол подключения: SSL, SASL_SSL

SSL

asoc_one_work_adapter_cm.kafka.ssl_protocol

Версия SSL/TLS протокола

TLSv1.3

asoc_one_work_adapter_cm.kafka.truststore_location

Путь к truststore внутри контейнера

/app/certs/kafka.jks

asoc_one_work_adapter_cm.kafka.truststore_type

Тип хранилища доверенных сертификатов

JKS

asoc_one_work_adapter_cm.kafka.keystore_location

Путь к keystore

/app/certs/kafka.jks

asoc_one_work_adapter_cm.kafka.keystore_type

Тип хранилища закрытых ключей

JKS

Параметры топиков Kafka

Имя параметра

Описание параметра

Пример заполнения

asoc_one_work_adapter_cm.project_operation_topic

Топик для операций по проектам (OneWork → ASOC)

TEST.TOPIC4ONEWADAPT

asoc_one_work_adapter_cm.project_operation_reply_topic

Топик для ответов на операции по проектам

TEST.TOPIC4ONEWADAPT

asoc_one_work_adapter_cm.user_role_operation_topic

Топик для операций по ролям пользователей

TEST.TOPIC4ONEWADAPT

asoc_one_work_adapter_cm.user_role_operation_reply_topic

Топик для ответов на операции по ролям

TEST.TOPIC4ONEWADAPT

Настройка доступа к базе данных и Kafka (через Secrets)

В values.yaml параметры, требующие повышенной безопасности, задаются через тройки полей:
имя переменной окружения, имя Kubernetes Secret, ключ в секрете.

Группа параметра

Имя переменной (env)

Имя Secret

Ключ в Secret

Пароль БД

db_userpass_name

db_userpass_secret_name

db_userpass_secret_key

Пароль truststore

kafka_truststore_password_name

kafka_truststore_password_secret_name

kafka_truststore_password_secret_key

Пароль keystore

keystore_password_name

kafka_keystore_password_secret_name

kafka_keystore_password_secret_key

Пароль ключа

kafka_key_password_name

kafka_key_password_secret_name

kafka_key_password_secret_key

Пример конфигурации в values.yaml:

   asoc-one-work-adapter:
     enabled: true
     db_userpass_secret_key: '<DB_PASSWORD>'
     db_userpass_secret_name: 'asoc-secret'
     kafka_truststore_password_secret_name: 'asoc-secret'
     kafka_truststore_password_secret_key: '<kafka-keystore-password>'
     kafka_keystore_password_secret_name: 'asoc-secret'
     kafka_keystore_password_secret_key: '<kafka-keystore-password>'
     kafka_key_password_secret_name: 'asoc-secret'
     kafka_key_password_secret_key: '<kafka-keystore-password>'
     asoc_one_work_adapter_cm:
       stand_type: 'STANDTYPE'
       one_work_host: 'http'
       db:
         driver: org.postgresql.Driver
         user: 'user'
         server: 'FQDN.DB.host'
         port: 5432
         postfix: 'asoc_postgres?currentSchema=asoconeworkadapter'
         schema: asoconeworkadapter
       kafka:
         bootstrap_servers: 'FQDN.Kafka.host:port.FQDN.Kafka2.host:port'
         protocol: 'SSL'
         ssl_protocol: 'TLSv1.3'
         truststore_location: '/app/certs/kafka.jks'
         truststore_type: 'JKS'
         keystore_location: '/app/certs/kafka.jks'
         keystore_type: 'JKS'
       project_operation_topic: 'onework.project.operations.asoc'
       project_operation_reply_topic: 'asoc.project.operations.reply'
       user_role_operation_topic: 'onework.user.roles.asoc'
       user_role_operation_reply_topic: 'asoc.user.roles.reply'

Необходимо убедиться, что сертификаты доступны в контейнере. Имена топиков и хосты Kafka должны быть согласованы с администратором OneWork. Значения топиков в примере (TEST.TOPIC4ONEWADAPT) являются заглушками — их необходимо заменить на реальные. Настройки безопасности должны соответствовать политике OneWork.

Конфигурация хост-приложения OneWork для встраивания Microfrontend Platform V ASOC Control Center#

Для встраивания Microfrontend Platform V ASOC Control Center в OneWork необходимо настроить хост-приложение (например, через ssd-proxy-ws или Platform V SynGX). Для встраивания Microfrontend Platform V ASOC Control Center в OneWork, необходимо выполнить следующие шаги:

  1. Определить префикс маршрутизации. Для Platform V ASOC Control Center, необходимо выделить уникальный префикс, например:
    /asoc/* → onework.ru/asoc/*.

  2. Настроить конфигурацию Microfrontend. Хост-приложение OneWork должно получать два JSON-файла через специальные location-роуты:

    • Конфигурация инструментов (роут /api/remote-routes) содержит список Microfrontend, загружаемых по требованию. Пример конфигурации (в Platform V SynGX или ssd-proxy-ws):

         location = /api/remote-routes {
             add_header 'Content-Type' 'application/json';
             return 200 '
             [
               {
                  "path": "/asoc/*",
                  "id": "asoc",
                  "name": "ASOC",
                  "options": {
                    "name": "export-app",
                    "url": "/external/asoc/mf-manifest.json"
                }
              }
            ]
            ';
           }
      

      Пояснение полей:

      • path — путь в URL, по которому будет доступен ASOC.

      • id — уникальный идентификатор экземпляра.

      • name — отображаемое имя.

      • options.name — ключ, экспортируемый в Module Federation (по умолчанию export-app).

      • options.url — путь к mf-manifest.json микрофронтенда.

    • Конфигурация общих microfrontend (роут /api/common-mf). Используется для сквозных компонентов (например, боковое меню), но может включать и ASOC, если требуется постоянная загрузка.

      Пример:

         location = /api/common-mf {
          add_header Content-Type application/json;
          return 200 '
          [
            {
              "name": "asoc",
              "id": "asoc",
              "options": {
                "url": "/external/asoc/mf-manifest.json",
                "entryPointName": "export-app"
              },
              "htmlContainerId": "root"
            }
          ]
          ';
         }
      

      Дополнительно:

      • htmlContainerId — ID HTML-элемента, в который будет смонтирован микрофронтенд.

  3. Размещение конфигурации (при использовании ssd-proxy-ws). Если используется ssd-proxy-ws, конфигурация добавляется в values.yaml сервиса ssd-router:

       ssdProxyWs:
         customRoutes:
           - path: /api/remote-routes
             response: |
               [
                 {
                   "path": "/asoc/*",
                   "id": "asoc",
                   "name": "ASOC",
                   "options": {
                     "name": "export-app",
                     "url": "/external/asoc/mf-manifest.json"
                   }
                 }
               ]
           - path: /api/common-mf
             response: |
               [
                 {
                   "name": "asoc",
                   "id": "asoc",
                   "options": {
                     "url": "/external/asoc/mf-manifest.json",
                     "entryPointName": "export-app"
                   },
                   "htmlContainerId": "root"
                 }
               ]
    

    Важно:

    • Убедитесь, что mf-manifest.json и статические файлы ASOC доступны по пути /external/asoc/.

    • Для локальной разработки может потребоваться настройка проксирования через rsbuild.config.ts и переменная

    • window.REACT_APP_BACKEND.

Эта конфигурация обеспечивает корректное отображение ASOC в едином меню OneWork и поддержку динамической загрузки интерфейса как микрофронтенда.

Настройка интеграции с Системой управления задачами#

В программном продукте Platform V ASOC Control Center реализована интеграция с Системой управления задачами, позволяющая создавать задачи на разметку уязвимостей непосредственно из карточки уязвимости.

Для осуществления связи с Системой управления задачами, в Platform V ASOC Control Center реализован Task Tracker-адаптер. Описание TaskTracker-адаптера приведено в разделе TaskTracker-адаптер руководства прикладного разработчика.

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

Имя параметра

Описание параметра

Заполненные значения

TASK_TRACKER_SBERTECH_FEIGN_CLIENT_URL

Базовый URL внешнего сервиса управления задачами (TaskTracker) для интеграции через Feign-клиент

https://portal.works.prod.mycompany

REFERENCE_TASK_TRACKER_SBERTECH_TASK

Ссылка на внешний ресурс для просмотра созданных задач в системе управления задачами (TaskTracker)

https://portal.works.prod.mycompany/swtr/units/all/unit/

JIRA_FEIGN_CLIENT_URL

Базовый URL системы управления задачами Jira для интеграции через Feign-клиент

https://works.ru/jira

REFERENCE_JIRA_TASK

Ссылка на внешний ресурс для просмотра созданных задач в системе управления задачами Jira

https://works.ru/jira/browse/

PERSONAL_OFFICE_FEIGN_CLIENT_URL

Базовый URL внутреннего сервиса личного кабинета для интеграции

http://localhost:8080/personal-office

TASK_TRACKER_LOGIN

Логин для аутентификации в системе управления задачами при создании задач

sa-asoc-secops

TASK_TRACKER_PASSWORD

Пароль для аутентификации в системе управления задачами (значение передается через безопасное хранилище, не указано напрямую)

pass123

TASK_TRACKER_PARAMETER

Определяет целевую систему для создания задач

TASK-TRACKER

Параметры определяются в файле application-prom.yml.

Пример файле application-prom.yml

Проверка результата#

В результате выполнения шага все интеграции необходимые для работы Platform V ASOC Control Center должны быть корректно настроены.

Для проверки корректности работы интеграций, необходимо выполнить шаги по проверке работоспособности описанные в разделе Чек-лист проверки корректности работы.

Инициализация справочников и начальных данных (обязательный)#

После настройки всех интеграций и перед началом развертывания необходимо инициализировать базовые справочники и начальные данные, необходимые для корректной работы Platform V ASOC Control Center.

Необходимые начальные данные#

В систему должны быть загружены следующие сущности:

  • тенант по умолчанию (key);

  • проект ASOC;

  • точка интеграции (point-key1);

  • артефакты разработки (build, code, artefact, check-in);

  • методы анализа (SAST, SCA);

  • инструменты анализа (ptai, svace, dependency-track) и их конфигурации.

Выполнение инициализации#

Перед выполнением скрипта инициализации справочников и начальных данных необходимо убедиться, что:

  1. Сервисы установлены и запущены:

    • Backend Личного кабинета.

    • Project Store.

    • и другие компоненты, требующие инициализации БД.

  2. Таблицы созданы в схеме БД:

    • Сервисы автоматически создают структуру БД при первом запуске.

    • Поды перешли в статус Running, а логи не содержат ошибок миграций.

  3. Подключение к правильной схеме:

    • Скрипт должен выполняться в схеме Личного кабинета.

    • Перед запуском установите нужную схему. Процесс создания схем подробно описан в разделе Подготовка окружения

Выполните скрипты в базе данных asoc_postgres и схеме asocpersonaloffice под пользователем asoc_user:

  1. Создание тенанта.

Для добавления тенанта, необходимо выполнить переход в схему при помощи команды SET SEARCH_PATH = asocpersonaloffice.

       do 
       language plpgsql 
       $$
       declare
       	tenantKey varchar := 'key';          /* заменить на нужное значение */
       	tenantName varchar := 'MYCOMPANY Tenant';      /* заменить на нужное значение */
       	tenantDesc varchar := 'Тенант MYCOMPANY';      /* заменить на нужное значение */
       	tenantId UUID := gen_random_uuid();
       begin
       	INSERT INTO asocpersonaloffice.tenant 
       	(id, tenant_key, tenant_name, description, owner_login, user_name) 
       	VALUES(tenantId, tenantKey, tenantName, tenantDesc, NULL, NULL);
       end;
       $$;
  1. Создание проекта.

           do 
           language plpgsql
           $$
           declare
           	tenantKey varchar := 'key';           /* заменить на нужное значение */
           	projectKey varchar := 'ASOC';             /* заменить на нужное значение */
           	projectName varchar := 'ASOC Project';    /* заменить на нужное значение */
           	projectDesc varchar := 'Проект ASOC';     /* заменить на нужное значение */
           	projectId UUID := gen_random_uuid();
           begin
               INSERT INTO project(id, "key", "name", description, tenant_id)
               select projectId, projectKey, projectName, projectDesc, t.id
               from tenant t
               where t.tenant_key = tenantKey;
    
               INSERT INTO asocpersonaloffice.product_project_info
               (id, project_code, product_code, releases, "owner")
               VALUES(productInfoId, projectKey, 'cap', '{release 1.0.0 , release 2.0.0}', 'grin.a.m');
           end;
           $$;
    

Важно:

  • Скрипт должен выполняться один раз при первоначальной установке.

  • Убедитесь, что расширение pgcrypto активировано:

       CREATE EXTENSION IF NOT EXISTS pgcrypto;
    

Дополнительная настройка точки встраивания для внешних проверок (опционально)#

Для поддержки запуска SAST-сканирований по архиву исходных текстов реализовано создания новой точки встраивания external-point, с возможностью определения необходимых инструментов сканирования. Для настройки новой точки встраивания необходимо дополнительно настроить точку встраивания с ограниченным набором доступных инструментов сканирования.

Доступна дополнительная настройка сканирования SAST с применением определенного сочетания инструментов сканирования и языков:

  • Инструменты сканирования - infer, Gosec, semgrep, Gitleaks, PTAI, Svace;

  • Языки - go, csharp, dart, ruby, python, java, kotlin, javascript, typescript, hcl, c, php, generic, yaml, elixir, shell.

Настройка точки встраивания#

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

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

Пример настройки точки встраивания external-point. Для настройки необходимо выполнить скрипт:

        do
        language plpgsql
        $$
        declare
            pointExtKey varchar := 'external-point';
            artefactNameBuild varchar := 'build';   возможные значения: 'build', 'merge_request', 'release' и др.
            methodSastName varchar := 'SAST'; Метод анализа — статический анализ кода
            instrumentAsocExtKey varchar := 'asoc-external'; Код инструмента, используемого для внешних проверок
        
            r RECORD; Переменные для итераций по записям
            r1 RECORD; Переменные для итераций по записям
            v RECORD; Переменные для итераций по записям
        begin
        
            INSERT INTO point(id, point_key, description)
            VALUES(gen_random_uuid(), pointExtKey, 'Внешняя проверка')
            ON CONFLICT(point_key) DO NOTHING;
        
            INSERT INTO instrument (id, code, "name", description)
            VALUES(gen_random_uuid(), instrumentAsocExtKey, 'ASOC External', 'Инструмент внешних сканирований ASOC')
            ON CONFLICT(code) DO NOTHING;
        
            for r1 in
                select 
                    (select a.id from development_artifact a where a."name" = artefactNameBuild ) as artId,
                    (select m.id from instrument_method m where m."name" = methodSastName ) as methodId,
                    (select ARRAY_AGG(i.id) from instrument i where i.code in (instrumentAsocExtKey)) as instIds
                loop
                    declare
                        ammId UUID := gen_random_uuid();
                    begin
                        select m.id into ammId 
                        from artifact_method_matrix m
                        where m.artifact_id = r1.artId and m.method_id = r1.methodId;
        
                             for r in select unnest(r1.instIds) as instId loop
                                 declare 
                                     configId UUID := gen_random_uuid();
                                 begin
                                     INSERT INTO instrument_configuration (id, instrument_id, method_id)
                                     VALUES(configId, r.instId, r1.methodId);
        
                                     for v in 
                                         select p.id as point_id 
                                         from point p 
                                         where p.point_key = pointExtKey 
                                     loop
                                         INSERT INTO instrument_point_matrix(
                                             id, 
                                             point_id, 
                                             artifact_method_matrix_id, 
                                             instrument_configuration_id
                                         )
                                         VALUES(
                                            gen_random_uuid(), 
                                            v.point_id, ammId, 
                                            configId
                                        );
                                    end loop;
                                end;
                            end loop;
                        end;
                    end loop;
            end;
        $$;

После выполнения настройки точки встраивания доступна точка встраивания external-point.

Обновление конфигурации SAST Task Manager#

Для обновления конфигурации SAST Task Manager необходимо выполнить следующие действия:

  • Добавить в ConfigMap asoc-cm-sast-task-manager-config-2 секцию из файла asoc-ext-taskman-config.yml, содержащую настройки запуска для инструмента asoc-external.

    Пример заполнения файла asoc-ext-taskman-config.yml:

           decompose:
             instruments:
               - name: asoc-external
                 enabled: true
                 tools:
                   - name: infer
                     enabled: true
                     languages: ["java"]
                   - name: semgrep
                     enabled: true
                     languages: ["go","csharp","dart","ruby","python","java","kotlin","javascript","typescript","hcl","c","php","generic","yaml","elixir","shell"]
    

    В качестве примера используется вариант настройки с использованием инструментов анализа infer, semgrep. После внесения изменений выполните перезапуск пода sast-task-manager командой:

    kubectl rollout restart deployment/sast-task-manager
    
  • Проверить конфигурацию. После выполнения всех шагов можно отправить тестовый запрос на запуск сканирования:

        POST {orchestrator-URL}/v1/scanning/tenant/key/project/ASOC
        Content-Type: application/json
    

    Данный JSON-запрос инициирует процесс внешнего SAST-сканирования через точку встраивания external-point:

       {
       	"version": "test-ext-1",                                                    // Уникальный идентификатор версии приложения или сборки для ассоциации результатов сканирования
       	"pointKey": "external-point",                                               // Ключ точки встраивания, через которую происходит интеграция (должен соответствовать настроенной external-point)
       	"objects": [
       		{
       			"projectStoreBlobObjId": "7xx67xx1-5xxc-4xxd-axxb-4xx77xx08xxb",    // Внутренний ID объекта в хранилище проекта (например, ID коммита или артефакта)
       			"scanTypeObject": "branch",                                         // Тип сканируемого объекта: branch, tag, commit и т.п.
       			"metaData": {
       				"uri": "ssh://git@works.ru:7998/ASOC/asoc-personal-office",     // SSH-адрес репозитория, который будет клонирован для анализа
       				"branch": "dev",                                                // Имя ветки, подлежащей сканированию
       				"hashCommit": "76xx7cxx-5xxc-4xxd-axxb-4exx7axx8exx"            // Хэш коммита, на который делается ссылка (может использоваться для точного воспроизведения)
       			}
       		}
       	]
       }
    

    Ожидаемый результат:

    • Запрос принимается с кодом 202 Accepted.

    • В логах sast-task-manager виден запуск semgrep.

    • Результаты появляются в интерфейсе Личного кабинета.

Развертывание Platform V ASOC Control Center (обязательный)#

В рамках шага, необходимо выполнить процедуру развертывания компонента посредством автоматизированной установки компонента с использованием программного продукта Platform V DevOps Tools (DOT).

В результате настройки и подготовки Platform V DevOps Tools (CDJE) описанных в разделе Подготовка окружения, в Jenkins появится две jenkins job - Service и Deploy:

  • job Service - загружает стандартные конфигурации common из дистрибутива Platform V DevOps Tools в репозитории Bitbucket и обновляет версии конфигураций.

  • job Deploy - устанавливает приложение в кластер Platform V DropApp.

Последовательность действий#

После настройки конфигурационных файлов subsystems.json, multiClusters.json и environment.json необходимо выполнить шаги для установки приложения в кластер:

  1. Выполнить миграцию параметров в job. Для этого нужно запустить job без параметров.

  2. Выполнить миграцию стендозависимых параметров из артефакта конфигурации компонента в репозиторий с конфигурациями функциональных подсистем. Для этого нужно выполнить job с опцией MIGRATION_FP_CONF.

  3. Выполнить настройку стендозависимых параметров.

  4. Выполнить развертывание приложения в Platform V DropApp, запустив job развертывания с параметром OPENSHIFT_DEPLOY.

Пример файла values.yaml#

Пример конфигурационного файла values.yaml, используемого при установке Platform V ASOC Control Center через Helm.

Файл содержит настройки всех компонентов системы:

  • баз данных;

  • Kafka;

  • Ingress;

  • секретов;

  • инструментов анализа.

Примечание:

  • Все значения должны быть адаптированы под целевое окружение.

  • Секреты (пароли, ключи, токены) не должны указываться напрямую — рекомендуется использовать Kubernetes Secrets или HashiCorp Vault.

Полный перечень параметров определяемых в файле values.yaml приведен в Справочнике конфигурационных файлов и параметров.

Проверка результата#

В результате выполнения шага Platform V ASOC Control Center должен быть успешно развернут в кластере Platform V DropApp и находиться в работоспособном состоянии.