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 создаются в инструменте оркестрации (TeamCity/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.
- Инструмент для сканирования безопасности (например, Checkmarx) и используемый режим сканирования (например, инкрементальный).
-
Общая информация — последний экспорт в CI/CD, последнее сканирование, дата последнего обновления.
Security Pipeline исходного кода содержит несколько карточек — по одной на каждый инструмент, задействованный в пайплайне. На рисунке выше показан Security Pipeline исходного кода, который состоит из трех частей (или трех карточек):
- Кодовая база с исходным кодом.
- Инструмент оркестрации CI/CD.
- Инструмент AST (Checkmarx).
Процесс конфигурации Security Pipeline включает следующие шаги:
- Выбор инструментов разработки ПО и инструментов AST.
- Настройка выбранных инструментов.
- Определение критериев качества и создание Quality Gate (описание работы с QG приведено в разделах «Добавление Quality Gate в Security Pipelines» данного документа и «Quality Gates» Руководства администратора).
Набор используемых инструментов определяется в зависимости от имеющихся лицензий. Настройки каждого инструмента определяются в AppSec.Hub. Рассмотрим в качестве примера конфигурацию инструмента Checkmarx. Нажмите на иконку редактирования в правом нижнем углу карточки Checkmarx. Появится окно Update SAST scan config.
Задайте настройки Checkmarx в этом окне:
- Scan mode — выберите из выпадающего меню пункт Full или Incremental.
- Predefined preset/Dynamically modified preset — выбор предустановленного или динамического пресета, который будет использоваться при сканировании. Более подробная информация об использовании динамических пресетов для инструмента Checkmarx приведена в разделе «Security Pipeline исходного кода».
- Preset — выберите правила, определенные в Checkmarx (Checkmarx Default, Checkmarx Express, All, High and Medium и т. д.). Данное поле активно, если выбран Predefined preset.
- Root team — определяется в настройках Checkmarx.
- Team — выберите структурную единицу из выпадающего меню.
- Excluded directories — указанные здесь каталоги не будут проверяться во время сканирования безопасности.
Нажмите кнопку Update, чтобы сохранить настройки Checkmarx. Карточка инструмента Checkmarx после конфигурации будет отображать вновь заданные настройки. Кроме того, она содержит ссылку на проект в Checkmarx, в рамках которого будет выполняться сканирование. Если нажать эту ссылку, то через в появившемся окне инструмента можно ввести свои учетные данные и зайти в проект Checkmarx.
Обратите внимание, что AppSec.Hub автоматически обновляет настройки в самом инструменте Checkmarx — никакие дополнительные действия пользователя не требуются.
Пользователь 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 может быть запущена на сканирование.
-
Bypass — если этот переключатель включен, сканирование при запуске Security Pipeline не выполняется, при этом артефакт будет помечен тегом BYPASS, а в строке пайплайна появится значок Bypass is enabled
.
При запуске такого Security Pipeline в правом нижнем углу пользовательского интерфейса отображается подтверждающее уведомление, но фактически сканирования не выполняется и в истории сканирования (вкладка Scans) отображается соответствующее предупреждение.
Данная функциональность может, например, применяться при onboarding с использованием Meta-runner, если необходимо выполнить сканирование только артефакта, но не кодовой базы. В таком случае для Security Pipeline кодовой базы активируется опция Bypass.
-
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
. Важно заметить, что для корректного завершения onboarding (см. раздел «Onboarding») необходимо наличие в AppSec.Hub предопределенного шаблона Security Pipeline. В качестве такого шаблона может использоваться любой ранее созданный для данного приложения Security Pipeline соответствующего типа (для кодовых баз, артефактов и т. д.). Если для приложения определено несколько Security Pipelines одного типа, для предсказуемого завершения интеграции важно для нужного Security Pipeline активировать опцию Is template — вновь автоматически создаваемые Security Pipelines для данного приложения будут использовать выбранный шаблон.
В поле This pipeline is template for: приведен список всех пайплайнов в системе, созданных на основе данного пайплайна в качестве шаблона.
В свою очередь, поле Is template пайплайна, созданного с использованием другого пайплайна в качестве шаблона, содержит ссылку на пайплайн-шаблон.
Также информация о пайплайне-шаблоне может быть получена в строке созданного дочернего пайплайна при наведении курсора на значок
. Кроме этого, нажав на значок, можно перейти к пайплайну-шаблону.
Дочерний security pipeline, созданный с использованием другого пайплайна в качестве шаблона, не может быть использован в качестве шаблона для создания других пайплайнов.
-
Issue state policy — настройка алгоритма изменения состояний проблем безопасности. Может быть выбрана одна из трех настроек:
- Compare with the 1st scan — определять состояние обнаруживаемых проблем безопасности в сравнении с результатами первого сканирования (стандартная настройка системы).
- Compare with previous scan — определять состояние обнаруживаемых проблем безопасности в сравнении с результатами предыдущего сканирования.
- Compare with the custom — определять состояние обнаруживаемых проблем безопасности в сравнении с результатами произвольного успешного сканирования. При выборе этого варианта на вкладке Settings настроек Security Pipelines появляется дополнительное поле Issue state policy scan task, в котором необходимо указать соответствующее сканирование.
Добавление Quality Gate в Security Pipelines
Когда профиль Quality Gate создан и настроен (см. разделы «Quality Gates» Руководства администратора), он может быть добавлен в Security Pipeline (s) одного или нескольких приложений.
Чтобы добавить Quality Gate в Security Pipeline, предварительно выбрав необходимое приложение (см. раздел «Приложения в AppSec.Hub»), перейдите на страницу настроек Security Pipeline, см. раздел «Настройки Security Pipeline».
Перейдите на вкладку Quality Gate и, выбрав в раскрывающемся меню предварительно созданный профиль Quality Gate (см. раздел «Quality Gates» Руководства администратора), нажмите кнопку Save, чтобы включить Quality Gate в Security Pipeline.
После добавления Quality Gate в Security Pipeline, ниже отобразится перечень условий, определенных в профиле Quality Gate.
Для подключения другого Quality Gate выберите его в раскрывающемся меню и нажмите кнопку Save. На странице отобразятся условия для вновь подключенного Quality Gate.
Примечание
К Security Pipeline одновременно может быть подключен только один Quality Gate. При подключении нового Quality Gate ранее подключенный — отключается.
Чтобы отключить Quality Gate от Security Pipeline, нажмите кнопку Unlink.
Пример
Рассмотрим пример использования 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.
Каждое выполненное сканирование представлено отдельной строкой. Чтобы получить более подробную информацию о сканировании, нажмите значок рядом с его идентификатором.
Эта строка содержит следующие поля:
-
# — идентификатор выполненного сканирования в AppSec.Hub. Нажмите на него, чтобы ознакомиться с подробной информацией о сканировании. Отобразится следующая страница.
На данной странице приведена следующая информация:
- Scan task — номер сканирования в системе.
- Общий статус сканирования.
- Application — имя приложения.
- Pipeline — ссылка на Security Pipeline, запускавшийся для сканирования.
- Started — время и дата запуска сканирования.
- Duration — продолжительность сканирования.
- CI system — используемый инструмент CI/CD.
- External build ID — внешний идентификатор сканирования. При нажатии на значение осуществляется переход в соответствующий инструмент CI/CD.
- Details — сводная информация о сканировании.
- Scan target — информация об объекте сканирования.
- Quality gates — информации о прохождении установленных критериев качества (Quality gates).
- Quality gate condition violations — информация о превышении пороговых значений, определенных в профиле подключенного Quality gates.
- Issue import results — результат импорта security issues в виде диаграммы с распределением по статусам (New, Repeated, Fixed). Рядом с диаграммой располагается иконка, нажав которую можно перейти к перечню security issues, обнаруженных в ходе данного сканирования. Предусмотрена возможность обновления данных на странице (кнопка Refresh data).
- Release object — ссылка на релизный объект, см. рис. ниже.
-
Tagging — статус тегирования и информация о тегируемом артефакте, например, как это показано на рисунке ниже.
Вернемся к строке с информацией о сканировании. Помимо идентификатора сканирования в AppSec.Hub, она содержит следующие поля:
- Общий статус сканирования: SUCCESS/FAILED/BYPASSED/IN PROGRESS/CANCELED/BROKEN. Более детальная информация приведена в поле Details.
- Started — дата и время начала сканирования.
- Duration — продолжительность сканирования.
- В зависимости от типа пайплайна, для кодовой базы могут быть представлены поля Branch и Commit, а для артефакта — поле Version, содержащее версию просканированной сборки.
- Pipeline — имя Security Pipeline, запускавшегося для сканирования.
- CI/CD — используемый инструмент CI/CD.
- External build — внешний идентификатор сканирования. При нажатии на значение осуществляется переход в соответствующий инструмент CI/CD.
- Details — краткий статус сканирования в инструменте оркестрации и результат применения Quality Gates, например:
- Job failed. No QG checks will be applied (для сканирования с общим статусом FAILED).
- Scan is finished. One or more QG checks are not passed (для сканирования с общим статусом FAILED).
- Scan job is finished. No QG checks have been applied (для сканирования с общим статусом SUCCCCES).
- Scan job is finished. All QG checks are done (для сканирования с общим статусом SUCCCCES).
- Scan was not completed due to active BYPASS option of pipeline (для сканирования с общим статусом BYPASSED).
- Jenkins job build status: ABORTED (для сканирования с общим статусом CANCELED).
-
Unable to read build 7 status for codebase 'new_cb': Unable to find 'max/DVJA/SAST_new_cb' job: Connect to jenkins.dev.yourcompany.com:80 failed: Connection refused (Connection refused) (для сканирования с общим статусом BROKEN).
Важное замечание
Заметим, что с учетом установленного Quality Gate, результаты сканирования с точки зрения инструмента оркестрации TeamCity/Jenkins и с точки зрения AppSec.Hub могут значительно различаться. Выполнение сканирования в инструменте оркестрации могло пройти успешно, однако определенные в QG критерии с точки зрения серьезности обнаруженных рисков безопасности (security risks) и рисков, связанных с корректностью использования лицензии (compliance risks), при этом могут быть не выполнены. В этом случае статус QG Check в AppSec.Hub может иметь значение Failed, и выполнение Security Pipeline должно быть прервано, поскольку критерии QG не были выполнены. Например, после невыполнения критерия QG не должен быть осуществлен шаг по разворачиванию этой сборки в целевом окружении. Если QG не был установлен, то результат сканирования в AppSec.Hub определяется как Passed, если оно успешно прошло в инструменте оркестрации TeamCity/Jenkins. Статус сканирования в AppSec.Hub с точки зрения QG отображается в поле SAST QG.
-
SCAN QG — статус выполнения сканирования в AppSec.Hub с точки зрения установленных SAST QG, SCA QG и DAST QG. Если эти QG не были установлены, поле будет пустым. Если какой-либо QG установлен, но не применим для данного вида тестирования, это поле также не будет содержать информации об этом QG. Если какой-либо QG был установлен, но критерий, заданный в QG, не был выполнен, это поле будет содержать соответствующий значок с названием практики в красном овале, например, SAST. Если QG был установлен и критерий, заданный в QG, был выполнен, это поле будет содержать соответствующий значок с названием практики в зеленом овале, например, SAST. Нажмите идентификатор выполненного сканирования, чтобы получить детальную информацию о результате сканирования.
В конце каждой строки с информацией о сканировании находится кнопка Re-run scan .
Такая же кнопка расположена справа вверху на странице с подробной информацией о сканировании.
Эта кнопка запускает новое сканирование с теми же параметрами, с которыми было запущено сканирование, к которому относится данная кнопка. При нажатии этой кнопки окно с параметрами запускаемого сканирования не отображается на экране, требуется просто подтвердить запуск сканирования нажатием кнопки Confirm в появившемся окне.
На странице появится строка с информацией о вновь запущенном сканировании.
Примечание
Перезапуск сканирования будет работать корректно, если не было изменений в конфигурации пайплайна. Если конфигурация пайплайна менялась (например, была изменена конфигурация объекта сканирования, или в пайплайн был добавлен еще один объект сканирования), то возможна некорректная работа сканирования с недостоверным результатом, так как для измененного пайплайна будут применены устаревшие параметры от выбранного сканирования.
Примечание
Возможна ситуация, когда пайплайн не активен (переключатель Pipeline activity на вкладке Settings выключен и имеет серый цвет),
В этом случае попытка перезапуска сканирования с помощью кнопки Re-run scan приведет к появлению предупреждения о невозможности запуска сканирования из-за неактивного состояния пайплайна.
Экспорт в CI/CD
После того, как Security Pipeline создан и сконфигурирован в AppSec.Hub, его можно экспортировать в инструмент CI/CD.
Примечание
Если в пользовательском интерфейсе AppSec.Hub выполнены какие-либо изменения структуры уже существующего Security Pipeline, нет необходимости выполнять повторный экспорт параметров в инструменты CI/CD, см. ниже. Эти изменения будут учтены и внесены системой после получения запроса на сканирование непосредственно перед выполнением сканирования.
На странице PIPELINE DETAILS нажмите кнопку Actions в правом верхнем углу и выберите в выпадающем меню пункт Export CI/CD, чтобы экспортировать Security Pipeline в инструмент CI/CD — TeamCity/Jenkins.
Сообщение о результате экспорта появится в правом нижнем углу экрана.
В результате экспорта, в TeamCity/Jenkins будет создан Security Pipeline с параметрами конфигурации, определенными в AppSec.Hub. Теперь TeamCity/Jenkins может выполнять сконфигурированный Security Pipeline. TeamCity/Jenkins будет запускать все инструменты в пайплайне и предоставлять полученные результаты тестирования безопасности в 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 в TeamCity/Jenkins.
На экране появится страница авторизации TeamCity/Jenkins.
Security Pipeline исходного кода
Важное замечание
Если подготовленной базы исходного кода не существует, ее следует создать перед началом работы с Security Pipeline исходного кода. Процесс создания новой базы кода описан в разделе «Кодовые базы».
Выберите элемент меню Pipelines в консоли слева, а затем нажмите кнопку +Add new в правом вернем углу и выберите пункт Сodebase pipeline из выпадающего меню, чтобы добавить новый Security Pipeline исходного кода.
В открывшемся окне для добавления новой кодовой базы Choose the codebase for pipeline выберите и дважды кликните имя кодовой базы, которую нужно добавить.
Новый Security Pipeline исходного кода появляется на странице Pipelines.
Нажмите на идентификатор пайплайна исходного кода. Откроется страница с детальной информацией о пайплайне. На этой странице, как показано на рисунке ниже, выведены два предупреждения о том, что инструмент оркестрации (CI/CD) и инструмент сканирования еще не добавлены в пайплайн.
Обратите внимание на параметр Checkout path. Он задает директорию, в которой будет производиться выгрузка (checkout) данной кодовой базы в CI/CD инструменте.
Нажмите кнопку Actions справа вверху и выберите пункт Add new element из выпадающего меню.
Выберите пункт CI во вновь появившемся окне, чтобы добавить инструмент оркестрации CI/CD TeamCity в пайплайн (Jenkins может быть добавлен таким же образом).
В следующем окне выберите TeamCity из списка инструментов и нажмите кнопку Create. Поле Pipeline auth token можно оставить пустым.
В результате на вкладке Structure появится новая карточка инструмента TeamCity, а также исчезнет одно соответствующее предупреждение.
Следующим шагом является добавление инструмента сканирования.
Нажмите кнопку Actions справа вверху и выберите пункт Add new element из выпадающего меню.
Выберите пункт SAST tool во вновь появившемся окне, чтобы добавить в пайплайн инструмент сканирования, например Checkmarx.
Выберите пункт Checkmarx из списка инструментов в появившемся окне Create SAST scan config.
В появившемся окне выполните настройку следующих параметров.
- Scan mode — выберите режим сканирования (Full/Incremental).
- Predefined preset/Dynamically modified preset — выбор соответственно предустановленного или динамического пресета, который будет использоваться при сканировании. Опция Predefined preset позволяет следующим шагом выбрать любой импортированный из Checkmarx пресет. Более подробная информация о динамических пресетах приведена ниже в данном разделе.
- Preset — выберите пресет Checkmarx, который будет использоваться для сканирования. Данный параметр используется, только если в предыдущем поле выбран Predefined preset.
Заполнив остальные поля (Root team, Team, Excluded directories), нажмите кнопку Create, см. раздел «Структура Security Pipeline».
Примечание
Если поле Team отставлено пустым, автоматически будет создана команда с именем, соответствующим названию приложения в AppSec.Hub.
На странице со структурой пайплайна появится новая карточка инструмента Checkmarx, и последнее предупреждение исчезнет со страницы.
Примечание
Наименование используемого пресета (-ов) указывается на карточке инструмента.
Теперь нажмите кнопку Actions в правом верхнем углу страницы со структурой пайплайна и выберите пункт Export CI/CD из выпадающего меню, чтобы экспортировать пайплайн в инструмент оркестрации CI/CD (в этом примере — TeamCity). Это необходимо для синхронизации настроек пайплайна в AppSec.Hub и в TeamCity. В правом нижнем углу экрана появится следующее подтверждающее сообщение.
Используйте кнопку Actions и далее пункт Start scan в выпадающем меню, чтобы запустить сканирование безопасности исходного кода с помощью инструмента Checkmarx.
При выборе пункта Start scan каждый раз происходит автоматический экспорт пайплайна в инструмент оркестрации CI/CD, а затем производится запуск сканирования. Таким образом, можно произвести изменения в структуре пайплайна, например, добавить инструмент сканирования, а затем запустить сканирование, используя пункт Start scan, без предварительного экспорта изменений с помощью пункта Export CI/CD. Благодаря автоматическому экспорту, при выборе пункта Start scan такая последовательность шагов будет работать корректно при условии, что на вкладке Settings данного пайплана переключатель CI/CD overwrite protection находится в положении «выключено» (см. описание в разделе «Настройки security pipeline»).
Запуск и параметры сканирования кодовых баз
При сканировании кодовых баз в AppSec.Hub можно задавать различные параметры. В частности, для проведения сканирования необходимо выбрать и указать имя ветки (branch) или хеш-сумму коммита (commit) кода в кодовой базе. Если в качестве параметра указано имя ветки, AppSec.Hub автоматически выбирает для сканирования последний коммит кода из этой ветки. Если одновременно указаны и имя ветки, и хеш-сумма коммита кода, приоритетное значение имеет хеш коммита. Также хеш коммита имеет приоритет над именем ветки и при работе с Meta-Runner.
Нажмите кнопку Actions в правом верхнем углу и выберите пункт Start scan из выпадающего меню, чтобы начать сканирование. В появившемся окне Scan start укажите в поле Branch имя ветки или в поле Commit хеш-сумму коммита кода, который необходимо просканировать. Хеш-сумму коммита кода проще всего скопировать из инструмента, где находится исходный код.
Нажмите кнопку Start scan в правом нижнем углу, чтобы начать сканирование. После этого на вкладке Scans пайплайна кодовой базы появится новая строка с информацией о запущенном сканировании.
Нажмите ID сканирования. На экране появится детальная информация о запущенном сканировании.
Если в качестве параметра сканирования был выбран хеш коммита кода, его значение будет показано в разделе Scan target в поле commit, а в поле branch будет указано значение detached. При нажатии на значение в поле commit происходит переход на этот коммит в инструменте версионного контроля.
Если в качестве параметра сканирования было выбрано имя ветки, оно будет указано в разделе Scan target в поле branch, а в поле commit будет указан автоматически выбранный для сканирования последний коммит кода из этой ветки.
Security Pipeline нескольких кодовых баз
AppSec.Hub позволяет создать пайплайн для нескольких кодовых баз. При этом существуют ограничения на состав включаемых в пайплайн кодовых баз.
Чтобы добавить дополнительные кодовые базы в уже существующий пайплайн, нажмите кнопку Actions и выберите в выпадающем меню пункт Add codebase.
В появившемся окне Add codebase приведен лист доступных для добавления в данный пайплайн кодовых баз.
Добавляемые в пайплайн кодовые базы должны быть привязаны к тому же репозиторию VCS (системы контроля версий), что и уже существующая в пайплайне.
Выберите кодовую базу, которyю необходимо включить в пайплайн, и двойным щелчком мыши добавьте ее в пайплайн.
Для основной (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 |
Динамические пресеты в Checkmarx
Если в качестве SAST-инструмента используется Checkmarx, при его добавлении в AppSec.Hub реализована возможность использования динамических пресетов (Dynamically modified preset).
Примечание
Если тот или иной язык программирования (и соответствующие проверки) не выбран в предустановленном пресете (Predefined preset), написанный на нем код при сканировании будет игнорироваться.
При использовании Dynamically modified preset во время сканирования происходит автоматическое распознавание языков программирования, составляющих кодовую базу, и формируется новый пресет, в который включаются проверки для обнаруженных языков. Вместе с тем, если в AppSec.Hub создано правило (-а), определяющее условное принятие риска (см. раздел «Проблемы безопасности»), соответствующее условие (-я) также будет автоматически добавлено в динамически обновляемый пресет инструмента.
Среди преимуществ такого похода можно выделить следующие:
- Оперативная реакция на изменение состава кодовой базы (появление новых языков программирования) с последующим обновлением пресета Checkmarx с целью активации специфических проверок.
- Сокращение времени сканирования в результате пропуска ненужных проверок.
Если в кодовой базе появляется новый язык программирования или пропадает ранее использовавшийся, происходит динамическое обновление пресета в соответствии с произошедшими изменениями.
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, одновременно будет создан релизный объект.
Следующая карточка для этого пайплайна — карточка инструмента оркестрации TeamCity. Эта карточка позволяет настроить инструмент оркестрации. Если TeamCity работает на нескольких узлах (nodes), можно выбрать конкретный узел для сканирования, указав метку, которой он помечен. Чтобы выбрать для работы узел, помеченный меткой, например, linux3, нажмите иконку редактирования на карточке инструмента оркестрации. В открывшемся окне Update CI tool выберите режим Use node name и выберите linux3 из выпадающего списка в поле Node label и нажмите кнопку Update.
Сообщение, подтверждающее обновление конфигурации TeamCity, появится в правом нижнем углу экрана.
Карточка инструмента оркестрации TeamCity теперь содержит информацию о том, что метка «linux3» является меткой выбранной узла.
Процесс сканирования будет выполняться на этом узле с меткой «linux3».
Следующая карточка для этого пайплайна — карточка инструмента AST. В данном примере это инструмент Clair. Для одного пайплайна может быть использовано несколько инструментов сканирования. Clair — это инструмент сканирования SCA (Software Composition Analysis). Нажмите иконку редактирования на карточке инструмента сканирования, чтобы настроить параметры сканирования в окне Update SCA scan config.
В этом окне можно выбрать инструмент сканирования и выбрать этап (stage) из выпадающего списка (Develop, Build, Stage Release, Release, Operate).
Тегирование артефактов
Важное замечание
Описанный в этом разделе подход к тегированию артефактов может быть применен только в версиях AppSec.Hub ниже 1.9. При переходе на версию 1.9 и выше, уже существующие карточки тегирования пропадут из структуры security pipeline, а все протегированные артефакты автоматически преобразуются в системе в релизные объекты. Тегирование в версиях AppSec.Hub 1.9 и выше описано в разделе «Тегирование релизных объектов».
Карточка тегирования (Tagging) и тегирование арефактов само по себе являются опциональными. Чтобы добавить тегирование в Security Pipeline артефакта, нажмите кнопку Actions справа вверху на вкладке Structure и выберите пункт Add new element из выпадающего меню. Выберите пункт конфигурации Tagging config из списка во вновь появившемся окне.
Некоторые репозитории, например Nexus Pro, поддерживают механизм тегов и тегирования. Тегирование позволяет наносить метки на артефакты в зависимости от результатов сканирования. Инструмент Nexus IQ Server работает в области SCA. Если сканирование успешно проходит Quality Gate, артефакт будет помечен меткой «QG_SCA_PASS», а в противном случае — меткой «QG_SCA_FAIL». Отсутствие метки на артефакте при определенном QG означает, что артефакт еще не сканировался после установки QG. Если QG не задан, а сканирование артефактов было выполнено, артефакт вообще не будет помечен тегом в результате этого сканирования.
Карточка тегирования (tagging) позволяет автоматически выполнять тегирование артефактов в качестве результирующего шага сканирования безопасности.
Нажмите иконку редактирования на карточке тегирования и выберите имя артефакта из списка Target artifact в окне Update tagging config, чтобы определить артефакт, который нужно пометить тегом.
Важное замечание
Tеги, которыми может быть помечен артефакт, определяются пользователем с правами Администратора на странице администрирования с помощью пункта меню Tagging config. Соответствующее уведомление расположено в окне Update tagging config. Настройка тегирования артефактов описана в разделе «Настройки тегирования» Руководства администратора.
AppSec.Hub определяет практику, используемую во время сканирования (SAST, DAST или SCA), и результат сканирования (успешно или не успешно), выбирает соответствующий тег из списка (например, QG_SAST_PASS в случае успешного сканирования) и маркирует артефакт этим тегом.
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 (TeamCity).
Используйте кнопку Actions и выберите в выпадающем меню пункт Start scan, чтобы запустить сканирование безопасности артефактов с помощью инструмента Nexus IQ Server. В появившемся окне 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.
Выберите артефакт, который необходимо включить в пайплайн, и двойным щелчком мыши добавьте его в пайплайн.
Сканирование пайплайнов для нескольких артефактов на данный момент в AppSec.Hub не поддерживается. Добавление этой функциональности запланировано в следующем релизе.
Система позволяет провести импорт результатов через 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 во вновь появившемся окне, чтобы добавить инструмент оркестрации TeamCity или Jenkins в пайплайн, и введите параметры инструмента.
Нажмите кнопку Actions
справа вверху и выберите пункт Add new element из выпадающего меню.
Выберите пункт DAST tool во вновь появившемся окне, чтобы добавить инструмент сканирования в пайплайн, и введите параметры инструмента.
В появившемся окне Create DAST scan config выберите инструмент в поле Tool.
В случае выбора инструмента Netsparker в данном окне появятся следующие обязательные для заполнения поля:
- License — укажите лицензионный ключ.
- Scan Profile — выберите профиль сканирования.
При необходимости отметьте пункт Include 'Accepted Risk' and 'False Positive' vulnerabilities (Включать ложноположительные и добавленные в исключения проблемы безопасности).
Выберите пункт меню Pipelines слева и нажмите идентификатор Security Pipeline экземпляра приложения, чтобы получить информацию о нем. На экране появится детальная информация о Security Pipeline данного экземпляра приложения.
Типовой Security Pipeline экземпляра приложения состоит из трех компонентов (представленных на экране в виде трех карточек):
- Экземпляр приложения.
- Инструмент оркестрации.
- Инструмент AST.
Карточка экземпляра приложения представляет тот instance, который нужно сканировать на наличие проблем информационной безопасности. Чтобы настроить его параметры, нажмите иконку редактирования на карточке экземпляра приложения. Откроется окно обновления параметров экземпляра приложения. Описание конфигурации параметров экземпляра приложения представлено в разделе «Объекты сканирования».
Карточка инструмента оркестрации представляет соответствующий инструмент для этого пайплайна (TeamCity или Jenkins). Эта карточка позволяет настроить параметры инструмента оркестрации с помощью иконки редактирования на карточке инструмента, включая метку узла, как в случае с Security Pipeline артефактов.
Карточка инструмента AST представляет инструмент, выбранный для этого пайплайна, например, Netsparker — инструмент DAST (Dynamic Application Security Testing). Для одного пайплайна может быть выбрано несколько инструментов AST. Нажмите иконку редактирования на карточке инструмента AST, чтобы настроить параметры сканирования в окне Update DAST scan config.
Когда все компоненты DevSecOps пайплайна экземпляра приложения настроены, нажмите кнопку Actions в верхнем правом углу страницы сведений о пайплайне и выберите в выпадающем меню пункт Export CI/CD, чтобы экспортировать пайплайн в инструмент оркестрации CI/CD.
Используйте кнопку Actions и выберите в выпадающем меню пункт Start scan, чтобы запустить сканирование безопасности экземпляра приложения. В открывшемся окне нажмите кнопку Start scan. Подтверждение начала сканирования появится в правом нижнем углу экрана.
Выберите вкладку Scans, чтобы просмотреть статус всех выполненных сканирований.