Найпростіший спосіб знайти вразливості в образах Docker за допомогою Snyk

Snyk — редактор, який спеціалізується на аналізі вразливостей у коді конфігураційних файлів інфраструктури, у тому числі в контейнерах і пакетах програм.

Сник спочатку пропонує хмарну платформу, але пропонує різні продукти.

Snyk OpenSource інтегрується через CLI редактора в потік Git. Після запуску програмне забезпечення виявляє вразливості, класифікує їх за ступенем чутливості та автоматично виправляє відомі помилки безпеки. Цю функціональність можна включити в цикл запиту на отримання, щоб застосувати до коду, надісланого до сховищ.

З іншого боку, Snyk Infrastructure as Code аналізує вразливості та виправляє їх у файлах конфігурації JSON і YAML Kubernetes. Тут механізм правил дозволяє вам налаштувати чутливість виявлень у сховищах Git відповідно до параметрів, визначених адміністраторами.

Контейнер Snyk дозволяє тестувати образи докерів і пов’язані реєстри під час їх створення та після. Програму можна інтегрувати в CLI, SCM, інструменти CI, реєстри контейнерів і Kubernetes.

Сьогодні ми побачимо, як можна використовувати Snyk Container, вбудований у Docker, для виявлення вразливостей.

Зразок файлу докерів

Перше, що вам знадобиться для використання Snyk для виявлення вразливостей, це образ докера. У цьому прикладі ми будемо використовувати таке зображення докера:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
[“python”, “app.py”]

Перше, що ми повинні зробити, це створити зображення локально за допомогою такої команди:

docker build -t 0xyz0/python-app.

Тепер у нас є зображення для аналізу.

  Закріпіть текст, зображення та сторінки на сторінці нової вкладки [Chrome]

Відскануйте зображення з клієнта Docker

Інтеграція сервісу Snyk з Docker робить цей процес неймовірно простим. Щоб розпочати сканування, вам просто потрібно виконати наступне:

docker scan 0***0/python-app

Це почнеться з аналізу, де він поверне більш-менш розширений результат, залежно від знайдених уразливостей, і з остаточного підсумку:

Докер-сканування показує всі вразливості образу

Як бачите, він не тільки повідомляє вам, скільки вразливостей він знайшов. Навіть якщо ви прокрутите вгору, ви побачите, що вони собою представляють, і їх критичність, але також надано рекомендації щодо базового зображення, яке слід використовувати.

Ви також можете перевірити деталі вразливості в База даних уразливостей Snyk.

У моєму випадку він пропонує мені кілька альтернатив, тому я збираюся змінити свій Dockerfile за допомогою першого варіанту:

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

CMD ["python", "app.py"]

Якщо я перебудую зображення та відсканую його:

docker build -t 0***0/python-app . && docker scan 0***0/python-app

Ви побачите, що вихідні дані тепер показують менше вразливостей, і в цьому випадку це повідомляє вам, що ви зараз використовуєте більш безпечний базовий образ:

  Який хмарний сервер Amazon краще для вас?

Сканування Docker гарантує, що ви використовуєте найбезпечніший базовий образ

Ви також можете отримати детальніший звіт, якщо до команди додасте файл докерів, який генерує зображення:

docker scan -f Dockerfile 0***0/python-app

І навіть виключіть базове зображення з аналізу, якщо ви хочете зосередитися на тому, що ви зробили не так:

docker scan -f Dockerfile --exclude-base 0***0/python-app

Цей сервіс також можна інтегрувати з репозиторіями Docker Hub:

Але для цього у вас повинна бути одна з платних підписок. Однак ви можете запустити його локально за допомогою безкоштовного плану, який ви маєте лише за вхід у Docker Hub (він має чіткі обмеження на сканування), поки ви розробляєте або бажаєте перевірити, наскільки безпечним є образ третьої сторони, який ви хочете використовувати.

Використання Snyk із Github Actions

Перше, що потрібно зробити, це створити репозиторій і всередині створити папку.

.github / worflows /

Далі, щоб використовувати Snyk Container у Github, потрібно створити новий образ або взяти той образ, який ми створили в Docker Hub. Щоб використовувати Snyk, вам потрібно створити новий секрет під назвою SNYK_TOKEN, а щоб отримати маркер, вам потрібно створити обліковий запис у Snyk. У загальних налаштуваннях, де написано API Token, ви можете швидко створити його.

  Як відновити видалену фотографію на вашому iPhone або iPad

За допомогою маркера ви можете створити секрет на Github і використовувати його в Action. Тепер вам потрібно передати ім’я сховища, створеного в Docker Hub. Далі вам потрібно передати повідомлення, яке воно має надіслати. Ви можете отримати доступ до результатів кроків, щоб використовувати їх як змінну в повідомленні.

with:
args: 'A new commit has been pushed. Please verify github action:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / actions
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '

Як запустити весь робочий процес? Просто, просто натиснувши Master. Github Action виявить файл у .github / workflows /.

Заключні слова 👈

Із зростанням популярності контейнерів випадки порушення безпеки стають все більш поширеними, більшість з яких пов’язані з помилками неправильної конфігурації під час розгортання контейнерів. Snyk надає ефективний і простий інструмент, який може допомогти нам уникнути помилок неправильної конфігурації та виявити найпоширеніші вразливості в образах докерів.