Перейти к содержимому
Главная страница » Самый простой способ найти уязвимости в образах Docker с помощью Snyk

Самый простой способ найти уязвимости в образах Docker с помощью Snyk

Snyk — редактор, специализирующийся на анализе уязвимостей в коде файлов конфигурации инфраструктуры, в том числе присутствующих в контейнерах и пакетах приложений. Snyk сначала предлагает облачную платформу, но она предлагает и различные продукты.

Snyk OpenSource интегрируется через CLI редактора в поток Git. После запуска программное обеспечение обнаруживает уязвимости, классифицирует их по степени чувствительности и автоматически исправляет известные ошибки безопасности. Эту функциональность можно включить в цикл запроса на включение, чтобы применить к коду, отправляемому в репозитории.

Snyk Infrastructure as Code, с другой стороны, анализирует уязвимости и исправляет их в файлах конфигурации JSON и YAML Kubernetes. Здесь механизм правил позволяет вам настроить чувствительность обнаружений в репозиториях Git в соответствии с параметрами, определенными администраторами.

Snyk Container позволяет тестировать образы докеров и связанные с ними реестры во время их создания и после. Программу можно интегрировать в CLI, SCM, инструменты CI, реестры контейнеров и Kubernetes.

Сегодня мы увидим, как можно использовать Snyk Container, встроенный в Docker, для обнаружения уязвимостей.

Пример файла докеров

Первое, что вам нужно для использования Snyk для обнаружения уязвимостей, — это образ докера. В этом примере мы будем использовать следующий образ докера:

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.

В моем случае он предлагает мне несколько альтернатив, поэтому я собираюсь изменить свой Dockerfile, используя первый вариант:

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

Первое, что нужно сделать, это создать репозиторий и внутри создать папку.

.github / worflows /

Далее, чтобы использовать Snyk Container в Github, нужно создать новый образ или использовать тот образ, который мы создали в Docker Hub. Чтобы использовать Snyk, вам необходимо создать новый секрет под названием SNYK_TOKEN, а для получения токена вам необходимо создать учетную запись в Snyk. В общих настройках, где написано API Token, вы можете быстро его сгенерировать.

С помощью токена вы можете создать секрет на Github и использовать его в действии. Теперь вам нужно передать ему имя репозитория, созданного в 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/.

С ростом популярности контейнеров случаи нарушения безопасности становятся все более распространенными, большинство из которых связано с ошибками неправильной конфигурации при развертывании контейнеров. Snyk предоставляет эффективный и простой инструмент, который может помочь нам избежать ошибок неправильной конфигурации и обнаружить наиболее распространенные уязвимости в образах Docker.

Источник (Веб-архив)

Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *