Quality Gates
Примечание
Для выполнения нижеописанных действий требуется роль Администратора.
Quality Gate (QG) - это критерий качества для оценки результатов сканирования.
На основе критериев QG система решает, успешно ли завершилась работа пайплайна или нет. Если критерии QG оказались не выполнены, результат работы пайплайна получает статус FAILED («завершившийся неуспешно»). AppSec.Hub возвращает статус FAILED в инструмент CI/CD, например, Jenkins, и на этом выполнение пайплайна останавливается. Рекомендуется установить различные критерии QG для пайплайнов, предназначенных для целей разработки, тестирования и выпуска релизов, а также просто не устанавливать критерии QG для кода, находящегося в разработке и не включенного в релиз.
Нажмите на иконку администрирования
в правом верхнем углу. На открывшейся странице администрирования выберите пункт меню QG config.
На странице QG config отображаются карточки всех созданных в системе конфигурационных профилей Quality Gate.

На карточке профиля Quality Gate отображаются следующие параметры:
- Наименование Quality Gate.
- Code - код Quality Gate, который генерируется автоматически при создании профиля и является уникальным в системе.
- Conditions - количество заданных условий.
- Created - время, прошедшее с момента создания Quality Gate.
- Updated - время, прошедшее после последнего обновления Quality Gate.
Создание профиля Quality Gate
-
Нажмите на иконку Administration
, расположенную в правом верхнем углу, для перехода на страницу администрирования системы. -
Выберите пункт меню QG config и нажмите на кнопку +Add new.
-
В появившемся окне Create quality gate укажите имя Quality Gate в поле Quality gate name и нажмите на кнопку Create.
На странице QG config появится карточка вновь созданного конфигурационного профиля Quality Gate.
Настройка профиля Quality Gate
Чтобы перейти к настройке профиля Quality Gate, нажмите на иконку Show/edit details в правом нижнем углу его карточки.
На странице профиля Quality Gate имеется две вкладки:
- Вкладка Conditions используется для определения условий критерия качества, задаваемого данным Quality Gate.
- Вкладка Used in apps отображает перечень приложений, в которых используется данный Quality Gate.
Кроме того, на вкладке Conditions можно отредактировать название Quality Gate:
- Нажмите на кнопку Actions
, расположенную в правом верхнем углу, и выберите пункт меню Edit name. - В появившемся окне Update quality gate укажите новое наименование в поле Quality gate name и нажмите на кнопку Update.
Добавление условий
Для добавления в Quality Gate условий:
-
Перейдите на страницу настройки профиля Quality Gate на вкладку Conditions (см. раздел «Настройка профиля Quality Gate») и нажмите на кнопку +Add new.
-
В появившемся окне Create condition в поле Issue type выберите практики, для которых определяются условия (SAST, DAST, SCA Compliance, SCA Security).
-
В поле Issue state укажите состояния проблем безопасности (NEW, REPEATED, ALL). Информация о настройках алгоритма изменения состояний проблем безопасности приведена в разделе «Настройка алгоритма изменения состояний проблем безопасности».
-
В поле Issue severity укажите степень серьезности проблем безопасности (LOW, MEDIUM, HIGH, CRITICAL).
-
В поле Threshold укажите максимально допустимое количество соответствующих уязвимостей.
-
Нажмите на кнопку Create.
Вновь сформированные условия будут добавлены в профиль Quality Gate.
Автоматическое добавление условий
Учитывая широкий диапазон условий, которые могут определяться при создании Quality Gate, предусмотрена функция автоматического добавления критериев.
На вкладке Conditions нажмите на кнопку Actions
расположенную в правом верхнем углу, и выберите пункт меню Build default. В Quality Gate будут добавлены все возможные условия и Инженеру ИБ останется только отредактировать пороговые значения для нужных условий и удалить ненужные.
Для редактирования параметров условий нажмите на иконку Edit
, расположенную справа в конце строки условия. Измените необходимые значения и нажмите на кнопку Update, чтобы сохранить изменения.
Удаление условий
Для удаления условия на вкладке Conditions нажмите на иконку Remove
, расположенную справа в конце строки удаляемого условия.
Сохранение настроек профиля
После определения необходимых условий на вкладке Conditions нажмите на кнопку Update, расположенную в правом верхнем углу, чтобы сохранить сделанные изменения, или на кнопку Cancel, чтобы отменить их.
Удаление Quality Gate
Чтобы удалить профиль Quality Gate, перейдите на страницу QG config. В правом нижнем углу карточки Quality Gate нажмите на иконку Delete quality gate
.
Кроме этого, профиль Quality Gate можно удалить, находясь на странице настройки его условий на вкладке Conditions. Нажмите на кнопку Actions
, расположенную в правом верхнем углу, и выберите пункт меню Delete quality Gate. Для подтверждения удаления Quality Gate нажмите на кнопку Confirm.
Если предпринимается попытка удаления Quality Gate, который используется в каких-либо объектах системы – на уровне компании, подразделения организационной структуры, приложения или пайплайна, в правом нижнем углу пользовательского интерфейса отображается соответствующее предупреждение. В таком случае необходимо предварительно отключить Quality Gate в соответствующем объекте или объектах и только после этого удалить его.
Для пайплайнов удобнее всего это сделать следующим образом:
- Перейдите на страницу настройки профиля Quality Gate, см. раздел «Настройка профиля Quality Gate».
- Выберите вкладку Used in apps. На данной вкладке отображается перечень приложений, в которых используется данный Quality Gate.
- Нажав на иконку
, расположенную в колонке LINK, перейдите на страницу Pipelines и отключите Quality Gate в тех пайплайнах, где он используется — открывайте страницу необходимого пайплайна, переходите на вкладку Quality gate и нажимайте на кнопку Unlink. - После этих шагов можно переходить к удалению профиля Quality Gate любым из описанных выше способов.
Дублирование Quality Gate
Чтобы создать дубликат профиля Quality Gate, на странице QG config в правом нижнем углу карточки Quality Gate нажмите на иконку Duplicate
.
Дублирование профиля Quality Gate может оказаться полезным, если необходимо создать новый профиль с аналогичным набором условий, но, например, с другими пороговыми значениями. В качестве примера можно привести ситуацию, когда аналогичные Quality Gates, но с разными количественными критериями используются для тестирования промежуточных сборок и релиза приложения.
Иерархия и наследование Quality Gates
В AppSec.Hub реализовано централизованное управление Quality Gates. Созданный в системе конфигурационный профиль Quality Gate (см. раздел «Создание профиля Quality Gate») может быть применен к различным объектам системы на уровне:
- компании;
- подразделения организационной структуры;
- приложения;
- пайплайна.
Quality Gate, созданный для объекта более высокого уровня, может быть унаследован объектами более низких уровней в иерархии объектов в следующем порядке:
Компания => Подразделения организационной структуры => Приложение => Пайплайн.
Для этого необходимо, чтобы в объектах более низких уровней было включено наследование с помощью выбора опции Inherit quality gate.
Объекты системы, у которых включено наследование Quality Gates, отмечены с помощью иконки наследования Quality Gates
:
- В организационной структуре на вкладке Structure, см. раздел «Структура организации».
- На уровне пайплайнов на странице Pipelines, см. раздел «Информация о пайплайне» Руководства пользователя.
Благодаря данному подходу, изменение профиля Quality Gate приводит к автоматическому и одновременному изменению критериев во всех объектах, в которых применяется данный Quality Gate.
Важно
Иерархия и наследование Quality Gates реализованы в системе начиная с релиза 2023.4.3. При переходе на этот релиз, для существующих в системе объектов, где не был установлен Quality Gate, будет включено наследование. Для объектов с установленным Quality Gate не будет вноситься никаких изменений. Все новые объекты будут создаваться с наследованием Quality Gate.
Примечание
Включение принудительного наследования Quality Gates у всех объектов вниз по дереву от вышестоящего объекта можно осуществить в Swagger с помощью вызова метода <hub-url>/hub/rest/swagger-ui/index.html#/quality-gate-rest/setChildQualityGate с параметрами:
- objectType – тип объекта (
app|orgUnit|company), от которого включается принудительного наследования Quality Gates вниз по дереву. - objectId - ID данного объекта в Системе (ID приложения, подразделения организационной структуры, ID для компании имеет значение
1).

При этом у объекта, у которого было включено принудительное наследование Quality Gates, настройки не будут изменены.
В ближайших релизах планируется добавить соответствующую функциональность в пользовательский интерфейс.
Quality Gate на уровне компании
Чтобы создать Quality Gate на уровне компании:
- Нажмите на иконку профиля организации
в правом верхнем углу. - Выберите пункт меню Profile.
- Перейдите на вкладку Quality Gate.
- Выберите существующий Quality Gate из выпадающего списка и нажмите на кнопку Save.
Удалить Quality Gate на уровне компании можно при помощи кнопки Remove QG.
Созданный на уровне компании Quality Gate может быть унаследован на уровне подразделения организационной структуры, приложения или пайплайна.
Quality Gate на уровне подразделения организационной структуры
Чтобы создать Quality Gate на уровне одного из подразделений организационной структуры (Department, Center of Excellence, Team):
- Нажмите на иконку профиля организации
в правом верхнем углу. - Выберите пункт меню Structure и найдите нужное подразделение в организационной структуре.
-
Нажмите на название подразделения и перейдите на вкладку Quality Gate. Данная вкладка позволяет настроить Quality Gate для выбранного подразделения.
В случае, если опция Inherit quality gate отключена, Quality Gate можно выбрать из выпадающего списка. Удалить такой Quality Gate можно при помощи кнопки Remove QG.
В случае, если опция Inherit quality gate включена, наследуется Quality Gate, установленный для подразделения более высокого уровня в организационной структуре (того подразделения, которое указано в поле Parent на вкладке General для выбранного подразделения. Для подразделений, у которых поле Parent не заполнено, наследование осуществляется с уровня компании).
Подразделения в организационной структуре компании на странице Structure можно отфильтровать по Quality Gates, нажав кнопку фильтрации в правом верхнем углу и выбрав необходимые значения в поле by quality gate.
Созданный на уровне подразделения организационной структуры Quality Gate может быть унаследован на уровне приложения или пайплайна.
Quality Gate на уровне приложения
Настройка Quality Gate на уровне приложения описана в разделе «Quality Gate приложения» Руководства пользователя.
Quality Gate на уровне пайплайна
Настройка Quality Gate на уровне пайплайна описана в разделе «Добавление Quality Gate в пайплайн» Руководства пользователя.
Настройка алгоритма изменения состояний проблем безопасности
Примечание
Для выполнения нижеописанных действий требуется роль Менеджер.
В отдельных случаях специфические особенности организации работы команд разработки требуют нестандартных подходов к настройкам алгоритма изменения состояний проблем безопасности.
Чтобы более ярко обозначить потенциальную проблему, рассмотрим гипотетическую ситуацию, когда Quality Gate настроен на полное отсутствие новых проблем безопасности (имеющих состояние NEW). При первой проверке безопасности все проблемы получают состояние NEW, Quality Gate определяет наличие недопустимого количества проблем безопасности, о чем система информирует Инженера ИБ. Однако при последующих сканированиях найденные ранее проблемы безопасности изменяют состояние на REPEATED и настроенный указанным выше способом Quality Gate не срабатывает, что может привести к выпуску в промышленную эксплуатацию приложения, имеющего неустраненные уязвимости. Чтобы исключить описанную ситуацию, необходимо либо более тщательно подходить к определению критериев качества (Quality Gate), либо, при необходимости, использовать предусмотренную в системе возможность настройки алгоритма изменения состояний проблем безопасности.
При определении алгоритма изменения состояний проблем безопасности можно задать настройки на уровне пайплайна (поле Issue state policy на вкладке Settings, см. детали в разделе «Настройки пайплайна») и/или на уровне приложения (поле Issue state policy на вкладке General, см. детали в разделе «Настройки приложения»).
Примечание
Расчет состояний проблем безопасности определяется на основе сочетания «объект сканирования и инструмент сканирования».
Для определения необходимости изменений состояния проблем безопасности используются данные о том, были ли ранее занесены в систему проблемы безопасности для данного объекта сканирования, найденные данным инструментом. При наличии таких проблем безопасности, в случае нового импорта из инструмента к ним применяется заданный алгоритм изменения состояний. В случае отсутствия нового импорта из инструмента сканирования, состояние и статус найденных с его помощью проблем безопасности изменяться не будут.
Примечание
Для сравнения не могут использоваться сканирования, завершившиеся с ошибкой (статус FAILED), за исключением получивших такой статус в результате непрохождения Quality Gate.