Обеспечение безопасности разработки ПО¶
Интеграция с AppSec.Hub¶
AppSec.Code предоставляет возможности по обеспечению защищенности разрабатываемого ПО, основанные на интеграции с платформой безопасной разработки программного обеспечения AppSec.Hub:
- Сканирование приложений, кодовых баз и артефактов на наличие известных уязвимостей.
- Сканирование с использованием различных практик проверки безопасности кода (SAST/SCA/DAST).
- Формирование отчетности о результатах сканирования.
Возможности работы в AppSec.Hub определяются теми правами, которые есть у пользователя AppSec.Hub, использующего свой токен для интеграции.
Подключение на уровне экземпляра¶
-
Зайдите в инструмент AppSec.Hub и авторизуйтесь с правами администратора.
-
В AppSec.Hub нажмите на имя пользователя в правом верхнем углу и в выпадающем меню выберите пункт User Profile.
-
В AppSec.Hub в левом меню User Profile выберите пункт Tokens, а затем нажмите на кнопку Add new в правом верхнем углу.
-
В появившемся окне Create new access token введите название токена и дату истечения срока его действия (необязательное поле).
-
Скопируйте созданный токен из появившегося окна, нажав на кнопку Got it.
-
Вернитесь на главную страницу AppSec.Hub и в левом меню выберите пункт меню Applications.
-
С помощью кнопки Add new, расположенной в правом верхнем углу, добавьте приложение, где будут определены шаблоны пайплайнов, которые будут использоваться при запросах сканирования с AppSec.Code.
-
Авторизуйтесь в AppSec.Code с правами администратора.
-
Перейдите в раздел администрирования Системы, в левой боковой панели выберите Настройки, а затем выберите Интеграции.
-
На странице Управление интеграциями на уровне экземпляра в разделе Добавить интеграцию выберите строку с инструментом AppSec.Hub и нажмите на кнопку Настроить.
-
В AppSec.Code в настройках подключения на вкладке Настройки введите параметры:
-
В разделе Параметры подключения:
- В поле Включить интеграцию установите флажок Активно.
- URL адрес AppSec.Hub.
- API токен - токен доступа администратора AppSec.Hub, который был создан ранее.
-
В разделе Таск-менеджер:
- В поле Таск-менеджер по умолчанию можно выбрать ранее подключенный таск-менеджер для обработки уязвимостей, например TeamStorm.
-
Нажмите на кнопку Сохранить изменения.
-
Подключение на уровне проекта¶
AppSec.Hub может быть подключен как на уровне экземпляра Системы, так и на уровне отдельного проекта.
Например, можно деактивировать интеграцию с AppSec.Hub на уровне экземпляра Системы и включить на уровне проекта.
Для подключения на уровне проекта:
-
Перейдите в выбранный проект.
-
Выберите Настройки, а затем выберите Интеграции.
-
На странице Интеграции в разделе Добавить интеграцию выберите строку с инструментом AppSec.Hub и нажмите на кнопку Настроить.
-
В AppSec.Code в настройках подключения на вкладке Настройки введите параметры:
-
В разделе Параметры подключения:
- В поле Включить интеграцию установите флажок Активно.
- URL адрес AppSec.Hub (может отличаться от значения этого параметра на уровне Системы).
- API токен - токен доступа администратора AppSec.Hub, который был создан ранее (может отличаться от значения этого параметра на уровне Системы).
-
В разделе Таск-менеджер:
- В поле Таск-менеджер по умолчанию можно выбрать ранее подключенный таск-менеджер для обработки уязвимостей, например TeamStorm.
-
Нажмите на кнопку Сохранить изменения.
-
Настройки подключения проекта по умолчанию наследуются с уровня экземпляра Системы. Существует возможность выбрать необходимый уровень подключения:
- Использовать настройки по умолчанию - уровень экземпляра Системы.
- Использовать пользовательские настройки - уровень проекта.
Настройка параметров сканирования в проекте¶
-
В AppSec.Code перейдите в нужный проект. В меню выберите пункт Настройки и далее подпункт Настройки сканирования.
-
В появившемся окне Настройки сканирования установите флажки для необходимых практик.
-
При переподключении AppSec.Hub или изменении его настроек, обновить настройки сканирования можно по нажатию на кнопку Обновить список доступных практик.
Запуск сканирования кодовой базы¶
-
После подключения AppSec.Hub в AppSec.Code на домашней странице проекта кнопка Запустить сканирование кодовой базы будет доступна для нажатия и проведения сканирования, если на странице Настройки сканирования установлен флажок практики SAST.
-
Выберите ветку с исходным кодом, на которой будет проводиться сканирование.
-
Нажмите на кнопку Запустить сканирование кодовой базы.
-
На странице появится сообщение об успешном или неуспешном запущенном сканировании.
Работа с найденными уязвимостями¶
После завершения сканирования можно просмотреть найденные уязвимости.
Выберите пункт меню Безопасность и его подпункт Отчёт об уязвимостях, чтобы перейти на страницу Отчёт об уязвимостях.

