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.
Тепер у нас є зображення для аналізу.
Відскануйте зображення з клієнта 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
Ви побачите, що вихідні дані тепер показують менше вразливостей, і в цьому випадку це повідомляє вам, що ви зараз використовуєте більш безпечний базовий образ:
Сканування 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 /.
Заключні слова 👈
Із зростанням популярності контейнерів випадки порушення безпеки стають все більш поширеними, більшість з яких пов’язані з помилками неправильної конфігурації під час розгортання контейнерів. Snyk надає ефективний і простий інструмент, який може допомогти нам уникнути помилок неправильної конфігурації та виявити найпоширеніші вразливості в образах докерів.