В качестве результата отправьте ответы на вопросы в личном кабинете студента на сайте netology.ru.
Данные ДЗ будут представлять собой лабораторные работы, в рамках которых вы по инструкциям выполните определённые шаги.
Есть замечательный инструмент, который называется truffleHog. Он умеет искать по всей истории вашего проекта «секреты». Конечно же, если ваш проект использует git.
В этой лабораторной работе мы попробуем его в использовании на более-менее реалистичном примере, чтобы вы увидели, что не всё так гладко и достаточно часто бывает много ложных срабатываний, которые приходится «разгребать». Если вы просто отдадите «простыню» логов разработчикам, чтобы они сами разбирались — ничего хорошего из этого не выйдет.
Для truffleHog нужен Python, устанавливается он с помощью Pip — системы управления пакетами для Python.
Вы можете проделать всё с помощью VM, но мы предлагаем рассмотреть возможность использования Docker Container' в качестве «одноразовой машины».
Итак, начнём:
1. Поскольку нам нужен Python, да ещё и с установленным менеджером пакетов Pip, то логично найти уже настроенный образ Python.
2. На момент написания этого ДЗ (2021 г.) в Docker Hub есть три ключевых группы образов: windowsservercore (нам не подходит), buster (на базе Debian Buster) и alpine (на базе Alpine). Мы будем использовать buster, поскольку он содержит уже привычный вам менеджер apt и всё остальное.
3. docker run -it -p 8080:8080 python:buster /bin/bash. Скоро узнаем зачем нам открывать порт.
4. После того как вы попали в терминал контейнера, необходимо установить truffleHog: pip install truffleHog. При этом обратите внимание на регистр.
5. Далее всё достаточно просто: указываем инструменту ссылку или путь к репозиторию. В нашем случае мы воспользуемся специально подготовленным: https://github.com/netology-code/ib-secrets.
Переходим по ссылке и кликаем на кнопке Code:
Важно: убедитесь, что вы выбрали именно HTTPS и скопировали ссылку.
6. Используйте следующую команду для запуска сканирования:
trufflehog https://github.com/netology-code/ib-secrets.git | tee -a log.txtОбратите внимание на регистр. Да, это не опечатка, теперь hog написано маленькими буквами.
Вы увидите примерно следующий вывод:

Зелёным будет подсвечена метаинформация, а оранжевым — обнаруженный участок кода. В данном случае это ложные срабатывания, поскольку это явно не секреты, а checksum зависимостей нашего проекта.
Повторно запустить лог для просмотра вы можете с помощью команды cat log.txt | more (выход по клавише q).
7. Конечно, вы можете поставить с помощью apt или apt updateкакой-нибудь текстовый редактор и проанализировать log.txt. Но давайте посмотрим, как забрать файл из контейнера.
В Python есть встроенный модуль HTTP-сервера, который запускает HTTP-сервер в текущем рабочем каталоге: python -m http.server 8080:
P. S. В качестве дополнения поищите, как можно обойтись без Python с помощью nc.
Отправьте в личном кабинете студента найденные вами секреты с описанием того, чтобы это могло быть по вашему мнению.
Можете дополнительно ознакомиться со сравнением коммерческого сервиса GitGuardian c truffleHog.
Для удаления «чувствительных данных» существуют специальные инструменты. Самые простые:
- BFG Repo-Cleaner.
- Встроенная в
gitкомандаfilter-branch.
Разработчики уверяют, что вычистили все найденные вами в предыдущем задании секреты из истории с помощью BFG Repo-Cleaner. Убедитесь, так ли это.
Для этого используйте следующий репозиторий: https://github.com/netology-code/ib-secrets-fixed.git.
Отправьте в личном кабинете студента общее заключение в свободной форме о выполнении разработчиками задачи по вычистке репозитория.

