Поиск уязвимостей в изображениях Docker с помощью Snyk

В этой статье пойдет речь о поиске уязвимостей в Docker Images с помощью Snyk. Он предлагает пользователям облачную платформу, включающую в себя различные продукты.
Введение
Snyk OpenSource интегрируется с Git посредством задействования редактора CLI. После запуска программное обеспечение может обнаружить уязвимости, классифицировать их по степени угрозы и автоматически исправить известные ошибки безопасности. Пользователь имеет возможность использовать данный функционал при отправке запроса на извлечение, чтобы он также применялся относительно кода, отправляемого в репозитории.
Snyk Infrastructure как код анализирует уязвимости и исправляет их в файлах конфигурации JSON и YAML Kubernetes. Здесь можно настроить чувствительность обнаружения проблем в репозиториях Git в соответствии с параметрами, выбранными администраторами.
Snyk Container позволяет тестировать Docker Images и связанные с ними реестры во время их создания и после этого. Программа может быть интегрирована с CLI, SCMS, инструментами CI, реестрами контейнеров и Kubernetes.

Настало время взглянуть, как пользователь может использовать любой контейнер, встроенный в Docker, для обнаружения уязвимостей.
Файл Docker
Первое, что нужно для использования Snyk для обнаружения уязвимостей, — это Docker Image. В данном случае будут использовать следующее изображение Docker:
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
[“python”, “app.py”]
Первое, что следует сделать, это создать изображение локально с помощью следующей команды:
docker build -t 0xyz0/python-app.
Теперь у пользователя есть изображение для анализа.
Сканирование изображения из клиента Docker
Интеграция сервиса Snyk с Docker делает этот процесс невероятно простым. Чтобы начать сканирование, просто нужно выполнить следующую команду:
docker scan 0***0/python-app
Начнется анализ, в ходе которого будут получены более или менее подробные результаты, в зависимости от обнаруженных уязвимостей, и с окончательными выводами:

Как можно увидеть, программа не только сообщает пользователю, сколько уязвимостей она обнаружила. Если прокрутить страницу вверх, то пользователь сможет увидеть, каковы они и какова их критичность. Более того, можно найти рекомендации относительно базового изображения, которое следует использовать.
Подробную информацию об уязвимости можно прочитать в базе данных уязвимостей Snyk.
В данном случае он предлагает пользователю несколько альтернатив, поэтому человек собирается изменить свой файл Docker, опираясь на первый вариант:
FROM python:3.7.11-slim
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["python", "app.py"]
Следует восстановить изображение и отсканировать его:
docker build -t 0***0/python-app . && docker scan 0***0/python-app
Пользователь теперь заметит, что в результатах видно меньше уязвимостей. И в этом случае программа скажет человеку, что в настоящее время он использует более безопасное базовое изображение:

Можно получить более подробный отчет, если добавить файл Docker, который создает изображение, в команду:
docker scan -f Dockerfile 0***0/python-app
И даже исключить базовое изображение из анализа, на всякий случай, если следует сосредоточиться на том, что было сделано неправильно:
docker scan -f Dockerfile --exclude-base 0***0/python-app
Эта служба также может быть интегрирована с репозиториями Docker Hub:

Для этого у пользователя должна быть одна из платных подписок. Тем не менее, можно открыть его локально, используя бесплатный тарифный план, который требуется только для входа в Docker Hub (он имеет четкие ограничения на сканирование), пока человек разрабатывает или хочет проверить, насколько безопасен сторонний образ, который возможно использовать.
Использование Snyk в Github Actions
Первое, что нужно сделать, это создать репозиторий и внутри него создать папку:
.github / worflows /
Затем, чтобы использовать любой контейнер в Github, следует создать новый образ или взять тот образ, который был создан ранее в Docker Hub. Чтобы использовать Snyk, необходимо добавить новый секрет под названием «SNYK_TOKEN», а для получения токена нужно создать учетную запись в любом месте. Из общих настроек, где указан токен API, пользователь сможет быстро сгенерировать его.
С помощью токена пользователь сможет создать секрет на Github и использовать его в Actions. Теперь нужно передать ему имя репозитория, созданного в Docker Hub. Затем следует передать сообщение, которое он должен отправить. Пользователь может получить доступ к выводам осуществленных шагов для использования в качестве переменной в сообщении.
with:
args: 'A new commit has been pushed. Please verify github action:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / actions
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '
Чтобы запустить рабочий процесс, следует просто нажать на Master. Github Action обнаружит файл внутри .github / workflows /.
Автор переведенной статьи: Talha Khalid.



