SBOM от нулата: как да го генерираш, валидираш и визуализираш (Syft, Grype, SPDX)

SBOM от нулата: как да го генерираш, валидираш и визуализираш (Syft, Grype, SPDX)

Здравейте! Аз съм DevOps ентусиаст и днес искам да ви разкажа за SBOM – Software Bill of Materials. Това е ключов инструмент в модерния софтуерен свят. Ще започнем от основите и ще стигнем до практически стъпки. Статията е предназначена да бъде полезна години напред. Споделете я с колеги, ако ви хареса.

Какво е SBOM и защо е важен?

SBOM е списък на всички компоненти в софтуера. Той включва библиотеки, зависимости и версии. Представете си го като „рецепта“ за вашето приложение. Този инструмент е ключов за сигурността.

В света на DevSecOps, SBOM помага да управляваме рискове. Той разкрива уязвимости в зависимостите. Според CISA, SBOM е основен за управление на софтуерната верига на доставки. Без него, атаките като SolarWinds могат да ни изненадат.

Защо е важен сега? Софтуерът става все по-сложен. Open-source компонентите са навсякъде. SBOM дава прозрачност. Той помага на екипите да реагират бързо на проблеми. В регулации като EO 14028 на САЩ, SBOM е задължителен. В ЕС също се обсъжда подобно.

SBOM в българския контекст

В България IT секторът расте бързо. Стартъпи като Telerik (сега Progress) и аутсорсинг компании като Accedia работят с глобални клиенти. Те често използват open-source. SBOM помага да се спазват стандарти за сигурност.

Представете си български стартъп в София. Той разработва апликация за финтех. Клиентът иска SBOM за одит. С инструменти като Syft, екипът генерира го бързо. В аутсорсинга, компании като Melon интегрират SBOM в CI/CD. Това строи доверие с партньори от ЕС и САЩ.

Местни екипи в Пловдив или Варна могат да сканират за уязвимости. Това намалява рискове от кибератаки. В България, с над 2400 IT фирми, SBOM става стандарт. Той подпомага растежа без компромиси в сигурността.

Генериране на SBOM с Syft

Syft е open-source инструмент от Anchore. Той генерира SBOM от контейнери, файлове и архиви. Лесен е за използване. Поддържа формати като SPDX и CycloneDX.

Първо, инсталирайте го. Използвайте curl:

curl -sSfL https://get.anchore.io/syft | sudo sh -s -- -b /usr/local/bin

Сега генерирайте SBOM за Docker образ. Команда:

syft ubuntu:latest

Това показва списък на пакетите. За пълен обхват добавете:

syft ubuntu:latest --scope all-layers

Изходът е в таблица. За JSON формат:

syft ubuntu:latest -o json > sbom.json

За SPDX:

syft ubuntu:latest -o spdx-json > sbom.spdx.json

Пример за български стартъп: Екип в София сканира Node.js апликация. Те генерират SBOM от package.json. Команда:

syft dir:./my-app

Това разкрива зависимости като Express. Лесно интегриране в GitHub Actions.

Syft поддържа езици като Java, Python и Go. За Python проект:

syft dir:./python-project

Той чете requirements.txt. Резултатът е детайлен SBOM. Това спестява време на екипите.

Валидиране и сканиране с Grype

Grype е партньор на Syft. Той сканира за уязвимости. Работи с SBOM или директно с образи. Открива проблеми в пакети.

Инсталирайте го:

curl -sSfL https://get.anchore.io/grype | sudo sh -s -- -b /usr/local/bin

grype ubuntu:latest

Това показва уязвимости с тежест. За SBOM файл:

grype sbom:./sbom.json

Или от pipe:

syft ubuntu:latest -o syft-json | grype

Пример изход:

NAME         INSTALLED     FIXED-IN     VULNERABILITY        SEVERITY
bash         5.1-6ubuntu1  (none)       CVE-2022-3715        Medium
coreutils    8.32-4ubuntu2 (none)       CVE-2022-1304        Low

Добавете филтри. За провал при висока тежест:

grype ubuntu:latest --fail-on high

В български аутсорсинг: Екип в Accedia сканира клиентски проект. Те откриват уязвимост в Log4j. Бързо ъпгрейдват. Grype интегрира в CI/CD. Това подобрява DevSecOps практиките.

Grype поддържа VEX за филтриране на фалшиви позитиви. Команда:

grype ubuntu:latest --vex path/to/vex.json

Това прави сканирането точно.

SPDX като формат за споделяне

SPDX е стандартен формат за SBOM. Той е ISO/IEC 5962:2021. Поддържа JSON, YAML и RDF. SPDX дава структура за компоненти, лицензи и сигурност.

Защо SPDX? Той е широко приет. Помага за споделяне между екипи. В SBOM, SPDX описва пакети с ID като PURL.

Пример JSON в SPDX:

{
  "SPDXID": "SPDXRef-DOCUMENT",
  "spdxVersion": "SPDX-2.3",
  "creationInfo": {
    "created": "2023-01-01T00:00:00Z"
  },
  "name": "MyApp-SBOM",
  "packages": [
    {
      "SPDXID": "SPDXRef-Package-1",
      "name": "express",
      "versionInfo": "4.17.1",
      "downloadLocation": "https://www.npmjs.com/package/express",
      "licenseConcluded": "MIT"
    }
  ]
}

Syft генерира SPDX директно. Команда:

syft my-image -o spdx-json

В България, стартъпи споделят SPDX с клиенти. Това улеснява одити. SPDX подпомага compliance с GDPR.

Визуализация на SBOM

Визуализацията прави SBOM разбираем. Използвайте sbom2dot с GraphViz. Първо, инсталирайте GraphViz.

Генерирайте DOT файл от SBOM:

sbom2dot sbom.spdx.json > sbom.dot

После визуализирайте:

dot -Tpng sbom.dot -o sbom.png

Това показва зависимости като граф. Полезно за екипи.

Други инструменти: DependenSee или онлайн визуализатори. В български проекти, визуализацията помага на мениджъри да виждат рискове.

TL;DR: SBOM процес в 5 стъпки

Ето чеклист за бърз старт:

  1. Инсталирай инструменти: Използвай curl за Syft и Grype.
  2. Генерирай SBOM: syft your-image -o spdx-json > sbom.json.
  3. Сканирай за уязвимости: grype sbom:./sbom.json.
  4. Визуализирай: Преобразувай в граф с sbom2dot и GraphViz.
  5. Сподели: Използвай SPDX формат за екипи или клиенти.

Следвай тези стъпки за сигурен workflow.

Полезни ресурси

Тези ресурси са актуални и детайлни.

Заключение: Време за действие

SBOM е задължителен в DevSecOps. С Syft, Grype и SPDX, вие сте готови. В България, това дава предимство на стартъпи и аутсорсинг. Опитайте го в следващия проект.

Какъв е вашият опит с SBOM? Използвали ли сте Syft в екипа си? Споделете в коментарите. Ако статията ви помогна, споделете я с колеги. Заедно строим по-сигурна общност!

Федя Серафиев

Федя Серафиев

е DevOps технологичен ентусиаст с опит в Linux, Docker, Kubernetes и CI/CD. Той споделя практични ръководства и анализи, които помагат на специалистите да изграждат по-добри и ефективни системи. На devopsbg.net Федя предоставя актуални и полезни насоки за автоматизация, сигурност и оптимизация на инфраструктурата.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *


Колко е 10 + 8 ? (въведете числото)