Как безопасно сканировать образы Docker с помощью Anchore — CloudSavvy IT

Графическая фотография, показывающая пальцем, указывающим на символ замкаСтудия Райта / Shutterstock.com

Anchore Engine — это инструмент сканирования с открытым исходным кодом, который оценивает безопасность ваших образов Docker. Отчет Anchore дает вам представление об устаревших версиях пакетов и скрытых уязвимостях в зависимостях.

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

Архитектура Анкора

Для настройки Anchore исторически требовалась специальная установка Anchore Engine, которая работала независимо от среды сборки образа. Отдельный интерфейс командной строки позволяет вам взаимодействовать с движком.

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

Anchore теперь также предлагает встроенное сканирование. Они дают вам одну команду для сканирования изображения и получения результатов в вашем терминале. Мы сосредоточимся на этой возможности в этой статье.

Запуск встроенного скрипта

Встроенное сканирование обеспечивается сценарием Bash, размещенным на сервере Anchore. Загрузите скрипт на свой компьютер и сделайте его исполняемым:

curl -s https://ci-tools.anchore.io/inline_scan-latest -o anchore.sh chmod + x anchore.sh

Теперь вы можете использовать встроенный скрипт для запуска сканирования образа контейнера:

./anchore.sh -r alpine: последний

Первое сканирование может занять некоторое время. Сценарий извлечет образ Docker Anchore Engine, запустит новый экземпляр Anchore и настроит PostgreSQL и экземпляр реестра Docker. Затем он будет ждать запуска Anchore Engine.

После запуска движка будет извлечен и проанализирован целевой образ Docker. Затем вы увидите отчет о безопасности, отображаемый в вашем терминале. Сценарий завершится очисткой среды и остановкой Docker-контейнера Anchore Engine.

Результаты сканирования

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

Общий результат сканирования отображается в строке состояния над таблицей уязвимостей. Если вы видите результат «успешно», Анчор удовлетворен, что ваш образ безопасен и готов к производственному использованию. Неудача означает, что вы должны просмотреть неисправности и устранить их, где это возможно.

Каждая обнаруженная уязвимость имеет рейтинг серьезности от НИЗКОЙ до КРИТИЧНОЙ. Проблемы с идентификатором CVE включают ссылку для просмотра подробностей на веб-сайте MITRE.

Создание файлов отчетов

Хотя таблица вывода по умолчанию хорошо подходит для использования людьми, Anchore также может создавать файлы отчетов JSON, которые вы можете архивировать или использовать в других инструментах. Добавьте флаг -r при запуске скрипта сканирования, чтобы включить эту функцию.

Anchore будет записывать отчеты в отчеты привязки в вашем рабочем каталоге. Каждое сканирование создает набор файлов JSON, относящихся к различным разделам отчета, таким как уязвимости, пакеты ОС и требования политик.

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

Сканирование архивов сохраненных изображений

Anchore может сканировать каталоги сохраненных архивов образов Docker, а также фактические образы, находящиеся в реестрах. Экспортируйте набор образов Docker с помощью docker save, поместите их в каталог, а затем используйте аргумент -v, чтобы сценарий Anchore сканировал эти архивы:

docker save my-image: последний -o docker-images / my-image ./anchore -v docker-images

Поставка Dockerfile образа

Встроенный скрипт принимает аргумент -d, который позволяет указать путь к локальному Dockerfile. Anchore проверит созданный образ и Dockerfile, что позволит выявить проблемы времени сборки, которые могут повлиять на состояние безопасности образа.

./anchore.sh мое-изображение: последний -d / dockerfiles / мое-изображение

Использование настраиваемых политик

Anchore расширяется за счет использования настраиваемых наборов политик. Политики создаются из комбинации «шлюзов», «триггеров» и «действий». Это позволит вам правила сборки которые проверяют образы контейнеров на соответствие вашим точным требованиям безопасности.

Шлюз каждой политики производит одно из трех действий: «идти», проход, позволяющий продолжить сканирование, «предупреждать», позволяющий продолжить выполнение, но с предупреждением, и «стоп», указывая на то, что изображение не должно обрабатываться в дальнейшем.

Политики упакованы в виде «пакетов», которые сопоставляют наборы правил реестрам и изображениям, к которым они применяются. Вы можете добавить пакет политик к вашему сканированию, передав флаг -b при запуске скрипта:

./anchore.sh -b policy-bundle.json

Это будет включать ваши настраиваемые политики, что даст вам уверенность в том, что изображение соответствует вашим собственным стандартам безопасности.

Вот упрощенный пакет политик, который выдает предупреждение, если вы не предоставляете файл Docker для Anchore с помощью флага -d, описанного выше. Предоставление файла Dockerfile, используемого для создания образа, дает Anchore максимально широкий охват, поэтому имеет смысл предупреждать, если ничего не указано.

{«action»: «WARN», «comment»: «Dockerfile не указан!», «gate»: «dockerfile», «params»: [], «trigger»: «no_dockerfile_provided»}

Эта политика применяется к шлюзу dockerfile, где Anchore проверяет, соответствует ли ваш Dockerfile стандарту передовой практики. Anchore запускает триггер no_dockerfile_provided, когда сканирование запускается при отсутствии файла Dockerfile образа.

Заключение

Anchore позволяет создавать отчеты о безопасности для образов Docker, сканируя устаревшие программные пакеты, известные уязвимости, проблемы конфигурации Dockerfile и другие возможные источники проблем. Вы можете написать свои собственные наборы политик, чтобы настроить то, что проверяется, и привести Anchore в соответствие с вашими стандартами безопасности.

Хотя Anchore использует архитектуру клиент-сервер, «встроенный» сценарий проекта абстрагирует сложность установки, поэтому вы можете быстро сканировать локальные образы и получать отчет прямо в своем терминале. Если вы будете регулярно использовать Anchore или сканировать изображения в конвейерах CI / CD, все же лучше развернуть специальный Anchore Engine, затем используйте интерфейс командной строки для создания отчетов. Это требует многоэтапного процесса для каждого сканирования, но также дает вам больше гибкости при доступе к разделам отчета и синхронизации каналов данных об уязвимостях.

Похожие записи

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

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