Как установить и использовать Anchore Container Image Security Scanner?

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


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

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

  • С использованием AnchoreCLI опция командной строки
  • На основе графического интерфейса Контейнерный сканер Jenkins Anchore плагин.

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

В конце статьи вы узнаете следующие три вещи.

  • Установка и настройка Якорный двигатель
  • Установка, настройка и использование AnchoreCLI
  • Настройка и использование Плагин Anchore Container Image Scanner в Дженкинс

Предпосылки

Ниже приведены требования для этого урока;

  • Локальная или виртуальная машина с Ubuntu 18.04 и следующими;
  • докер
  • Docker-Compose
  • Jenkins Установлен и работает
  • пользователь sudo

Шаг 1: – Настройте рабочие каталоги и загрузите файлы конфигурации.

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

Создайте домашний каталог для файлов Anchore

Mkdir Anchore

Перейдите в новый каталог и создайте подкаталоги конфигурации и базы данных..

CD Anchore

Конфигурация mkdir

MKDIR DB

Загрузите файлы конфигурации

Когда каталоги будут готовы, мы загрузим два файла конфигурации (docker-compose.yaml и config.yaml) из проекта Github..

Скачать docker-compose.yaml

Перейдите в домашний каталог anchore и используйте команду

curl https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/docker-compose.yaml > докер-compose.yaml

Затем загрузите config.yaml в каталог ~ / anchore / config

curl https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/config.yaml -o ~ / anchore / config / config.yaml

Файл config.yaml – это файл конфигурации с основными настройками, которые необходимы для работы службы механизма привязки. Он имеет несколько параметров, включая параметры по умолчанию, уровень журнала, порт прослушивания, имя пользователя, пароль и другие параметры, которые можно настроить в соответствии с конкретными требованиями..

Это хорошая практика безопасности, чтобы изменить пароль, и вы можете сделать это, отредактировав файл config.yaml. Однако в этом уроке мы будем использовать настройки по умолчанию.

Чтобы продолжить с учетными данными по умолчанию (имя пользователя – admin и пароль – foobar), перейдите к шаг 2.

Изменение учетных данных Anchore Engine (необязательно)

Из каталога привязки используйте команду

nano ~ / anchore / config / config.yaml

Найдите имя пользователя (admin) и пароль (foobar) и измените ваши предпочтительные значения.

Нажмите CTRL + Икс, тогда Y сохранить и выйти.

После установки рабочих каталогов и файлов конфигурации система готова к установке Anchore Engine..

Шаг 2: – Установите и запустите Anchore Engine

Вы будете использовать Docker compose для установки и запуска Anchore Engine и базы данных..

Из домашнего каталога якоря запустите.

docker-compose up -d

Это автоматически вытянет образ Anchore, а затем создаст движок Anchore и базу данных в домашнем каталоге и каталогах ~ / anchore / database / соответственно. По завершении команда запустит двигатель Anchore.

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

Установка, настройка AnchoreCLI

На этом этапе вы узнаете, как установить и настроить AnchoreCLI инструмент командной строки.

Шаг 3: – Установите AnchoreCLI

В этом уроке мы сначала установим утилиту python-pip, которая затем будет использоваться для установки AnchoreCLI из источника.

Чтобы установить Python pip. Перейдите в домашний каталог Anchore и запустите

sudo apt-get update
sudo apt-get установить python-pip
sudo pip install – обновить настройки

Установите AnchoreCLI используя python-pip

pip install anchorecli

Эта команда загрузит и установит файлы для AnchoreCLI. После установки нам теперь нужно снабдить наш файл .profile командой

источник ~ / .profile

Чтобы проверить успешность установки и версию Anchorecli, используйте команду

якорь-кли – версия

Чтобы проверить состояние системы anchore-CLI, используйте команду

anchore-cli –url http: // localhost: 8228 / v1 –u admin –p состояние системы foobar

Обратите внимание, что вы должны передать URL-адрес движка Anchore, имя пользователя и пароль.

Определить параметры двигателя якоря

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

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

Чтобы передать URL, запустите

ANCHORE_CLI_URL = HTTP: // локальный: 8228 / v1

Это определяет URL-адрес Anchore Engine вместе с портом 8228, который он использует.

Установите имя пользователя и пароль, используя значения по умолчанию; в противном случае замените их новыми значениями, установленными в Шаг 1.

ANCHORE_CLI_USER = админ

ANCHORE_CLI_PASS = Foobar

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

экспортировать ANCHORE_CLI_URL

экспортировать ANCHORE_CLI_USER

экспортировать ANCHORE_CLI_PASS

С заданными параметрами установка AchoreCLI завершена, и вы готовы сканировать изображения.

Шаг 4: – Добавление и анализ изображений

