Найпростіший спосіб знайти вразливості в образах 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

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

  13 найкращих генераторів QR-кодів для вашої наступної цифрової кампанії

Сканування 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, ви можете швидко створити його.

За допомогою маркера ви можете створити секрет на 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 /.

  Як видалити обліковий запис 2K

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

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