Поиск уязвимостей в образах Docker с помощью Snyk
Life-Hack [Жизнь-Взлом]/ХакингВ этой статье пойдет речь о поиске уязвимостей в 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
Начнется анализ, в ходе которого будут получены более или менее подробные результаты, в зависимости от обнаруженных уязвимостей, и с окончательными выводами:
Сканирование Docker показывает все найденные уязвимости в изображении
Как можно увидеть, программа не только сообщает пользователю, сколько уязвимостей она обнаружила. Если прокрутить страницу вверх, то пользователь сможет увидеть, каковы они и какова их критичность. Более того, можно найти рекомендации относительно базового изображения, которое следует использовать.
Подробную информацию об уязвимости можно прочитать в базе данных уязвимостей 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, который создает изображение, в команду:
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 /.