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
Это начнется с анализа, в ходе которого он вернет более или менее обширный результат, в зависимости от обнаруженных уязвимостей, и с окончательного резюме:
Как видите, он не только сообщает вам, сколько уязвимостей он обнаружил. Даже если вы прокрутите вверх, вы увидите, что они из себя представляют и их критичность, а также дадут рекомендации относительно базового образа, который вам следует использовать.
Вы также можете проверить подробную информацию об уязвимости в базе данных уязвимостей 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
Вы увидите, что выходные данные теперь показывают меньше уязвимостей, и в данном случае это говорит о том, что вы в настоящее время используете более безопасный базовый образ:
Вы также можете получить более подробный отчет, если добавите в команду docker-файл, генерирующий образ:
сканирование докера -f Dockerfile 0***0/python-app
И даже исключить из анализа базовое изображение, на тот случай, если вы захотите сосредоточиться на том, что вы сделали не так:
docker scan -f Dockerfile —exclude-base 0***0/python-app
Этот сервис также можно интегрировать с репозиториями Docker Hub:
Но для этого у вас должна быть одна из платных подписок. Однако вы можете запустить его локально, используя бесплатный план, который у вас есть только для входа в 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.