Skip to content

Latest commit

 

History

History

03_devsecops

Домашнее задание к занятию «DevSecOps и AppSec. Часть 2»

Пришлите ответы на вопросы в личном кабинете на сайте netology.ru.

Описание

Домашнее задание — лабораторная работа, в которой вы по инструкциям выполните действия.

Обратите внимание, что домашнее задание является необязательным. Его выполнение не повлияет на получение зачёта по модулю.

Задание GitLab

В этом задании применяется сервис GitLab — один из комплексных и самых популярных решений для поддержки DevOps и DevSecOps.

Вы будете использовать пробную версию из облака для упрощения настройки и развёртывания.

Командой GitLab уже подготовлены и настроены инструменты, которые позволяют выполнять действия:

  1. Анализировать код на уязвимости — SAST, включая зависимости — SCA или Dependency Scanning.
  2. Анализировать контейнеры на уязвимости — Container Scanning.
  3. Анализировать используемые в проекте лицензии — License Scanning.
  4. Проверять секреты — Secret Detection.

Список всех проверок доступен по адресам:

DISCLAIMER

В тестовом виде запустили свой GitLab по адресу. Открыта регистрация. Нужен апрув от администратора - niyazkashapovexpertib в discord. Остальные шаги те же что и ниже. Так же нужен свой раннер и настроить свой проект под свои нужды.

Этапы выполнения

1. Перейдите по ссылке на глобальный гитлаб или ссылке на локальный гитлаб и зарегистрируйте новую учётную запись.

Для регистрации вам будет доступно 2 варианта.

Вариант 1. Если у вас есть аккаунт GitHub или Google.

Выберите один из вариантов: GitHub или Google.

01

Если вы выбрали GitHub, подтвердите свой выбор и нажмите кнопку Authorize gitlabhq:

Если вы выбрали Google, в окне кликните на свой аккаунт для подтверждения:


Вариант 2. Если у вас нет аккаунта GitHub или Google, зарегистрируйте свой аккаунт на email.

В окне укажите действующую почту:

register01

Установите значения, как на скриншоте, и нажмите кнопку Continue (в полях укажите любую страну и любой номер телефона):

trial1


2. Проверьте свой email, указанный при регистрации, и подтвердите регистрацию.

confirm_reg

3. Заполните данные для продолжения.

welcome_page

4. Введите название для группы проектов.

trial2

5. Дождитесь перехода на главную страницу.

start_page

6. Нажмите на кнопку Create new project для создания нового проекта.

start_page (1)

7. Выберите Import project для импорта готового проекта.

import_project

8. Нажмите на кнопку Repository By URL и заполните поле Git repository URL ссылкой: https://github.com/netology-code/ib-devsecops-app.git

repo_by_url

repo_by_url_2

9. Оставьте остальные поля заполненными по умолчанию и нажмите Create project.

repo_by_url_2 (1)

10. Настройте локальные раннеры

После регистрации, для работы с пайплайнами безопасности, необходимо поставить локальные раннеры на свой компьютер Раннер нужен для сборки и проведения проверок безопасности. Откройте настройки проекта, а именно настройки CI/CD.

settings_cicd

Подсказка: адрес имеет вид https://gitlab.com/<название группы>/<название проекта>/-/settings/ci_cd

Внутри настроек переходим к настройкам Runners, и нажимем New project Runner. Следуем инструкции по настройке раннера windows/linux/macos (в зависимости от вашей ОС). Можно использовать docker (на свой страх и риск)

create_runner

После установки раннера, его надо запустить командой gitlab-runner run. Однако, раннер нужно зарегистрировать. Токен будет указан на странице gitlab (надо скопировать и указать в команде): gitlab-runner register --name my-runner --url "http://gitlab.example.com" --registration-token <тут токен со страницы регистрации/создания раннера>

При успешной настройке, в настройках отобразится локальный раннер.

runner_good

При этом, необходимо откючить Group runners и Shared runners.

disable_gr

11. Docker runner

Для использования докера в качестве раннеров, нужно иметь запущенный на компьютере докер, и выполнить неколько простых команд:

docker pull gitlab/gitlab-runner

docker run -d --name gitlab-runner --restart always -v /Users/Shared/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

docker run --rm -it -v /Users/shared/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

При регистрации будут поля для заполнения (в командной строке после запуска последней команды): GitLab instance URL - https://gitlab.com registration token который отображается на странице регистрации раннера Enter a name for the runner - название раннера (любое) Enter an executor: - просто указать docker default Docker image - указываем стандартный образ python

12. Зайдите в пункт меню Build — Pipelines и нажмите на кнопку Run Pipeline.

pipeline

13. На странице снова нажмите на кнопку Run Pipeline.

run_pipeline

14. Дождитесь окончания процесса анализа.

13_inprogress

13_finished

Примечание. В списке задач вы увидите упавшую задачу с retire-js. Это нормально.

failed-jobs

retirejs

15. Перейдите в раздел Security & Compliance.

14

16. Изучите внимательно разделы:

  • Vulnerability Report — отчёт об уязвимостях;
  • Dependency List;
  • License Compliance.

Ответьте на вопросы:

Важно: после окончания проверки подождите пару минут и несколько раз обновите страницу через Shift + F5. Иногда не все данные по проверкам подтягиваются сразу. Убедитесь, что уязвимости точно найдены для приложения, зависимостей и контейнера.

Вопросы для домашнего задания

1. Сколько уязвимостей и какого уровня значимости найдено (Severity)?

vulnerabilities

2. Сколько из них:

  • в самом приложении (SAST);
  • в контейнерах (Container Scanning);
  • в зависимостях (Dependency Scanning);
  • секретов (Secret Detection)?

3. Какая уязвимость найдена в самом приложении? 4. Сколько зависимостей в приложении? 5. Сколько различного рода лицензий используется в приложении и его зависимостях?

Решение задания

Пришлите в личном кабинете ответы на вопросы из раздела «Ответьте на следующие вопросы» и скриншот статистики со всеми найденными уязвимостями. Нужны только числа в секциях Critical, High, Medium, Low.

Не удаляйте свою учётную запись после завершения работы. Она вам понадобится на следующей лекции.