Поиск по сайту:

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


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

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

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

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

Эта модель требует использования последовательности команд CLI для регистрации изображения в 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:latest

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

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

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

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

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

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

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

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

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

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

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

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

docker save my-image:latest -o docker-images/my-image
./anchore -v docker-images

Предоставление Dockerfile образа

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

./anchore.sh my-image:latest -d /dockerfiles/my-image

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

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

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

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

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

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

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

{
    "action": "WARN",
    "comment": "No Dockerfile given!",
    "gate": "dockerfile",
    "params": [],
    "trigger": "no_dockerfile_provided"
}

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

Заключение

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

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




Все права защищены. © Linux-Console.net • 2019-2024