Docker-образы

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

Snyk сначала предлагает облачную платформу, но она предлагает и различные продукты.

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

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

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

Контейнер Сник

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

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

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

ИЗ Python: 3.4-alpine ADD. /code WORKDIR /code RUN pip install -r require.txt EXPOSE 8000 CMD [«python», «app.py»]

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

docker build -t 0xyz0/python-app.

Теперь у нас есть изображение для анализа.

Сканируйте образ из клиента Docker.

Интеграция сервиса Snyk с Docker делает этот процесс невероятно простым. Чтобы начать сканирование, вам просто нужно выполнить следующее:

сканирование докера 0***0/python-app

Это начнется с анализа, в ходе которого он вернет более или менее обширный результат, в зависимости от обнаруженных уязвимостей, и с окончательного резюме:

1
Сканирование Docker показывает все уязвимости образа  

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

Вы также можете проверить подробную информацию об уязвимости в базе данных уязвимостей Snyk.

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

ИЗ python:3.7.11-slim ADD. /code WORKDIR /code RUN pip install -r require.txt EXPOSE 8000 CMD [«python», «app.py»]

Если я восстановлю изображение и отсканирую его:

docker build -t 0***0/python-app . && сканирование докера 0***0/python-app

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

1
Сканирование Docker гарантирует, что вы используете наиболее безопасный базовый образ.

Вы также можете получить более подробный отчет, если добавите в команду docker-файл, генерирующий образ:

сканирование докера -f Dockerfile 0***0/python-app

И даже исключить из анализа базовое изображение, на тот случай, если вы захотите сосредоточиться на том, что вы сделали не так:

docker scan -f Dockerfile —exclude-base 0***0/python-app

Этот сервис также можно интегрировать с репозиториями Docker Hub:

1

Но для этого у вас должна быть одна из платных подписок. Однако вы можете запустить его локально, используя бесплатный план, который у вас есть только для входа в Docker Hub (он имеет четкие ограничения на сканирование), пока вы разрабатываете или хотите проверить, насколько безопасен сторонний образ, который вы хотите использовать.

Использование Snyk с действиями Github

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

.github/ворпотоки/

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

С помощью токена вы можете создать секрет на Github и использовать его в действии. Теперь вам нужно передать ему имя репозитория, созданного в Docker Hub. Далее вам нужно передать сообщение, которое он должен отправить. Вы можете получить доступ к результатам шагов и использовать их в качестве переменной в сообщении.

with: args: 'Новый коммит был отправлен. Пожалуйста, проверьте действие github: | worflow $ {{fromJson (steps.repo.outputs.result).html_url}} / действия | Исполнитель: $ {{steps.prep.outputs.created}} | Версия: $ {{steps.prep.outputs.version}} '

Как запустить весь рабочий процесс? Просто нажмите Master. Github Action обнаружит файл внутри .github/workflows/.

Заключительные слова 👈

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

Источник