Security Pipelines
Примечание
Для выполнения нижеописанных действий требуется роль Менеджер.
Информация о Security Pipeline
В AppSec.Hub каждый Security Pipeline привязан к приложению. Security Pipeline выполняет сканирование безопасности. Security Pipeline позволяет создать и использовать автоматизированные процессы тестирования безопасности приложений в рабочих пространствах для разработки, тестирования и развертывания приложений в различных средах.
Security Pipelines предназначены для анализа трех различных типов объектов. Таким образом, существует три вида Security Pipelines:
- Security Pipeline исходного кода (source code Security Pipeline).
- Security Pipeline артефактов (artifact Security Pipeline).
- Security Pipeline экземпляра приложения (application instance Security Pipeline).
Security Pipelines создаются в инструменте оркестрации (например, Jenkins) для конкретной кодовой базы/артефакта/экземпляра приложения на основе конфигурации используемых инструментов разработки ПО и инструментов AST.
AppSec.Hub предоставляет возможность настройки существующих и создания новых Security Pipelines, а также запуска сканирования безопасности с их помощью.
Выберите в меню пункт Applications, чтобы начать работу с приложениями и их пайплайнами. На экране появится список приложений.
Нажмите на строку приложения на странице Applications. Появится экран с названием выбранного приложения в верхнем левом углу и с подробной информацией о выбранном приложении. Выберите элемент меню Pipelines слева. На экране появятся появится список Security Pipelines всех типов для выбранного приложения, а также элементов контура контроля разработки программного обеспечения DevSecOps perimeter, предназначенных для работы с прокси-репозиториями. Описание работы с прокси-репозиториями приведено в разделе «Объекты сканирования».
Каждый Security Pipeline представлен отдельной строкой, которая содержит описание пайплайна в следующих столбцах:
-
ON/OFF — если этот переключатель выключен и имеет серый цвет, Security Pipeline не может быть запущен на сканирование. Если переключатель включен и имеет синий цвет, Security Pipeline может быть запущен на сканирование.
-
PIPELINE DETAILS — краткое описание пайплайна. Нажмите на значок , расположенный в этом столбце справа, чтобы получить больше информации об этом пайплайне. Чтобы получить более подробную информацию обо всех отображенных пайплайнах, нажмите значок рядом с названием столбца. Поле PIPELINE DETAILS может включать в себя следующую информацию в зависимости от типа проблемы (ряд полей является опциональным):
- # — идентификатор пайплайна и его название в системе. Рядом может быть приведена дополнительная графическая информация о том, что пайплайн является шаблоном для создания новых пайплайнов (значок ); был создан с использованием другого пайплайна в качестве шаблона (значок ); конфигурация пайплайна содержит изменения, еще не экспортированные в инструмент CI/CD (значок ).
- Type — тип пайплайна (Codebase, Artifact, Instance, Devsecops perimeter).
- Quality Gate — название установленного в пайплайне QG.
- Target tool — инструмент, в котором находится сканируемый в пайплайне объект (кодовая база, артефакт или экземпляр приложения).
- CI/CD tool — инструмент CI/CD, применяемый в пайплайне.
- Scan tools — инструменты сканирования, применяемые в пайплайне.
- Updated — время, прошедшее с момента последнего обновления пайплайна.
- Last export to CI/CD — время, прошедшее с момента последнего экспорта пайплайна в инструмент CI/CD.
- Last scan — время, прошедшее с момента последнего сканирования с использованием этого пайплайна.
- Webhook — указывает на использование webhook-механизма в пайплайне.
- Notification — указывает на использование в пайплайне рассылки уведомлений о статусе пайплайна с помощью механизма Notification в инструменте GitLab CI.
- Custom webhook — указывает на использование custom webhook-механизма в пайплайне.
- Scan target — ссылка на объект(ы) сканирования.
- TAGGING — этот переключатель позволяет разрешить или запретить тегирование релизного объекта. Если этот переключатель включен, тегирование релизного объекта разрешено.
- PROTECTION — этот переключатель позволяет защитить от перезаписи пайплайн, настроенный вручную извне. Если этот переключатель включен, пайплайн не может быть экспортирован в инструмент CI/CD.
Кроме того, справа в строке каждого пайплайна представлено выпадающее меню «», содержащее пункты Export CI/CD, Start scan и Delete pipeline. С его помощью можно экспортировать пайплайн в инструмент CI/CD (см. раздел «Экспорт в CI/CD»), запустить сканирование или удалить пайплайн.
Чтобы настроить фильтрацию пайплайнов, нажмите кнопку Show filters в правом верхнем углу страницы. В системе предусмотрена возможность фильтрации пайплайнов по следующим параметрам.
- by structure unit — по структурным единицам приложения, к которым относятся пайплайны;
- By name — по имени пайплайна;
- By type — по типу пайплайна (Codebase, Artifact, Instance, Devsecops perimeter);
- By tool — по типу сканируемого объекта / целевому инструменту, используемому в пайплайне (по значению поля Target tool в строке пайплайна);
- Sort by last scan — по дате последнего сканирования — Newest first/Oldest first (сначала новые/сначала старые). При выборе любого значения в этом поле все пайплайны, которые еще ни разу не запускались на сканирование, будут помещены в конце списка.
Структура Security Pipeline
Нажмите на строку приложения на странице Applications. В появившемся экране выбранного приложения выберите элемент меню Pipelines. Нажмите на идентификатор и имя выбранного Security Pipeline в системе, чтобы просмотреть или обновить сведения об этом пайплайне.
Например, при нажатии на идентификатор Security Pipeline исходного кода можно получить следующую информацию о пайплайне на вкладке Structure:
- Используемый инструмент VCS (Version Control System, система управления версиями), URL кодовой базы, тип ветки кода, инструмент сборки.
- Инструмент оркестрации (CI/CD) и его URL.
- Инструмент для сканирования безопасности (например, PT Application Inspector).
-
Общая информация — последний экспорт в CI/CD, последнее сканирование, дата последнего обновления.
Security Pipeline исходного кода содержит несколько карточек — по одной на каждый инструмент, задействованный в пайплайне. На рисунке выше показан Security Pipeline исходного кода, который состоит из трех частей (или трех карточек):
- Кодовая база с исходным кодом.
- Инструмент оркестрации CI/CD.
- Инструмент AST (PT Application Inspector).
Процесс конфигурации Security Pipeline включает следующие шаги:
- Выбор инструментов разработки ПО и инструментов AST.
- Настройка выбранных инструментов.
- Определение критериев качества и создание Quality Gate (описание работы с QG приведено в разделах «Добавление Quality Gate в Security Pipelines» данного документа и «Quality Gates» Руководства администратора).
Набор используемых инструментов определяется в зависимости от имеющихся лицензий. Настройки каждого инструмента определяются в AppSec.Hub. Нажмите на иконку редактирования в правом нижнем углу карточки инструмента сканирования. Появится окно Update scan config. Задайте настройки инструмента в этом окне и сохраните их. Обратите внимание, что AppSec.Hub автоматически обновляет настройки в самом инструменте сканирования — никакие дополнительные действия пользователя не требуются.
Пользователь AppSec.Hub с правами Менеджера может выполнить следующие действия с Security Pipeline, нажав кнопку Actions в правом верхнем углу и выбрав одно из этих действий из выпадающего меню:
- Экспортировать Security Pipeline в инструмент CI/CD.
- Запустить сканирование (запустить Security Pipeline).
- Добавить новый элемент в Security Pipeline.
- Удалить Security Pipeline.
Настройки Security Pipeline
Выберите вкладку Settings, чтобы установить настройки Security Pipeline.
На этой вкладке с помощью селекторов можно установить следующие настройки:
- Pipeline activity — если этот переключатель выключен, Security Pipeline не может быть запущена на сканирование. Состояние этой настройки пайплайна в AppSec.Hub отображается на странице PIPELINES с помощью переключателя пайплайна (ON/OFF). Если переключатель выключен и имеет серый цвет, Security Pipeline не может быть запущена на сканирование. Если переключатель включен и имеет синий цвет, Security Pipeline может быть запущена на сканирование.
-
CI/CD overwrite protection — этот переключатель блокирует экспорт Security Pipeline в CI/CD инструмент с помощью пункта меню Export CI/CD. Это позволяет защитить настройки Security Pipeline от нежелательной перезаписи. В списке пайплайнов приложения состояние этого переключателя дублируется состоянием переключателя PROTECTION.
-
Is template — этот переключатель активирует функциональность, которая позволяет использовать Security Pipeline в качестве шаблона при создании новых, например, при онбординге. В списке пайплайнов приложения рядом с идентификатором и именем Security Pipeline появляется значок This is a template pipeline .
Список всех пайплайнов в системе, созданных на основе данного пайплайна в качестве шаблона, приведен на вкладке Child pipelines пайплайна, являющегося шаблоном (см. раздел «Управление шаблонами пайплайнов»). В свою очередь, поле Is template пайплайна, созданного с использованием другого пайплайна в качестве шаблона, содержит ссылку на пайплайн-шаблон.
Также информация о пайплайне-шаблоне может быть получена в строке созданного дочернего пайплайна при наведении курсора на значок . Кроме этого, нажав на значок, можно перейти к пайплайну-шаблону.
Дочерний security pipeline, созданный с использованием другого пайплайна в качестве шаблона, не может быть использован в качестве шаблона для создания других пайплайнов.
Пайплайны исходного кода при установленном флажке Is template дополнительно содержат флажок depending on branch filter settings, а также заданное значение фильтра ветвей кодовой базы.
При установке флажка Is template, флажок depending on branch filter settings также установится по умолчанию. В такой конфигурации, при онбординге при попытке создания пайплайна подходящий пайплайн-шаблон будет определяться в первую очередь по наиболее точно подходящему значению фильтра ветвей кодовой базы (Branch filter), и только затем – по значению в поле Build tool. Если флажок depending on branch filter settings не установлен, поиск пайплайна-шаблона будет производиться только по значению в поле Build tool, без учета значения Branch filter.
-
Issue state policy — настройка алгоритма изменения состояний проблем безопасности. Может быть выбрана одна из трех настроек:
- Compare with the 1st scan — определять состояние обнаруживаемых проблем безопасности в сравнении с результатами первого сканирования (стандартная настройка системы).
- Compare with previous scan — определять состояние обнаруживаемых проблем безопасности в сравнении с результатами предыдущего сканирования.
- Compare with the custom — определять состояние обнаруживаемых проблем безопасности в сравнении с результатами произвольного успешного сканирования. При выборе этого варианта на вкладке Settings настроек Security Pipelines появляется дополнительное поле Issue state policy scan task, в котором необходимо указать соответствующее сканирование.
Примечание
Настройка Issue state policy также определяется на уровне приложения в целом (см. детали в разделе «Настройки приложения»). Настройка на уровне пайплайна имеет приоритет по сравнению с настройкой на уровне приложения.
Управление шаблонами пайпланов
В AppSec.Hub пайплайн может быть использован в качестве шаблона для других пайплайнов. Как уже было сказано в разделе «Настройки security pipeline», для этого на вкладке Settings данного пайплайна должен быть включен переключатель Is template. Дочерние пайплайны, созданные с помощью шаблона, не могут быть в свою очередь использованы как шаблон для создания других пайплайнов.
Использование пайплайна в качестве шаблона позволяет управлять набором инструментов сканирования во всех дочерних пайплайнах. Таким образом можно, например, заменить или добавить инструмент сканирования в пайплайне-шаблоне, и эти изменения будут автоматически применены ко всем дочерним пайплайнам. Исключением являются дочерние пайплайны, в которых после их создания по шаблону были вручную произведены изменения, из-за которых в данный момент эти дочерние пайплайны отличаются от пайплайна-шаблона. К таким изменениям относится удаление, замена или добавление сканирующего инструмента в дочернем пайплайне. Изменения только в настройках сканирующего инструмента без изменений в составе включенных в пайплайн инструментов не являются основанием для занесения такого пайплайна в число измененных вручную «проблемных» дочерних пайплайнов. При обновлении пайплайна-шаблона автоматическое обновление ранее измененного вручную дочернего пайплайна может привести к потере внесенных в него изменений, поэтому изменения в пайплайне-шаблоне не будут автоматически применяться к таким дочерним пайплайнам. В этом случае необходимо выполнить ручные шаги, описанные ниже.
В общем списке пайплайны, являющиеся шаблонами, отмечены значком , а дочерние — значком .
Выберите пайплайн, являющийся шаблоном, и перейдите на вкладку Child pipelines. На этой вкладке приведен список всех дочерних пайплайнов, созданных с использованием данного пайплайна в качестве шаблона.
Примечание
У дочернего пайплайна, созданного с использованием другого пайплайна в качестве шаблона, вкладка Child pipelines отсутствует.
У пайплайна, не используемого в качестве шаблона и не являющегося дочерним, вкладка Child pipelines присутствует, но не содержит информации.
На вкладке Child pipelines для каждого из дочерних пайплайнов приводится следующая информация:
-
# — идентификатор пайплайна и его название в системе.
-
Значок , расположенный рядом с названием дочернего пайплайна, показывает, что он является «проблемным», то есть в нем после его создания по шаблону были вручную произведены изменения, из-за которых в данный момент дочерний пайплайн отличается от пайплайна-шаблона. При обновлении пайплайна-шаблона внесенные изменения не будут автоматически применяться к таким дочерним пайплайнам.
-
Application — название приложения, к которому относится дочерний пайплайн.
-
Quality Gate — название установленного в дочернем пайплайне QG.
Все дочерние пайплайны на вкладке Child pipelines отсортированы в следующем порядке:
-
Сначала расположены все измененные «проблемные» пайплайны, отмеченные значком и не подлежащие автоматическому обновлению.
-
Далее все остальные пайплайны группируются по их принадлежности к приложениям.
В случае изменений в пайплайне-шаблоне при наличии в списке «проблемных» измененных вручную дочерних пайплайнов, отмеченных значком , на экране появится окно Parent pipeline changes, в котором можно с помощью кнопки Go to pipelines перейти на вкладку Child pipelines для ручного применения внесенных изменений в «проблемные» дочерние пайплайны.
С помощью кнопки Push changes , расположенной справа в строке каждого из «проблемных» дочерних пайплайнов, можно применить внесенные в шаблонный пайплайн изменения для отдельного дочернего пайплайна. Для этого нажмите кнопку и в появившемся окне Child pipeline changes нажмите кнопку Apply. Все внесенные в набор сканирующих инструментов в пайплайне-шаблоне изменения будут применены к выбранному дочернему пайплайну, а в списке на вкладке Child pipelines у данного пайплайна исчезнет значок .
Также можно вручную применить внесенные в пайплайн-шаблон изменения для нескольких дочерних пайплайнов одновременно. Нажимая значки , выберите из списка пайплайны для внесения изменений. Выбранные пайплайны будут отмечены значком . Для того, чтобы выбрать все «проблемные» дочерние пайплайны одновременно, нажмите вверху списка пайплайнов значок PIPELINE DETAILS. В результате на кнопке Actions справа вверху будет отображаться количество выбранных пайплайнов. Нажмите кнопку Actions и в выпадающем меню выберите пункт Push changes, чтобы применить изменения ко всем выбранным дочерним пайплайнам.
Подтвердите внесение изменений нажатием кнопки Apply в появившемся окне Child pipeline changes.
Важно
При переходе на версию AppSec.Hub 2023.1 в системе все ранее созданные с использованием шаблонов дочерние пайплайны автоматически будут отнесены к «проблемным» дочерним пайплайнам. Внешне это выразится в появлении у них значка . Перевести эти дочерние пайплайны из категории «проблемных» можно вручную с помощью кнопки Push changes описанным выше способом.
Важно заметить, что для корректного завершения onboarding (см. раздел «Onboarding») необходимо наличие в AppSec.Hub предопределенного шаблона Security Pipeline. В качестве такого шаблона может использоваться любой ранее созданный для данного приложения Security Pipeline соответствующего типа (для кодовых баз, артефактов и т. д.). Если для приложения определено несколько Security Pipelines одного типа, для предсказуемого завершения интеграции важно для нужного Security Pipeline активировать опцию Is template — вновь автоматически создаваемые Security Pipelines для данного приложения будут использовать выбранный шаблон.
Добавление Quality Gate в Security Pipelines
Примечание
Для выполнения нижеописанных действий требуется роль Менеджера приложения.
Существующий в системе профиль Quality Gate (см. раздел «Quality Gates» Руководства администратора) может быть добавлен в Security Pipeline одного или нескольких приложений.
Чтобы добавить Quality Gate в Security Pipeline, перейдите на страницу настроек Security Pipeline выбранного приложения, см. раздел «Настройки Security Pipeline».
Перейдите на вкладку Quality gate.
В случае, если опция Inherit quality gate отключена, Quality Gate можно выбрать из выпадающего списка. Для подключения Quality Gate выберите его из списка и нажмите кнопку Save. На странице отобразятся условия критерия качества для вновь подключенного Quality Gate. Удалить выбранный Quality Gate из пайплайна можно при помощи кнопки Remove QG.
В случае, если опция Inherit quality gate включена, наследуется Quality Gate, установленный для объекта более высокого уровня в иерархии Quality Gates (компании, подразделения в организационной структуре, к которому относится данное приложение, или приложения).
Примечание
К Security Pipeline одновременно может быть подключен только один Quality Gate. При подключении нового Quality Gate ранее подключенный — отключается.
Пример
Рассмотрим пример использования Quality Gate в Security Pipeline. Предположим, для выпуска релиза приложения определены следующие критерии: отсутствие любых уязвимостей высокой и критической степени серьезности (high/critical severity issues), выявленных инструментами SAST и DAST. Чтобы создать Quality Gate с такими критериями, при настройке профиля Quality Gate (см. раздел «Quality Gates» Руководства администратора) выберем следующие параметры.
Перечень заданных условий будет выглядеть следующим образом.
В результате создан Quality Gate, который при включении его в Security Pipeline будет отслеживать выполнение указанных критериев. Если критерии Quality Gate не выполняются (для приведенного примера во время сканирования обнаружена минимум одна уязвимость высокой или критической степени серьезности), AppSec.Hub прервет выполнение Security Pipeline и релиз приложения не будет создан. Чтобы выпустить релиз, который соответствует заданному критерию QG, все уязвимости высокой и критической степени серьезности должны быть устранены до запуска Security Pipeline, создающего релиз приложения.
История сканирований пайплайна
Выберите вкладку Scans, чтобы получить подробную информацию о результатах сканирования для выбранного Security Pipeline.
Каждое выполненное сканирование представлено отдельной строкой. Чтобы получить более подробную информацию о сканировании, нажмите значок рядом с его идентификатором.
Информация о каждом сканировании подробно описана в разделе «Результаты сканирований».
Экспорт в CI/CD
После того, как Security Pipeline создан и сконфигурирован в AppSec.Hub, его можно экспортировать в инструмент CI/CD.
Примечание
Если в пользовательском интерфейсе AppSec.Hub выполнены какие-либо изменения структуры уже существующего Security Pipeline, нет необходимости выполнять повторный экспорт параметров в инструменты CI/CD, см. ниже. Эти изменения будут учтены и внесены системой после получения запроса на сканирование непосредственно перед выполнением сканирования.
На странице PIPELINE DETAILS нажмите кнопку Actions в правом верхнем углу и выберите в выпадающем меню пункт Export CI/CD, чтобы экспортировать Security Pipeline в инструмент CI/CD, например, Jenkins.
Сообщение о результате экспорта появится в правом нижнем углу экрана.
В результате экспорта, в инструменте CI/CD будет создан Security Pipeline с параметрами конфигурации, определенными в AppSec.Hub. Теперь инструмент CI/CD может выполнять сконфигурированный Security Pipeline. Он будет запускать все инструменты в пайплайне и предоставлять полученные результаты тестирования безопасности в AppSec.Hub.
Чтобы выполнить экспорт Security Pipeline в инструмент CI/CD на странице Pipelines, справа в конце строки пайплайна нажимите на выпадающее меню «», а затем выберите и нажмите пункт Export CI/CD.
Доступ к Security Pipeline в инструменте оркестрации
Выберите пункт меню Applications и, нажав на строку приложения, перейдите на его страницу. Выберите пункт меню Pipelines слева. Раскройте подробную информацию о Security Pipelines, нажав кнопку .
В нужном Security Pipelines нажмите на ссылку на инструмент оркестрации справа от пункта Last export to CI/CD, чтобы получить в нем доступ к Security Pipeline.
На экране появится страница авторизации инструмента оркестрации.
Security Pipeline исходного кода
Важное замечание
Если подготовленной базы исходного кода не существует, ее следует создать перед началом работы с Security Pipeline исходного кода. Процесс создания новой базы кода описан в разделе «Кодовые базы».
Выберите элемент меню Pipelines в консоли слева, а затем нажмите кнопку +Add new в правом вернем углу и выберите пункт Сodebase pipeline из выпадающего меню, чтобы добавить новый Security Pipeline исходного кода.
В открывшемся окне для добавления новой кодовой базы выберите имя кодовой базы, которую нужно добавить, и нажмите на кнопку Forward.
На втором шаге в поле Branch filter задайте фильтр ветвей кодовой базы:
Примечание
В поле Branch filter поддерживается использование масок, например, если указать значение feature_*, будут выбраны все ветки, имеющие префикс «feature_».
Новый пайплайн исходного кода появится на странице Pipelines. Его название состоит из разделенных дефисом имени кодовой базы, выбранной на первом шаге добавления кодовой базы, и значения фильтра ветвей кодовой базы, определенного на втором шаге.
Нажмите на идентификатор пайплайна исходного кода. Откроется страница с детальной информацией о пайплайне. На этой странице, как показано на рисунке ниже, выведены два предупреждения о том, что инструмент оркестрации (CI/CD) и инструмент сканирования еще не добавлены в пайплайн.
Обратите внимание на параметр Checkout path. Он задает директорию, в которой будет производиться выгрузка (checkout) данной кодовой базы в CI/CD инструменте.
Нажмите кнопку Actions справа вверху и выберите пункт Add new element из выпадающего меню.
Выберите пункт CI во вновь появившемся окне, чтобы добавить инструмент оркестрации CI/CD в пайплайн.
В следующем окне выберите инструмент оркестрации из списка и нажмите кнопку Create.
В результате на вкладке Structure появится новая карточка инструмента оркестрации, а также исчезнет одно соответствующее предупреждение.
Следующим шагом является добавление инструмента сканирования.
Нажмите кнопку Actions справа вверху и выберите пункт Add new element из выпадающего меню.
Выберите пункт SAST tool во вновь появившемся окне, чтобы добавить в пайплайн инструмент сканирования, например, PT Application Inspector.
Выберите PT Application Inspector из списка инструментов в появившемся окне Create SAST scan config.
Выполните настройку параметров инструмента (см. раздел с описанием подключения и особенностей интеграции PT Application Inspector).
На странице со структурой пайплайна появится новая карточка инструмента PT Application Inspector, и последнее предупреждение исчезнет со страницы.
Теперь нажмите кнопку Actions в правом верхнем углу страницы со структурой пайплайна и выберите пункт Export CI/CD из выпадающего меню, чтобы экспортировать пайплайн в инструмент оркестрации CI/CD (в этом примере — Jenkins). Это необходимо для синхронизации настроек пайплайна в AppSec.Hub и в Jenkins. В правом нижнем углу экрана появится следующее подтверждающее сообщение.
Используйте кнопку Actions и далее пункт Start scan в выпадающем меню, чтобы запустить сканирование безопасности исходного кода с помощью инструмента PT Application Inspector.
При выборе пункта Start scan каждый раз происходит автоматический экспорт пайплайна в инструмент оркестрации CI/CD, а затем производится запуск сканирования. Таким образом, можно произвести изменения в структуре пайплайна, например, добавить инструмент сканирования, а затем запустить сканирование, используя пункт Start scan, без предварительного экспорта изменений с помощью пункта Export CI/CD. Благодаря автоматическому экспорту, при выборе пункта Start scan такая последовательность шагов будет работать корректно при условии, что на вкладке Settings данного пайплайна переключатель CI/CD overwrite protection находится в положении «выключено» (см. описание в разделе «Настройки security pipeline»).
Запуск и параметры сканирования кодовых баз
При сканировании кодовых баз в AppSec.Hub можно задавать различные параметры. В частности, для проведения сканирования можно указать хеш-сумму коммита (Commit) кода в кодовой базе. Если в качестве параметра указано только имя ветки, AppSec.Hub автоматически выбирает для сканирования последний коммит кода из этой ветки. Если одновременно указаны и имя ветки, и хеш-сумма коммита кода, приоритетное значение имеет хеш коммита. Также хеш коммита имеет приоритет над именем ветки и при работе с Meta-Runner.
Нажмите кнопку Actions в правом верхнем углу и выберите пункт Start scan из выпадающего меню, чтобы начать сканирование. В появившемся окне Scan start при необходимости укажите в поле Commit хеш-сумму коммита кода, который требуется просканировать. Хеш-сумму коммита кода проще всего скопировать из инструмента, где находится исходный код.
Нажмите кнопку Start scan в правом нижнем углу, чтобы начать сканирование. После этого на вкладке Scans пайплайна кодовой базы появится новая строка с информацией о запущенном сканировании.
Нажмите ID сканирования. На экране появится детальная информация о запущенном сканировании.
Если в качестве параметра сканирования был задан хеш коммита, его значение будет показано в разделе Scan target в поле Commit, а в поле Branch будет указано значение из поля Branch filter пайплайна. При нажатии на значение в поле Commit происходит переход на этот коммит в инструменте версионного контроля.
Если в качестве параметра сканирования было выбрано имя ветки, оно будет указано в разделе Scan target в поле Branch, а в поле Commit будет указан автоматически выбранный для сканирования последний коммит кода из этой ветки.
Security Pipeline нескольких кодовых баз
AppSec.Hub позволяет создать пайплайн для нескольких кодовых баз. При этом существуют ограничения на состав включаемых в пайплайн кодовых баз.
Чтобы добавить дополнительные кодовые базы в уже существующий пайплайн, нажмите кнопку Actions и выберите в выпадающем меню пункт Add codebase.
В открывшемся окне приведен список доступных для добавления в данный пайплайн кодовых баз.
Добавляемые в пайплайн кодовые базы должны быть привязаны к тому же репозиторию VCS (системы контроля версий), что и уже существующая в пайплайне.
Выберите кодовую базу, задайте ее параметры и добавьте в пайплайн.
Для основной (primary) кодовой базы, с которой создается пайплайн, параметр Checkout path всегда имеет значение «/», то есть он всегда указывает на корневую директорию в CI/CD инструменте. Для всех вновь добавляемых (secondary) кодовых баз эта директория генерируется автоматически и значение этого параметра можно поменять. Для этого нажмите на иконку Edit codebase в правом нижнем углу карточки кодовой базы, в появившемся окне Update codebase отредактируйте значение параметра Checkout directory и нажмите кнопку Update.
Для вновь добавляемых кодовых баз в качестве параметра нельзя указывать корневую директорию. Также значение параметра Checkout path не должно совпадать с уже используемыми другими кодовыми базами директориями. В этих случаях система выведет на экран сообщение о невозможности присвоить параметру заданное значение. В поле Branch filter можно задавать свой уникальный фильтр ветвей как для основной кодовой базы, так и для всех вновь добавляемых кодовых баз.
В AppSec.Hub поддерживается сканирование пайплайна с несколькими кодовыми базами. При запуске такого сканирования в окне Scan start необходимо указать ветку (поле Branch) или коммит (Commit) для каждой кодовой базы.
Примечание
Необходимо помнить, что значение в поле Branch filter задает фильтр доступных ветвей для каждой из кодовых баз. Если в окне Scan start в поле Branch будет выбрано значение, которое не подходит под заданный в поле Branch filter фильтр ветвей кодовой базы, сканирование не будет запущено.
При сканировании нескольких кодовых баз поле Scan target страницы с детальной информацией о запущенном сканировании содержит информацию о каждой из кодовых баз.
Система также позволяет провести импорт результатов через CLI.
Конфигурация уведомлений в GitLab CI
Инструмент GitLab CI позволяет включить и сконфигурировать рассылку уведомлений о статусе security pipeline с помощью механизма Notification config. Рассмотрим включение Notification config в security pipeline исходного кода.
Слева в меню выберите пункт Pipelines и выберите нужный пайплайн. Откройте страницу конфигурации Security Pipeline, нажав на идентификатор пайплайна. В правом верхнем углу вкладки Structure нажмите кнопку Action и в раскрывающемся меню выберите пункт Add new element.
В появившемся диалоговом окне выберите пункт Notification config.
Выберите конфигурацию из раскрывающегося списка появившегося диалогового окна, а затем нажмите кнопку Create.
На экране появится карточка вновь созданного элемента Notification config.
После добавления Notification config в security pipeline кодовой базы при запуске сканирования в окне Scan start появится дополнительный третий шаг (Step 3), позволяющий установить параметры конфигурации уведомлений GitLab CI.
Задайте в полях Project ID, Commit hash (SHA) и Pipeline ID необходимые значения. Значение для поля Project ID можно скопировать из инструмента GitLab CI.
Значения для полей Commit hash (SHA) и Pipeline ID также можно скопировать из инструмента GitLab CI.
Результаты работы пайплайна и прохождения Quality Gates в AppSec.Hub обновляются в списке Jobs инструмента GitLab CI в соответствии с правилами нотификации после запуска сканирования по нажатию кнопки Start scan.
Также результаты работы пайплайна можно отслеживать в GitLab CI в поле External на странице Pipelines.
Соотвествие статусов пайплайна в AppSec.Hub и статуса коммита в GitLab CI показано в следующей таблице:
Статус пайплайна в AppSec.Hub | Статус коммита в GitLab CI |
---|---|
Запрос на запуск получен | pending |
Ожидание в очереди Jenkins/Teamcity | pending |
Пайплайн выполняется | running |
Пайплайн завершен, QG пройден | success |
Пайплайн завершен, QG не пройден | failed |
Пайплайн завершился ошибкой | failed |
Пайплайн отменен на стороне Jenkins/Teamcity | canceled |
Security Pipeline артефакта
Для инструментов сборки артефактом является исходный код программы, скомпилированный для выполнения или тестирования. Артефакты создаются инструментами разработки ПО на базе исходного кода. Артефакты важны с точки зрения разработки приложений как сущности, которые могут быть включены в поставку.
Выберите приложение и нажмите пункт меню Development в консоли слева. Артефакты помещаются на вкладке Artifacts на странице приложения.
Нажмите кнопку Show filters в правом верхнем углу страницы и в поле Scan Objects Type выберите поле Artifact.
Для одной базы исходного кода приложения может существовать несколько артефактов (например, WAR-файлы, дистрибутивы в виде архивных файлов, образы Docker и т. д.).
С точки зрения безопасности приложения, каждый артефакт можно просканировать, чтобы найти проблемы информационной безопасности. AppSec.Hub автоматизирует этот процесс и поддерживает DevSecOps пайплайны артефактов. Выберите пункт меню Pipelines в консоли слева и нажмите идентификатор пайплайна артефакта (имеющего значение Artifact в поле Type), чтобы просмотреть подробную информацию о нем.
Откроется страница с детальной информацией о пайплайне.
Эта страница в версиях AppSec.Hub ниже 1.9 может содержать пять карточек, или компонентов, как в показанном на рисунке выше примере пайплайна артефактов:
- Карточка артефакта.
- Карточка инструмента оркестрации.
- Карточка инструмента AST.
- Карточка тегирования (tagging) и подход с ее использованием применяется только в версиях AppSec.Hub ниже 1.9. Тегирование в версиях AppSec.Hub 1.9 и выше описано в разделе «Тегирование релизных объектов».
-
Карточка Webhook.
Важное замечание
Подход с использованием карточки тегирования используется только в версиях AppSec.Hub ниже 1.9. Его описание приведено в разделе «Тегирование артефактов». В версиях AppSec.Hub 1.9 и выше карточки тегирования в структуре security pipeline артефактов и связанный с ними подход не используются. Тегирование в версиях AppSec.Hub 1.9 и выше описано в разделе «Тегирование релизных объектов».
Первая карточка представляет артефакт, который необходимо сканировать на наличие проблем информационной безопасности. Необходимая версия указывается в качестве параметра:
-
Нажмите кнопку Actions в правом верхнем углу и выберите пункт Start scan в выпадающем меню.
- В появившемся окне Scan start в поле Step 1 выберите версию артефакта для сканирования из списка доступных версий в поле Artifact version и версию билда (если применимо) в поле Build version.
- Если вы хотите просто запустить сканирование артефакта, перейдите к следующему шагу. Если вы хотите сделать данный артефакт релизным объектом, в секции Step 2 отметьте галочкой поле Set the artifact as a release object. Выберите существующий артефакт данного приложения из выпадающего списка в поле Choose artifact, чтобы привязать к нему сканирование и сделать его релизным объектом. В поле Artifact version укажите версию создаваемого релизного объекта и версию билда в поле Build version (если применимо, это зависит от типа релизного объекта — обязательные поля отмечены звездочкой).
- Нажмите кнопку Start scan внизу окна, чтобы начать сканирование. Если была выбрана опция Set the artifact as a release object, одновременно будет создан релизный объект.
Следующая карточка для этого пайплайна — карточка инструмента оркестрации Jenkins. Эта карточка позволяет настроить инструмент оркестрации.
Если Jenkins работает на нескольких узлах (nodes), можно выбрать конкретный узел для сканирования, указав метку, которой он помечен. Чтобы выбрать для работы узел, помеченный меткой, например, linux3, нажмите иконку редактирования на карточке инструмента оркестрации. В открывшемся окне Update CI tool укажите linux3 в поле Node label и нажмите кнопку Update. Сообщение, подтверждающее обновление конфигурации Jenkins, появится в правом нижнем углу экрана.
Карточка инструмента оркестрации Jenkins теперь будет содержать информацию о том, что метка linux3 является меткой выбранного узла. Процесс сканирования будет выполняться на этом узле с меткой linux3.
Следующая карточка для этого пайплайна — карточка инструмента AST. В данном примере это инструмент Clair. Для одного пайплайна может быть использовано несколько инструментов сканирования. Нажмите иконку редактирования на карточке инструмента сканирования, чтобы настроить параметры сканирования в окне Update SCA scan config.
Тегирование артефактов
Важное замечание
Подход к тегированию артефактов может быть применен только в версиях AppSec.Hub ниже 1.9. При переходе на версию 1.9 и выше, уже существующие карточки тегирования пропадают из структуры security pipeline, а все протегированные артефакты автоматически преобразуются в системе в релизные объекты. Тегирование в версиях AppSec.Hub 1.9 и выше описано в разделе «Тегирование релизных объектов».
Webhooks
Карточка Webhook и использование webhook-механизма не являются обязательными в Security Pipeline артефакта. По сути, webhook — это метод оповещения системы о событиях. Используя webhook, можно вызвать пайплайн в случае, когда произошло какое-либо предопределенное событие. Например, webhook может быть установлен для конкретного репозитория следующим образом: webhook вызывается, если в этот репозиторий помещается конкретный предопределенный артефакт. Параметры webhook можно просмотреть в карточке Webhook. Они могут быть обновлены с помощью кнопки редактирования в этом же поле.
Webhook посылает сигнал для запуска некоторых процессов. Он не использует обратную связь от инициированных им процессов. Webhook может использоваться не только в пайплайнах артефактов, но и в пайплайнах исходного кода. Как правило, webhook может быть настроен для процесса заливки нового исходного кода. В этом случае сканирование безопасности вновь залитого кода должно запускаться автоматически с помощью механизма webhook.
Чтобы скопировать токен в буфер обмена, достаточно нажать на его значение на карточке соответствующего Webhook.
Custom webhook
В некоторых случаях особенности организации рабочего процесса диктуют необходимость использования нестандартных способов взаимодействия с внешними инструментами, например, непосредственное тегирование артефактов через API Nexus RM может иметь определенные ограничения на уровне организации. Зачастую это обусловлено разграничением прав доступа или другими специфическими требованиями. Для преодоления таких ограничений могут использоваться Custom webhook.
Заметим, что для нормального функционирования данного механизма необходимо соблюдение следующих условий. Во-первых, следует разрешить тегирование релизного объекта с помощью переключателя Tagging на вкладке Settings пункта меню Pipelines страницы приложения. Во-вторых, к Security Pipeline должен быть подключен профиль Quality Gate, чтобы, в свою очередь, обеспечить возможность функционирования механизма тегирования.
Прежде чем включить конфигурацию Custom webhook в Security Pipeline, необходимо создать ее на странице администрирования системы. Более подробная информация приведена в разделе «Конфигурация Custom webhooks» Руководства администратора.
Рассмотрим включение Custom webhook на примере Security Pipeline артефакта. Включение в Security Pipeline исходного кода выполняется аналогично.
Выберите приложение и нажмите его строку на странице Applications.
Слева в меню выберите пункт Pipelines и перейдите в пайплайн артефакта, нажав его идентификатор.
В правом верхнем углу вкладки Structure нажмите кнопку Action и в раскрывающемся меню выберите пункт Add new element.
В появившемся диалоговом окне выберите пункт Custom webhook config.
Выберите предварительно созданную конфигурацию из раскрывающегося списка появившегося диалогового окна, а затем нажмите кнопку Create.
Сканирование
После того как все компоненты DevSecOps пайплайна артефактов настроены и пайплайн был экспортирован, нажмите кнопку Actions в правом верхнем углу страницы с детальной информацией о пайплайне и выберите пункт Export CI/CD в выпадающем меню, чтобы экспортировать пайплайн в инструмент оркестрации CI/CD (Jenkins).
Используйте кнопку Actions и выберите в выпадающем меню пункт Start scan, чтобы запустить сканирование безопасности артефактов, например, с помощью инструмента Clair. В появившемся окне Scan the artifact выберите версию артефакта для сканирования из списка доступных версий в поле Artifact version и нажмите кнопку Start scan внизу окна, чтобы начать сканирование.
Подтверждение начала сканирования появится на экране справа внизу.
После окончания сканирования его результат будет добавлен на вкладке Scans.
Security Pipeline нескольких артефактов
AppSec.Hub позволяет создать пайплайн для нескольких артефактов. При этом существует несколько ограничений на состав включаемых в пайплайн артефактов.
Чтобы добавить дополнительные артефакты в уже существующий пайплайн, нажмите кнопку Actions и выберите в выпадающем меню пункт Add artifact.
В появившемся окне Add artifact приведен лист доступных для добавления в данный пайплайн артефактов.
Примечание
Существует несколько ограничений на добавляемые артефакты:
-
Артефакт должен быть такого же типа, как и уже существующий в пайплайне. Например, к артефакту Docker container могут быть добавлены только артефакты Docker container, а Maven артефакт, например, WAR-файл, добавлен быть не может. Артефакты, не подходящие по типу для добавления в пайплайн, не отображаются в окне Add artifact.
-
В системе не должно существовать пайплайнов с одинаковым набором артефактов. Если в системе уже существует пайплайн с некотором набором артефактов, то создать второй такой же пайплайн не удастся. AppSec.Hub отслеживает уникальность каждого пайплайна с несколькими артефактами. Артефакты, выбор которых мог бы привести к созданию «не уникального» пайплайна, повторяющего уже существующий в системе пайплайн, просто не отображаются в окне Add artifact.
Выберите артефакт, который необходимо включить в пайплайн, и двойным щелчком мыши добавьте его в пайплайн.
Система позволяет провести импорт результатов через CLI.
Security Pipeline экземпляра приложения
Понятие экземпляра приложения (application instance) является важным с точки зрения разработки приложения. Экземпляр приложения предназначен для поставки и развертывания на различных тестовых стендах, промежуточных и производственных окружениях. Для развернутых экземпляров приложения могут быть запущены автоматизированные тесты. AppSec.Hub поддерживает DevSecOps пайплайны экземпляров приложения.
Выберите приложение и нажмите пункт меню Development. Нажмите кнопку Show filters в правом верхнем углу и в поле Scan Objects Type выберите поле Instance.
Для одного приложения может существовать несколько экземпляров для разных этапов разработки (System test, Stage, Production, Integration Acceptance Test, User Acceptance Test) и для разных конфигураций для одного и того же этапа разработки.
Для создания Security Pipeline экземпляра приложения, выберите элемент меню Pipelines в консоли слева, а затем нажмите кнопку +Add new в правом вернем углу и выберите пункт Instance pipeline из выпадающего меню. В появившемся окне Choose the AppInstance for pipeline выберите и дважды кликните имя экземпляра приложения, который нужно добавить.
Новый Security Pipeline экземпляра приложения появится на странице Pipelines.
Нажмите на идентификатор пайплайна. Откроется страница с детальной информацией о пайплайне. На этой странице выведены два предупреждения о том, что инструмент оркестрации и инструмент сканирования еще не добавлены в пайплайн. Нажмите кнопку Actions справа вверху и выберите пункт Add new element из выпадающего меню. Выберите пункт CI во вновь появившемся окне, чтобы добавить в пайплайн инструмент оркестрации, например, Jenkins, и введите параметры инструмента. Нажмите кнопку Actions справа вверху и выберите пункт Add new element из выпадающего меню. Выберите пункт DAST tool во вновь появившемся окне, чтобы добавить инструмент сканирования в пайплайн, и введите параметры инструмента.
В появившемся окне Create DAST scan config выберите инструмент в поле Tool.
В случае выбора инструмента PT BlackBox в данном окне появится обязательное для заполнения поле Group. Выберите в нем нужную группу из выпадающего списка и нажмите на кнопку Create.
Выберите пункт меню Pipelines слева и нажмите идентификатор Security Pipeline экземпляра приложения, чтобы получить информацию о нем. На экране появится детальная информация о Security Pipeline данного экземпляра приложения.
Типовой Security Pipeline экземпляра приложения состоит из трех компонентов (представленных на экране в виде трех карточек):
- Экземпляр приложения.
- Инструмент оркестрации.
- Инструмент AST.
Карточка экземпляра приложения представляет тот инстанс, который нужно сканировать на наличие проблем информационной безопасности. Чтобы настроить его параметры, нажмите иконку редактирования на карточке экземпляра приложения. Откроется окно обновления параметров экземпляра приложения. Описание конфигурации параметров экземпляра приложения представлено в разделе «Объекты сканирования».
Карточка инструмента оркестрации представляет соответствующий инструмент для этого пайплайна. Эта карточка позволяет настроить параметры инструмента оркестрации с помощью иконки редактирования на карточке инструмента, включая метку узла, как в случае с Security Pipeline артефактов.
Карточка инструмента AST представляет инструмент, выбранный для этого пайплайна, например, PT BlackBox — инструмент DAST. Для одного пайплайна может быть выбрано несколько инструментов AST. Нажмите иконку редактирования на карточке инструмента AST, чтобы настроить параметры сканирования в окне Update DAST scan config.
Когда все компоненты DevSecOps пайплайна экземпляра приложения настроены, нажмите кнопку Actions в верхнем правом углу страницы сведений о пайплайне и выберите в выпадающем меню пункт Export CI/CD, чтобы экспортировать пайплайн в инструмент оркестрации CI/CD.
Используйте кнопку Actions и выберите в выпадающем меню пункт Start scan, чтобы запустить сканирование безопасности экземпляра приложения. В открывшемся окне нажмите кнопку Start scan. Подтверждение начала сканирования появится в правом нижнем углу экрана.
Выберите вкладку Scans, чтобы просмотреть статус всех выполненных сканирований.
Отключение инструментов на уровне пайплайна
Инструменты сканирования можно отключить вручную в приложении на уровне пайплайна.
Для этого странице пайплайна выберите вкладку Structure и нажмите на иконку редактирования в правом нижнем углу карточки инструмента сканирования.
В появившемся окне Update scan config инструмент можно включить или отключить, переведя селектор в правом верхнем углу окна в нужное положение и нажав на кнопку Update.
Неактивный инструмент в структуре пайплайна на вкладке Structure отображается серым цветом.
Если инструмент был деактивирован на уровне компании (см. раздел «Отключение инструментов» Руководства администратора), активировать его на уровне пайплайна невозможно.
Если активный на уровне пайплайна инструмент был деактивирован на уровне компании, он будет при этом деактивирован и в данном пайплайне, его карточка в структуре пайплайна будет отображаться серым цветом, но при этом селектор в правом верхнем углу окна Update scan config у такого инструмента останется синего цвета. В случае последующей активации инструмента на уровне компании он будет вновь автоматически активирован в этом пайплайне.
Если инструмент был деактивирован и на уровне компании, и на уровне пайплайна, то даже в случае его последующей активации на уровне компании, в этом пайплайне он останется деактивирован.
Попытка добавить неактивный инструмент в пайплайн закончится сообщением об ошибке.
Все результаты сканирований и проблемы безопасности, полученные с помощью инструмента до его деактивации, останутся в системе неизменными. Они могут измениться только в случае последующей активации инструмента и получения с его помощью новых результатов.
Если был деактивирован единственный инструмент сканирования в пайплайне, дальнейшие сканирования и экспорт в этом пайплайне невозможны. После деактивации одного из нескольких инструментов в пайплайне сохраняется возможность сканирования и экспорта, но только с теми инструментами, которые остаются активными.
Импорт результатов производится также только из активных инструментов.
Если деактивирован инструмент в пайплайне, являющимся шаблоном, то он будет также деактивирован и в дочерних пайплайнах.
Если деактивирован инструмент в пайплайне, защищенном от перезаписи с помощью переключателя CI/CD overwrite protection, то результаты сканирования и экспорта после деактивации для данного инструмента не будут загружаться в систему.