The Двигун якоря це інструмент з відкритим кодом для сканування та аналізу зображень контейнерів на предмет вразливості безпеки та проблем з політикою. Він доступний як зображення контейнера Docker, який може працювати в рамках платформи для оркестрації, або як окрема установка.
Це корисний інструмент безпеки, який дозволяє розробникам та командам з контролю якості перевірити, виявити та усунути вразливості у зображеннях, які вони використовують для створення додатків.
У цій статті ми розглянемо, як встановити та використовувати сканер вразливості зображення Anchore. Як правило, існує кілька методів реалізації. Однак я зупинюся на наступних двох,
- Використання ЯкоряCLI варіант командного рядка
- На основі GUI Сканер зображень контейнера Jenkins Anchore підключати.
Ми покажемо вам, як встановити, налаштувати та запустити двигун, налаштувати та використовувати інструмент командного рядка AnchoreCLI, а також плагін Jenkins. Для кожного з двох методів ви дізнаєтеся, як додати зображення для сканування, виконувати сканування та переглядати звіти.
Наприкінці статті ви дізнаєтесь наступні три речі.
- Встановлення та налаштування Двигун якоря
- Встановлення, налаштування та використання ЯкоряCLI
- Налаштування та використання Плагін сканера зображень контейнера для кріплення в Дженкінс
Contents
Передумови
Нижче наведені вимоги до цього підручника;
- Локальна або віртуальна машина з Ubuntu 18.04 та наступними;
- Докер
- Докер-композит
- Дженкінс Встановлено та працює
- користувач sudo
Крок 1: – Налаштування робочих каталогів та завантаження файлів конфігурації.
Створіть робочий каталог для своїх файлів Anchore. У цьому каталозі ви створите два підкаталоги, один для конфігурації та один для бази даних.
Створіть домашній каталог для файлів Anchore
mkdir якір
Перейдіть до нового каталогу та створіть підкаталоги конфігурації та бази даних.
CD-якір
mkdir config
mkdir db
Завантажте конфігураційні файли
Як тільки каталоги будуть готові, ми завантажимо два файли конфігурації (docker-compose.yaml і config.yaml) з проекту Github.
Щоб завантажити докер-compose.yaml
Перейдіть до домашнього каталогу прив’язки і скористайтеся командою
завиток https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/docker-compose.yaml > docker-compose.yaml
Потім завантажте config.yaml в каталог ~ / anchore / config
завиток https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/config.yaml -o ~ / anchore / config / config.yaml
Файл config.yaml – це конфігураційний файл з основними налаштуваннями, необхідним для роботи сервера якоря. Він має декілька параметрів, серед яких включає стандартний рівень, рівень журналу, порт прослуховування, ім’я користувача, пароль та інші, які ви можете налаштувати під конкретні вимоги.
Це хороша практика безпеки змінити пароль, і ви можете це зробити, відредагувавши файл config.yaml. Однак у цьому підручнику ми будемо використовувати налаштування за замовчуванням.
Щоб продовжити з обліковими записами за замовчуванням, (ім’я користувача – адміністратор та пароль – foobar), перейдіть до крок 2.
Зміна облікових даних Engine Anchore Engine (необов’язково)
З каталогу якоря використовуйте команду
nano ~ / anchore / config / config.yaml
Знайдіть ім’я користувача (адміністратор) та пароль (foobar) та змініть бажані значення.
Натисніть CTRL + Х, тоді Y щоб зберегти та вийти.
При наявності робочих каталогів та конфігураційних файлів система готова до установки двигуна Anchore Engine.
Крок 2: – Встановіть і запустіть двигун кріплення
Ви будете використовувати Docker-композицію для встановлення та запуску Anchore Engine та бази даних.
З домашнього каталогу якоря запустіть.
docker-compose up -d
Це автоматично витягне зображення Anchore, а потім створить двигун і базу даних Anchore в домашніх умовах і ~ / anchore / database / каталоги відповідно. Після завершення команда запустить двигун Anchore.
Після успішної установки та запуску двигуна для кріплення тепер ви можете сканувати зображення, використовуючи командний рядок прив’язки ЯкоряCLI. Однак спочатку вам потрібно встановити утиліту командного рядка AnchoreCLI, як показано нижче.
Встановлення, налаштування AnchoreCLI
На цьому кроці ви дізнаєтесь, як встановити та налаштувати ЯкоряCLI інструмент командного рядка.
Крок 3: – Встановіть AnchoreCLI
У цьому підручнику ми спочатку встановимо утиліту python-pip, яку потім використаємо для встановлення ЯкоряCLI від джерела.
Щоб встановити Python pip. Для домашнього каталогу Anchore та запустіть
sudo apt-get update
sudo apt-get install python-pip
sudo pip install – оновлення setuptools
Встановіть ЯкоряCLI використовуючи python-pip
pip встановити анчореклі
Ця команда завантажить та встановить файли для AnchoreCLI. Після встановлення нам тепер потрібно виправити наш .profile файл за допомогою команди
джерело ~ / .profile
Щоб переконатися, що установка успішна та версія Anchorecli, використовуйте команду
anchore-cli –вертання
Для перевірки стану системи anchore-CLI використовуйте команду
anchore-cli –url http: // localhost: 8228 / v1 –u admin –p статус системи foobar
Зауважте, що ви повинні вказати URL-адресу двигуна Anchore, ім’я користувача та пароль.
Визначте параметри двигуна якоря
За замовчуванням AnchoreCLI спробує отримати доступ до двигуна якоря без автентифікації. Однак це не спрацює, і вам потрібно надати облікові дані Anchore Engine кожній команді.
Це включає передачу параметрів імені користувача, пароля та URL-адреси з кожною командою Anchor CLI. Замість того, щоб надавати їх щоразу, альтернативою є визначення їх як змінних довкілля у наступному форматі.
Щоб передати URL-адресу, запустіть
ANCHORE_CLI_URL = http: // localhost: 8228 / v1
Це визначає URL-адресу Anchore Engine разом з портом 8228, який він використовує.
Встановіть ім’я користувача та пароль, використовуючи значення за замовчуванням; в іншому випадку замініть їх на нові значення, які ви встановили Крок 1.
ANCHORE_CLI_USER = адміністратор
ANCHORE_CLI_PASS = foobar
Сказане встановлює параметри лише для поточної оболонки. Для встановлення поточної оболонки та інших процесів, які починаються з неї, ми використовуємо команду експорту
експортувати ANCHORE_CLI_URL
експортувати ANCHORE_CLI_USER
експортувати ANCHORE_CLI_PASS
З визначеними параметрами налаштування AchoreCLI завершено, і ви готові сканувати зображення.
Крок 4: – Додавання та аналіз зображень
Тепер, коли у нас працює Anchore Engine та CLI налаштовано, ви дізнаєтесь, як додавати та аналізувати зображення для проблем безпеки. У цьому підручнику ми проаналізуємо два зображення. -openjdk: 8-jre-alpine з уразливими умовами і debian: останні без .
Аналіз зображень
Для продовження нам потрібно спочатку додати зображення в двигун. Щоб додати зображення
зображення anchore-cli додати openjdk: 8-jre-alpine
Додайте стабільне зображення debian: останнє
зображення anchore-cli додати docker.io/library/debian:latest
Додайте більше зображень
зображення anchore-cli додати openjdk: 10-jdk
зображення anchore-cli додати openjdk: 11-jdk
Після додавання зображення до якоря двигуна аналіз починається негайно. Якщо декілька завантажених зображень, вони ставляться в чергу і аналізуються по одному. Ви можете перевірити хід і побачити список завантажених зображень разом зі станом їх аналізу.
Щоб побачити список, запустіть команду
список зображень 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-альпійське вразливе зображення
Біжи
anchore-cli image vuln openjdk: 8-jre-alpine all
Вихідні дані
[захищено електронною поштою]: ~ / anchore $ anchore-cli image vuln openjdk: 8-jre-alpine all
Виправлення вразливості IDPackage Severity CVE відбиває URL-адресу вразливості
CVE-2018-1000654 libtasn1-4.13-r0 Високий 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000654
CVE-2019-12900 libbz2-1.0.6-r6 Високий 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12900
CVE-2019-14697 musl-1.1.20-r4 Високий 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 Високий 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 Severity Fix 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
Статус: невдача
Останній Eval: 2019-09-20T12: 03: 32Z
Ідентифікатор політики: 2c53a13c-1765-11e8-82ef-23527761d060
Зображення openjdk: 8-jre-alpine порушує вказаний ідентифікатор політики (ідентифікатор політики: 2c53a13c-1765-11e8-82ef-23527761d060) і тому повертає статус Fail.
Тепер, коли ми побачили, як Anchore Engine реагує після виявлення порушення політики, настав час перевірити, як він поводиться з нашим стабільним іміджем debian: останнє.
Перевірка політики для debian: останнє стабільне зображення
anchore-cli оцінити перевірити 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
Ідентифікатор політики: 2c53a13c-1765-11e8-82ef-23527761d060
Заключна дія: попередити
Причина остаточної дії: оцінка_політики
Статус триггера воріт
dockerfileinstructionDockerfile директива “HEALTHCHECK” не знайдена, відповідає умові перевірки “not_exists”
Результати показують статус пропуску та остаточну дію попередження через невідповідність інформації директиві Dockerfile. Це не відбувається, але може знадобитися перевірка та вирішення проблеми.
Налаштування та використання плагіна для сканування зображень контейнера Anchore в Дженкінсі
Крок 6: – Додайте та налаштуйте модуль сканера зображень контейнера Anchore у Дженкінсі
На цьому кроці ми будемо інтегрувати Двигун якорів із сервером Дженкінса. Дженкінс – сервер з відкритим кодом на основі Java для автоматизації широкого кола завдань, що повторюються, в циклі розробки програмного забезпечення.
The Анкерний плагін доступний у Jenkins, але не встановлений за замовчуванням.
Увійдіть до Дженкінса за допомогою веб-браузера
http: // your_server_ip_or_domain: 8080
Введіть ім’я користувача та пароль.
Йти до Меню Дженкінса
Знайдіть і виберіть Управління Дженкінсом
Йти до Управління плагінами
На Доступна вкладка, прокрутіть вниз до Інструменти побудови і виберіть Сканер зображень контейнера на якорі
Клацніть на Встановити без перезавантаження варіант.
Після успішної установки Плагін для сканування зображень контейнера для скріплення, наступний крок – налаштування облікових даних.
Перейти до Дженкінс меню і виберіть Управління Дженкінсом вкладка.
відчинено Налаштування системи.
Знайдіть Конфігурація кріплення.
Виберіть Режим двигуна
Введіть Двигун якоря деталі (URL-адреса двигуна, ім’я користувача та пароль та порт 8228 – порт за замовчуванням для двигуна).
URL – http: // your_server_IP: 8228 / v1
Введіть ім’я користувача = адміністратор
Введіть пароль = foobar або новий пароль, якщо ви його змінили Крок 3 (вище)
Клацніть Зберегти
Налаштуйте плагін Anchore
Крок 8: – Додавання та сканування зображень
Клацніть Новий елемент на панелі приладів Дженкінса у верхньому лівому меню
Це відкриє екран з декількома параметрами.
Введіть потрібне ім’я для свого тестового проекту в полі Введіть ім’я елемента.
У цьому проекті ми будемо використовувати збірку трубопроводів.
Виберіть Трубопровід і натисніть Добре.
Тепер ви готові сканувати зображення. У нашому випадку ми будемо використовувати зображення, які вже є в реєстрі докерів, до яких доступний Двигун якоря.
Для цього ви додасте сценарій конвеєра, який визначатиме зображення для сканування.
Крок 9: – Додати сценарій конвеєра
Прокрутіть униз до розділу «Трубопровід» та додайте сценарій, щоб вказати зображення для сканування. Почнемо з openjdk: 8-jre-alpine, який містить деякі вразливості.
вузол {
def imageLine = ‘openjdk: 8-jre-alpine’`
writeFile файл: ‘anchore_images’, текст: imageLine`
назва якоря: ‘anchore_images’`
}
Клацніть Зберегти
Крок 10: – Запустіть збірку та перегляньте звіти про сканування
З меню Дженкінса
Клацніть Побудувати зараз
Це запустить процес збирання, який займе кілька хвилин, залежно від розміру зображення. Після завершення в Історії побудови з’явиться число та кольорова кнопка. Це матиме червоний колір для Fail або Blue для Pass. Натискання на кнопку відобразить більше результатів.
Крок 11: – Результати огляду
Натисніть на Збірка № для перегляду деталей
Це відкриває a Вихід консолі вікно, яке вказує на збій – Звіт про прив’язку (FAIL)
Детальні звіти вказують, чи був аналіз провалом або пропуском, і містять кілька звітів, що показують вразливості, попередження та інші на основі конфігурації. За замовчуванням плагін налаштований на збій збірки (Стій) кожного разу, коли є вразливості. Нижче наведено скріншоти для звітів про політику та безпеку.
Короткий підсумок оцінки політики
Нижче – скріншот результатів безпеки для вразливого зображення.
Перелік загальних уразливостей та експозицій (CVE)
Якщо ми зараз скануємо стабільний образ, debian: найновіший, без вразливостей, ми отримаємо результати нижче.
Підсумок оцінювання політики укріплення (пропуск)
Перелік загальних уразливостей та експозицій (CVE)
Висновок
Сканер зображень контейнера Anchore Container – це потужний інструмент аналізу зображень, який визначає широкий спектр уразливих ситуацій та проблем з політикою в зображеннях Докера. Він має безліч варіантів налаштування і може бути налаштований на те, як реагувати на виявлення проблем під час аналізу. Одне з них – це розбити конструкцію, коли двигун стикається з великою вразливістю.
Якщо ви хочете побудувати свою кар’єру в DevSecOps, то перевірте це Курс Удемі.
МЕТИ:
Відкрите джерело