На этой странице представлен список проведенных сканирований со следующей информацией:
- Идентификатор сканирования в AppSec.Hub.
- Дата и время сканирования.
- Статус завершения сканирования.
- Время выполнения сканирования.
- Ветка, на которой проводилось сканирование.
- Коммит, который сканировался.
Выберите из списка необходимое сканирование и нажмите на его строку в списке, чтобы перейти на страницу Сканирование со списком уязвимостей, найденных при его выполнении.

На этой странице представлены статистика и список найденных уязвимостей со следующей информацией:
- Статус уязвимости.
- Критичность уязвимости.
- Описание уязвимости. Нажмите на ссылку, чтобы посмотреть более подробную информацию об уязвимости.
- Файл, в котором обнаружена уязвимость. Нажмите на ссылку, чтобы перейти в файл исходного кода.
- CWE ID уязвимости со ссылкой на источник.
- Данные об использованном для обнаружения уязвимости инструменте (который настроен в пайплайне AppSec.Hub).
- Исполнитель (пользователь AppSec.Code).
- Активность по данной уязвимости.
Интеграция с Обсуждениями¶
Примечание
Начиная с релиза 26.1.1, для Issues используется термин Обсуждения (в предыдущих версиях - Вопросы).
Начиная с релиза 25.2.3, появилась интеграция между Отчетом об уязвимостях и системой управления Обсуждениями (Issues). Это позволяет эффективнее управлять исправлением уязвимостей, назначая их на конкретных исполнителей и отслеживая прогресс через стандартные Обсуждения проекта.
Для этого настройте таск-менеджер по умолчанию:
- Перейдите в меню Настройки → Подключение к AppSec.Hub.
- В поле Таск-менеджер по умолчанию выберите Стандартные Issues.
Примечание
При настроенной интеграции с инструментом TeamStorm существует возможность в качестве таск-менеджера по умолчанию выбрать TeamStorm, см. раздел TeamStorm.
Уязвимости и Обсуждения¶
Как назначить уязвимости на исправление:
- Открыть пункт меню Безопасность → Отчёт об уязвимостях.
- Выбрать одну или несколько уязвимостей.
- Нажать Выберите исполнителя (из списка пользователей проекта).
- Нажать на кнопку В работу.
Примечание
Уязвимости со статусом В работе выбрать повторно нельзя.
Что происходит после этого:
- Уязвимости получают статус В работе (колонка Активность).
- В разделе Обсуждения для каждой из выбранных уязвимостей создаются новые задания:
- Название и Описание берутся из уязвимости.
- Источник — это CWE уязвимости.
- Исполнитель (Ответственный) — выбранный в Отчёте об уязвимостях исполнитель (пользователь AppSec.Code).