Теперь, когда у нас работает Anchore Engine и настроен интерфейс командной строки, вы узнаете, как добавлять и анализировать изображения на предмет проблем безопасности. В этом уроке мы проанализируем два изображения. -openjdk: 8-jre-alpine с уязвимостями и debian: последний без .

Анализ изображений

Для продолжения нам нужно сначала добавить изображения в движок. Добавить изображения

anchore-cli image add openjdk: 8-jre-alpine

Добавить стабильный образ Debian: последние

anchore-cli image add docker.io/library/debian:latest

Добавить больше изображений

anchore-cli image add openjdk: 10-jdk

anchore-cli image add openjdk: 11-jdk

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

Чтобы увидеть список, запустите команду

список изображений anchore-cli

Вывод

[Электронная почта защищена]: ~ / anchore $ anchore-cli список изображений
Полный анализ статуса дайджеста изображений
docker.io/openjdk:10-jdk sha256: 923d074ef1f4f0dceef68d9bad8be19c918d9ca8180a26b037e00576f24c2cb4analyzed
docker.io/openjdk:11-jdk sha256: 9923c0853475007397ed5c91438c12262476d99372d4cd4d7d44d05e9af5c077analyzed
docker.io/openjdk:8-jre-alpine sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52analyzed

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

Шаг 5: – Получить и просмотреть результаты анализа

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

Чтобы проверить результаты сканирования уязвимостей на openjdk: 8-jre-alpine уязвимое изображение

Запустить

anchore-cli image vuln openjdk: 8-jre-alpine all

Вывод

[Электронная почта защищена]: ~ / anchore $ anchore-cli image vuln openjdk: 8-jre-alpine all
Уязвимость IDPackage Исправление серьезности CVE Ссылки URL-адрес уязвимости
CVE-2018-1000654 libtasn1-4.13-r0 High 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000654
CVE-2019-12900 libbz2-1.0.6-r6 High 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12900
CVE-2019-14697 musl-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697
CVE-2019-14697 musl-utils-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697
CVE-2019-8457 sqlite-libs-3.26.0-r3 Высокий 3.28.0-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-8457
CVE-2018-14498 libjpeg-turbo-1.5.3-r4 Средний 1.5.3-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14498

В отчете указывается идентификатор CVE, уязвимый пакет, серьезность и исправление или нет. Для нашего изображения openjdk: 8-jre-alpine анализ показывает, что он имеет пять сильных уязвимостей и довольно много средних и незначительных уязвимостей. (некоторые не показаны выше).

Чтобы просмотреть результаты уязвимостей для стабильного образа Debian: последние

Запустите команду

anchore-cli image vuln docker.io/library/debian:latest all

Вывод

[Электронная почта защищена]: ~ / anchore $ anchore-cli image vuln debian: последние все
Уязвимость IDPackage Исправление серьезности CVE RefsVulnerability URL
CVE-2005-2541 tar-1.30 + dfsg-6 Незначительно Нет Нет https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2019-1010022libc-bin-2.28-10 Незначительный Нет Нет https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022libc6-2.28-10 Незначительный Нет Нет https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023libc-bin-2.28-10 Незначительный Нет Нет https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023libc6-2.28-10 Незначительный Нет Нет https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024libc-bin-2.28-10 Незначительный Нет Нет https://security-tracker.debian.org/tracker/CVE-2019-1010024

Как видно из отчета, изображение debian: latest имеет незначительные уязвимости и не имеет исправлений.

Чтобы увидеть результаты оценки политики для нестабильного образа openjdk: 8-jre-alpine

запустить

anchore-cli оцените проверку openjdk: 8-jre-alpine

Вывод – результаты показывают ошибку

[Электронная почта защищена]: ~ / anchore $ anchore-cli проверить проверку openjdk: 8-jre-alpine
Дайджест изображения: sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
Полный тег: docker.io/openjdk:8-jre-alpine
Статус: сбой
Последний тест: 2019-09-20T12: 03: 32Z
ID политики: 2c53a13c-1765-11e8-82ef-23527761d060

Образ openjdk: 8-jre-alpine нарушает указанный идентификатор политики (ID политики: 2c53a13c-1765-11e8-82ef-23527761d060) и поэтому возвращает статус Fail..

Теперь, когда мы увидели, как Anchore Engine реагирует на обнаружение нарушения политики, пришло время проверить, как он работает с нашим стабильным образом Debian: последние.

Проверка политики для Debian: последний стабильный образ

проверка якоря-кли оценка docker.io/library/debian:latest –detail

