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

Поиск уязвимостей в образах 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 /.

Источник


Report Page