Работа в менеджере репозиториев¶
Примечание
Для выполнения всех нижеописанных действий пользователю не требуется аутентифицироваться в системе AppSec.Track. Под пользователем в данном разделе понимается разработчик, работающий с менеджером репозиториев Nexus Repository Manager или JFrog Artifactory.
После установки AppSec.Track и подключения плагина Track.Plugin к Nexus Repository Manager или JFrog Artifactory работа пользователя в менеджере репозиториев будет проходить под контролем AppSec.Track.
Результат попытки пользователя загрузить компонент из менеджера репозиториев теперь будет зависеть от того, отвечает ли данный компонент установленным в AppSec.Track политикам безопасности.
Если выбранный компонент соответствует заданным в политиках безопасности условиям, он будет успешно загружен.
Если выбранный компонент не удовлетворяет заданным в политиках безопасности условиям, например содержит уязвимости, система заблокирует его загрузку и выдаст соответствующее сообщение вместе с информацией о нарушенных политиках безопасности и обнаруженных уязвимостях, а также рекомендации по выбору безопасной версии компонента.
Внизу страницы с сообщением о блокировке компонента расположены две кнопки: Полный отчет и Запрос разблокировки.
Полный отчет¶
При нажатии на кнопку Полный отчет происходит переход на страницу системы Информация о компоненте, содержащей список всех обнаруженных во время проверки компонента уязвимостей и нарушений установленных политик безопасности.
Нажмите на значок в строке уязвимости в нижней части страницы, чтобы получить детальную информацию о ней. На экране появится окно с информацией, включая данные о диапазоне версий компонента, в которых встречается эта уязвимость, характеристики и описание уязвимости, рекомендации по устранению и полезные ссылки.
Запрос разблокировки¶
В разработке ПО встречаются ситуации, когда не существует небезопасной версии компонента, предоставляющего критическую для проекта функциональность, или необходимо выпустить срочный релиз, в котором задействован небезопасный компонент, или руководство проекта просто принимает решение принять связанные с использованием такого компонента риски безопасности.
В таком случае для решения проблемы с заблокированным системой компонентом пользователю необходимо сделать запрос на его разблокировку. Перед принятием подобного решения рекомендуется тщательно изучить детальную информацию о компоненте и содержащихся в нем уязвимостях и оценить их влияние на функциональность разрабатываемого ПО.
Для разблокировки компонента необходимо нажать кнопку Запрос разблокировки.
В появившемся окне запроса на разблокировку компонента необходимо указать данные пользователя, создавшего запрос:
- В поле ФИО – имя пользователя.
- В поле Email – адрес электронной почты пользователя.
- Поле Комментарий не является обязательным для заполнения.
Для создания запроса нажмите на кнопку Отправить.
На экране появится сообщение о том, что запрос направлен на рассмотрение.
По умолчанию система отправляет уведомление о созданном запросе на разблокировку всем пользователям, имеющим роль Инженер ИБ.
Примечание
Для корректной работы уведомлений необходимо убедиться, что роли Инженер ИБ в системе присвоены права VIEW_WAVE, EDIT_WAVE и DELETE_WAVE (см. раздел «Создание, редактирование и удаление ролей»).
Уведомление о запросе на разблокировку содержит информацию о компоненте и о политиках, которые он нарушает, ссылку на подробный отчет, а также данные об авторе запроса, указанные им в окне запроса на разблокировку (ФИО, email и комментарий), и ссылку на страницу с запросами.
После регистрации запроса пользователю необходимо дождаться, пока в системе не будет разрешено скачивание запрошенного компонента или принято решение о запрете его использования, см. детали в разделе «Разблокировка».
После принятия решения по запросу его автору приходит уведомление на указанный при создании запроса адрес электронной почты, содержащий комментарий и данные сотрудника ИБ, принявшего решение, а также отчет о нарушениях политик.
Работа с использованием CLI¶
Все действия по работе пользователя с менеджером репозиториев могут быть выполнены не только через UI, но и с использованием командной строки или сборщиков. Например, используя команду:
curl --location 'https://<адрес_вашего_nexus_репозитория>/service/rest/v1/search/assets/download?repository=npm-proxy&name=es5-ext&version=0.10.56' --header 'Content-Type: application/json'
Выполнение стандартной команды по работе с менеджером репозиториев, так же как и при работе через UI, может закончиться как успешной загрузкой компонента, так и сообщением о его блокировке в зависимости от его соответствия заданным в политиках безопасности условиям.
В случае блокировки на экран будут выданы соответствующее сообщение вместе с информацией о нарушенных политиках безопасности с их разделением на блокирующие (Blocked policies) и неблокирующие (Policies), а также ссылки на полный отчет и запрос разблокировки.
Сканирование репозиториев по задаче в Nexus Repository Manager¶
Сканирование всех компонентов в выбранном репозитории можно запустить с помощью задачи в Nexus Repository Manager.
В Nexus Repository Manager перейдите в раздел администрирования и выберете в левом меню пункт System, а в нем – подпункт Tasks.
Для создания новой задачи на сканирование репозиториев нажмите на кнопку Create task.
В списке типов задач для создаваемой задачи выберите Track – Scan all components by Track.
Задайте следующие параметры задачи:
- Task enabled – установите этот флажок для того, чтобы создаваемая задача была активной.
- Task name – имя задачи.
- Notification email – адрес электронной почты, на который будет отправлено электронное письмо, если будет выполнено условие, выбранное в поле Send notification on.
- Send notification on – условие, при котором будет отправлено уведомление по электронной почте (Failure – только в случае неудачного завершения сканирования, Success or Failure – во всех случаях).
- Repository – в этом поле можно выбрать либо отдельный репозиторий для сканирования, либо все репозитории (All Repositories). В каждом из указанных репозиториев будут просканированы все компоненты.
- Parallel thread count – количество параллельных потоков при выполнении задачи (сколько компонентов будет параллельно отправляться на бэкенд), рекомендуемое значение – 128, максимальное – 512 (не рекомендуется использовать такое значение из-за большой нагрузки на бэкенд и увеличения времени обработки).
- Task frequency – частота выполнения задачи. Manual - эта задача может быть запущена только вручную. Once - запуск этой задачи один раз в указанные дату и время. Daily - выполнять эту задачу каждый день в указанное время. Weekly - запускать задачу каждую неделю в указанный день в указанное время. Monthly - запуск задания каждый месяц в указанные день и время. Advanced - запускать задачу с использованием предоставленных настроек cron.
Нажмите на кнопку Create task, чтобы создать задачу.
В списке задач появится вновь созданная задача типа Track – Scan all components by Track, запуск которой будет осуществляться в соответствии с заданными параметрами. Так, задачу с ручным запуском можно запустить на странице задачи с помощью кнопки Run.
Результаты сканирования будут доступны:
- В логах Nexus Repository Manager в пункте меню Support > _Logs в файле nexus.log. В логе отображается статус проверки каждого компонента в репозитории (PASS – если не было нарушений политик, BLOCK – если политики были нарушены).
- В AppSec.Track выберите репозиторий и перейдите на вкладку История запросов с логом запросов и описанием результатов запроса для каждого компонента.