[Электронная почта защищена]: ~ / anchore $ anchore-cli проверить проверку docker.io/library/debian:latest –detail
Дайджест изображения: sha256: d3351d5bb795302c8207de4db9e0b6eb23bcbfd9cae5a90b89ca01f49d0f792d
Полный тег: docker.io/library/debian:latest
ID изображения: c2c03a296d2329a4f3ab72a7bf38b78a8a80108204d326b0139d6af700e152d1
Статус: пройти
Последний Eval: 2019-09-20T12: 00: 06Z
ID политики: 2c53a13c-1765-11e8-82ef-23527761d060
Заключительное действие: предупредить
Причина окончательного действия: policy_evaluation
Gate TriggerDetail Status
Директива dockerfileinstructionDockerfile ‘HEALTHCHECK’ не найдена, соответствующее условие ‘not_exists’ checkwarn

Результаты показывают статус Pass и Final Action of Warn из-за несоответствия информации директиве Dockerfile. Это не сбой, но может потребовать проверки и решения проблемы.

Настройка и использование плагина Anchore Container Image Scanner в Jenkins

Шаг 6: – Добавьте и настройте плагин Anchore Container Image Scanner в Jenkins

На этом этапе мы интегрируем Anchor Engine с сервером Jenkins. Jenkins – это сервер Java с открытым исходным кодом для автоматизации широкого спектра повторяющихся задач в цикле разработки программного обеспечения.

Плагин Anchore доступно в Jenkins, но не установлено по умолчанию.

Войдите в Jenkins, используя веб-браузер

Http: // your_server_ip_or_domain: 8080

Введите имя пользователя и пароль.

Перейти к Дженкинс меню

Найдите и выберите Управление Дженкинс

Перейти к Управление плагинами

На Доступная вкладка, прокрутите вниз до Инструменты сборки и выберите Anchore Контейнерный сканер изображений

Нажмите на Установить без перезагрузки вариант.

После успешной установки Плагин Anchore Container Image Scanner, Следующим шагом является настройка учетных данных.

Перейти к Дженкинс меню и выберите Управление Дженкинс табуляция.

открыто Настроить систему.

Найдите Конфигурация якоря.

Выбрать Режим двигателя

Введите Якорный двигатель подробности (URL-адрес механизма, имя пользователя и пароль, а также порт 8228 – порт по умолчанию для механизма).

URL – http: // your_server_IP: 8228 / v1

Введите имя пользователя = admin
Введите пароль = foobar или новый пароль, если вы изменили его в Шаг 3 (над)

щелчок Сохранить

Настроить плагин Anchore

Шаг 8: – Добавление и сканирование изображений

щелчок Новый предмет на приборной панели Дженкинс в верхнем левом меню

Это откроет экран с несколькими вариантами.
Введите желаемое имя для вашего тестового проекта в поле Введите имя элемента.

В этом проекте мы будем использовать сборку Pipeline.
Выберите Трубопровод и нажмите Хорошо.

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

Для этого вы добавите конвейерный скрипт, который укажет изображение для сканирования.

Шаг 9: – Добавить скрипт конвейера

Прокрутите вниз до раздела Конвейер и добавьте скрипт, чтобы указать изображение для сканирования. Мы начнем с openjdk: 8-jre-alpine, который содержит некоторые уязвимости.

узел {
def imageLine = ‘openjdk: 8-jre-alpine’`
Файл writeFile: ‘anchore_images’, текст: imageLine`
имя якоря: ‘anchore_images’`
}

щелчок Сохранить

Шаг 10: – Запустите сборку и просмотрите отчеты о проверке.

Из меню Дженкинс

щелчок Построить сейчас

Это запустит процесс сборки, который займет несколько минут в зависимости от размера изображения. После завершения номер и цветная кнопка появятся под историей сборки. Это будет красный цвет для Fail или синий для Pass. Нажатие на кнопку покажет больше результатов.

Шаг 11: – Просмотр результатов

Нажмите на Build # для просмотра более подробной информации
Это открывает Консольный выход окно, указывающее на сбой – Отчет о якоре (FAIL)

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

Резюме оценки политики на якоре

Ниже приведен скриншот результатов безопасности для уязвимого изображения..

Список распространенных уязвимостей и уязвимостей (CVE)

Если мы сейчас сканируем стабильный образ, debian: latest, без уязвимостей, мы получим результаты ниже.

Сводная оценка оценки политики на якоре (Pass)

Распространенный список уязвимостей и уязвимостей (CVE) 

Вывод

Anchore Container Image Scanner – это мощный инструмент анализа изображений, который выявляет широкий спектр уязвимостей и проблем политики в изображениях Docker. Он имеет множество параметров настройки и может быть настроен на то, как реагировать на обнаружение проблем во время анализа. Одним из них является нарушение сборки, когда двигатель сталкивается с серьезной уязвимостью.

Если вы хотите построить свою карьеру в DevSecOps, проверьте это Курс удэми.

TAGS:

  • Открытый исходный код

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map