Далее можно управлять Обсуждениями как обычными заданиями:
- Назначать подзадачи, связывать с целями (эпиками).
- Создавать запросы на слияние для исправления.
- Обсуждать в комментариях, добавлять метки.
Когда Обсуждение закрывается, в Отчёте об уязвимостях статус уязвимости в колонке Активность меняется на Устранено.
Пример рабочего процесса¶
- SAST находит уязвимость, она попадает в Отчёт об уязвимостях.
- Руководитель назначает её на разработчика через Обсуждения.
- Разработчик создает запрос на слияние, исправляет код, после запроса на слияние Обсуждение закрывается.
- Статус в Отчёте об уязвимостях автоматически меняется на Устранено.
Настройки сканирования SAST, SCA и DAST в редакторе пайплайна¶
Примечание
В версии 26.1.1 для Pipelines используется термин Конвейеры (в предыдущих версиях - Пайплайны).
-
В левом меню выберите пункт Сборка и его подпункт Редактор конвейера.
-
На открывшейся странице Редактор конвейера представлены кнопки с теми практиками, которые были выбраны в настройках сканирования этого проекта (SAST, SCA, DAST). После отключения отдельных практик в настройках сканирования проекта, при обновлении страницы Редактор конвейера кнопки, соответствующие отключенным практикам, больше не отображаются.
-
При нажатии на кнопку с соответствующим названием происходит копирование в буфер обмена шаблона задания для данной практики. Далее пользователь AppSec.Code может вставить из буфера обмена шаблон задания в пайплайн и завершить редактирование актуальными данными.
-
При запуске данного пайплайна, добавленные задания запускают на стороне AppSec.Hub процессы сканирования, соответствующие практике, настроенной в задании пайплайна.
SAST-сканирование с помощью semgrep¶
Начиная с релиза 25.4.1, добавлена возможность сканирования SAST с помощью утилиты semgrep для всех языков, которые semgrep поддерживает.
Для SAST-сканирования с помощью semgrep необходимо выполнить следующие шаги:
-
В левом меню выберите пункт Сборка и его подпункт Редактор конвейера.
-
На открывшейся странице Редактор конвейера в пайплайн необходимо добавить следующие строки:
include: - template: Jobs/SAST.appsec_code-ci.yml -
При запуске данного пайплайна будет проведено SAST-сканирование с помощью утилиты semgrep. Результаты сканирования выводятся в лог пайплайна под заголовком Scan Status в стандартном для semgrep формате.
SAST-сканирование с помощью semgrep не создаёт артефакты в заданиях пайплайна, а сохраняет их в артефактах проекта. Для их просмотра выберите в проекте пункт меню Сборка и его подпункт Артефакты. Результаты сканирования сохранены здесь в файле gl-sast-report.json.
Сканирование с помощью AppSec.Track¶
Начиная с релиза 25.4.2, добавлена возможность сканирования с помощью инструмента AppSec.Track.
Для запуска сканирования необходимо выполнить следующие шаги:
-
В левом меню выберите пункт Сборка и его подпункт Редактор конвейера.
-
На странице Редактор конвейера представлена кнопка AppSec.Track. Она копирует в буфер обмена шаблон для интеграции AppSec.Track CLI в пайплайн, см. документацию AppSec.Track. Содержимое шаблона можно вставить в конфигурационный файл пайплайна .appsec_code-ci.yml.
Перед запуском пайплайна необходимо настроить скрипт:
-
Объявить переменные
DOCKER_AUTHиTRACK_ACCESS_TOKENв настройках CI/CD проекта (пункт меню Настройки → подпункт CI/CD → раздел Переменные CI/CD).Если интеграция с AppSec.Track используется для сканирования образов из общедоступных источников, например docker.io, то настройка авторизации не нужна.
-
Указать токен пользователя AppSec.Track в переменной
TRACK_ACCESS_TOKEN, а переменнуюTRACK_TOKENв разделеvariables:скрипта определить следующим образом:TRACK_TOKEN: "$TRACK_ACCESS_TOKEN" -
Добавить переменную
DOCKER_CONFв разделvariables:скрипта, например:DOCKER_CONF: '{ "auths": { "docker.your_company.com": { "auth": "$DOCKER_AUTH" }}}' -
В переменной
SCANNER_IMAGE:указать образ с актуальной версией утилиты AppSec.Track CLI (не ниже 3.21.0). - В переменной
SCANNER_APP:указать имя сканируемого приложения в AppSec.Track. - В переменной
SCANNER_TEAM:указать имя команды приложения в AppSec.Track. - В переменной
APP_VERSION:указать версию приложения в AppSec.Track. - В переменной
APP_ENVIRONMENT:указать окружение (допустимые значения:dev,test,prod,stage,release). - В переменной
TRACK_URL:указать экземпляр AppSec.Track, с помощью которого осуществляется сканирование. - В переменной
SBOM_NAME:указать имя файла, в который будет сохранен полученный в результате SBOM-файл. - В переменной
SCANNING_IMAGE:указать сканируемый образ, если сканируется Docker-образ. - Закомментировать один из разделов
Scan Repo:илиScan Image:в зависимости от типа сканируемого объекта.
-
-
При запуске пайплайна будет проведено сканирование с помощью инструмента AppSec.Track. Результаты сканирования выводятся в лог пайплайна в стандартном формате инструмента AppSec.Track.
-
Чтобы сохранить результаты выполнения сканирования в артефактах проекта, в редакторе пайплайна необходимо добавить следующий раздел:
artifacts: paths: - $SBOM_NAMEВ этом случае после завершения выполнения пайплайна для просмотра результатов сканирования можно выбрать в меню проекта пункт Сборка и его подпункт Артефакты. Результаты будут доступны в архиве artifacts.zip в SBOM-файле в формате JSON.
Интеграция с AppSec.Wave¶
Начиная с релиза 26.2.2, AppSec.Code поддерживает интеграцию с инструментом AppSec.Wave, реализующим практику SAST статического анализа исходного кода приложений.
Интеграция выполняется на уровне отдельного проекта: проект в AppSec.Code сопоставляется с проектом в AppSec.Wave.
Подключение интеграции¶
- Перейдите в нужный проект в AppSec.Code.
- Выберите Настройки > Интеграции.
- В списке интеграций выберите строку с инструментом AppSec.Wave и нажмите на кнопку Настроить.
-
На странице настройки интеграции на вкладке Настройки задайте параметры:
- В поле Включить интеграцию установите флажок Активно.
- В поле Web URL укажите адрес экземпляра AppSec.Wave.
- В полях Имя пользователя и Пароль введите учётные данные для подключения к AppSec.Wave.
- В поле ID проекта в AppSec.Wave укажите идентификатор проекта в AppSec.Wave, с которым выполняется интеграция.
Примечание
Чтобы создать в AppSec.Wave проект, соответствующий проекту в AppSec.Code:
- В проекте в AppSec.Code на странице Код > Репозиторий нажмите на кнопку Код и скопируйте содержание поля Клонировать с помощью HTTPS, например,
https://your.code.address/study-group/project-test.git. - Зайдите в пользовательский интерфейс AppSec.Wave со своими учётными данными и там создайте новый проект, используя содержание поля Клонировать с помощью HTTPS как параметр.
Чтобы определить идентификатор созданного проекта в AppSec.Wave:
-
Откройте страницу проекта и скопируйте идентификатор из адресной строки веб-браузера. Например, для проекта с адресной строкой, приведенной ниже, ID проекта –
15:https://your.wave.address/project/15
-
Нажмите Проверка соединения, чтобы убедиться в корректности параметров.
- Нажмите Сохранить изменения.
Запуск сканирования с помощью AppSec.Wave¶
После подключения интеграции в проекте на странице Код > Репозиторий в правом верхнем углу появляется кнопка Сканирование Wave и рядом справа от нее кнопка Действия сканирования Wave с дополнительным меню.
Чтобы запустить сканирование:
- Перейдите в Код > Репозиторий.
- Выберите ветку, для которой будет проведено сканирование.
- Нажмите на кнопку Сканирование Wave. Запустится сканирование исходного кода проекта с помощью AppSec.Wave.
В меню Действия сканирования Wave доступны следующие пункты:
- Список сканирований — переход на страницу с результатами ранее проведённых сканирований.
- Настройки интеграции — переход к параметрам подключения к AppSec.Wave.
Просмотр результатов сканирования¶
После завершения сканирования его результаты доступны на странице Сканирования Wave.
Чтобы перейти к результатам, в левом меню проекта выберите пункт Безопасность и его подпункт Сканирования Wave. На странице приведён список выполненных сканирований со следующей информацией:
- № — порядковый номер сканирования.
- Дата сканирования — дата и время запуска.
- Статус — итоговый статус сканирования.
- Продолжительность сканирования — длительность выполнения.
- Ветка — ветка проекта, для которой выполнялось сканирование.
- Найденные уязвимости — количество обнаруженных уязвимостей с разбивкой по уровням серьезности.
- Справа в конце строки расположена кнопка для скачивания отчета по результатам сканирования от инструмента AppSec.Wave. Нажмите на нее и выберите формат отчета из выпадающего меню (HTML, PDF, JSON, SARIF).
Политики безопасности¶
AppSec.Code предоставляет возможность создавать и использовать в проектах политики безопасности.
В левом меню проекта выберите пункт Безопасность и его подпункт Политики. На этой странице представлены все политики проекта.
Типы политик¶
В системе существует два типа политик безопасности:
-
Политика одобрения запроса на слияние.
- Предназначена для создания правил, проверяющих наличие уязвимостей безопасности и соответствие лицензии перед слиянием запроса на слияние.
- Управляет процессом ревью запросов на слияние.
- Может обеспечить обязательное ручное утверждение изменений независимо от наличия найденных уязвимостей.
- Требует явного подтверждения от пользователя с заданной ролью или от указанных пользователей/групп.
- Обеспечивает безопасность пуша в ветку по умолчанию/защищенные ветки (например, main).
-
Политика выполнения конвейера.
- Предназначена для принудительного запуска заданий сканирования (SAST/SCA/DAST) и других проверок безопасности в конвейерах проекта.
- Гарантирует, что заданные задания выполняются на выбранных ветках независимо от содержимого
.appseccode-ci.ymlпроекта. - Срабатывает при отправке коммитов (push) и при создании запросов на слияние.
- Не блокирует запросы на слияние сама по себе. Результаты сканирований попадают в Отчёт об уязвимостях и могут использоваться правилами Политики одобрения запроса на слияние для блокировки слияния.
Примечание
До версии 26.1.1 функциональность Политики выполнения конвейера была представлена политикой AppSec.Hub — Управление уязвимостями.
В проекте можно создавать политики одного или обоих типов, при этом правила, определенные в этих политиках, будут применяться параллельно и сохраняться в YAML-файле в сопутствующем проекте Security Policy Project.
Создание политики¶
-
В левом меню проекта выберите пункт Безопасность и его подпункт Политики.
-
Нажмите на кнопку Новая политика.
-
Выберите тип политики и нажмите на кнопку Выберите политику.
-
В редакторе политики задайте ее параметры:
- Для политики типа Политика одобрения запроса на слияние укажите Имя политики.
- Укажите Описание политики (опционально).
- Выберите Статус политики (Включено/Отключено).
- Задайте Правила политики (Когда, Сканеры, Ветки, Исключения, Количество уязвимостей, Критичность).
- Задайте Действия политики (Количество требуемых подтверждений, от кого - Роли/Пользователи/Группы).
-
Нажмите на кнопку Настроить при помощи запроса на слияние. После этого происходит переход в сопутствующий проект Security Policy Project.
-
В сопутствующем проекте нажмите на кнопку Слияние.
-
Вернитесь в основной проект. После произведенного слияния политика начинает действовать.
Пример применения политик¶
-
Разработчик создает запрос на слияние из feature-branch в main.
-
AppSec.Code применяет политики:
- Если включена Политика выполнения конвейера, в конвейере проекта автоматически запускаются заданные сканирования SAST/SCA/DAST, а их результаты попадают в Отчёт об уязвимостях.
- Если включена Политика одобрения запроса на слияние, система требует подтверждения от указанных пользователей перед слиянием — в том числе при обнаружении уязвимостей заданного уровня.
-
Утверждение запроса на слияние:
- Пользователь из списка подтверждающих заходит в запрос на слияние и нажимает на кнопку Утвердить.
- Только после этого запрос на слияние может быть смержен.