Поиск по сайту:

Как создать SBOM с помощью инструмента Microsoft с открытым исходным кодом


SBOM (ведомость материалов программного обеспечения) помогает вам понять цепочку поставок программного обеспечения, перечисляя пакеты и поставщиков, от которых зависит ваш код. SBOM быстро набирают обороты как способ повысить безопасность после известных реальных атак на цепочки поставок.

Одним из основных сторонников SBOM является Microsoft, которая опубликовала свой подход к их созданию еще в октябре 2021 года. Ранее в этом году компания открыла исходный код своего инструмента для создания SBOM для Windows, macOS и Linux.

В этой статье вы узнаете, как начать использовать проект для индексации зависимостей вашего кода. Он создает SPDX-совместимые документы, в которых перечислены файлы, пакеты и отношения в вашем проекте. SPDX (Software Package Data Exchange) — это принятый в ISO стандарт для SBOM, поэтому вы можете передавать сгенерированные отчеты непосредственно в другие инструменты экосистемы.

Первоначально Microsoft анонсировала проект под названием Salus. С тех пор он отказался от этого термина, потому что он противоречит существующему проекту безопасности кода Salus, который возник в Coinbase. Генератор SBOM теперь называется просто sbom-tool.

Начиная

Вы можете скачать SBOM Tool из репозитория Microsoft GitHub. Предварительно скомпилированные двоичные файлы доступны на странице релизов. Выберите правильную загрузку для вашей системы, затем создайте двоичный исполняемый файл и переместите его в место на вашем пути.

Вот пример для Linux:

$ wget https://github.com/microsoft/sbom-tool/releases/download/v<VERSION>/sbom-tool-linux-x64
$ chmod +x sbom-tool-linux-x64
$ mv sbom-tool-linux-x64 /usr/local/bin/sbom-tool

Вы должны иметь возможность запустить sbom-tool для отображения справочной информации в окне терминала:

$ sbom-tool
No action was specified

The Sbom tool generates a SBOM for any build artifact.

Usage - Microsoft.Sbom.Tool <action> -options

Создание SBOM

Новые SBOM создаются с помощью подкоманды generate инструмента. Необходимо указать несколько аргументов:

  • -b (BuildDropPath) — папка для сохранения сгенерированных манифестов SPDX SBOM.
  • -bc (BuildComponentPath) — папка, которая будет сканироваться для поиска зависимостей в вашем проекте.
  • -nsb (NamespaceUriBase) — базовый путь, который будет использоваться в качестве пространства имен манифеста SBOM. Это должен быть URL-адрес, принадлежащий вашей организации, например https://example.com/sbom.

SBOM Tool также необходимо знать название и версию вашего проекта. Это часто можно сделать из файлов, уже находящихся в вашем репозитории, таких как поля package.json name и version, но вам может потребоваться указать информацию вручную или переопределить значения по умолчанию в некоторых случаях. Для этого добавьте флаги pn и pv:

  • -pn (PackageName) — имя вашего проекта или пакета.
  • -pv (PackageVersion) — версия проекта, которую вы сканируете. Это должно соответствовать версии выпуска, которую сопровождает ваш SBOM, чтобы пользователи могли сопоставлять списки зависимостей с конкретными сборками.

Вот пример создания SBOM для файлов в вашем рабочем каталоге. SBOM будет помещен в подкаталог sbom-output. Это должно существовать до запуска инструмента.

$ mkdir sbom-output
$ sbom-tool generate -b sbom-output -bc . -pn example -pv 1.0 -nsb https://example.com/sbom

Обзор результатов сканирования будет показан в вашем терминале:

[INFO] Enumerated 3728 files and 607 directories in 00:00:00.5938034 

[INFO] |Component Detector Id         |Detection Time                |# Components Found            |# Explicitly Referenced                 | 
...
[INFO] |Npm                           |0.63 seconds                  |241                           |0                                       | 
...
[INFO] |Total                         |0.64 seconds                  |241                           |0                                       | 

[INFO] Detection time: 0.6374678 seconds.

Этот проект использует npm для управления своими зависимостями. Инструмент обнаружил 241 пакет в файле package.json рабочего каталога.

В настоящее время SBOM Tool поддерживает 19 различных языков программирования и форматов пакетов. Список включает npm, NuGet, PyPi, Maven, Rust Crates и Ruby gems, а также пакеты Linux, присутствующие в образах Docker. Также поддерживаются ссылки на удаленные репозитории GitHub.

Содержание СБОМ

Сгенерированный SBOM будет записан в _manifest/spdx_2.2/manifest.spdx.json внутри указанного вами выходного каталога сборки. SBOM — это довольно подробный файл JSON, предназначенный для использования другим программным обеспечением.

{
  "files": [],
  "packages": [
    {
      "name": "color-convert",
      "SPDXID": "SPDXRef-Package-A72B0922E46D9828746F346D7FD11B7F81EDEB15B92BEEDAE087F5F7407FECDC",
      ...
    }

В отчете содержится четыре основных типа информации:

  • Раздел files. Здесь перечислены все файлы, содержащие исходный код, который вы написали в своем проекте. Инструмент SBOM заполняет этот раздел только при сканировании определенных типов проектов, например решений C#.
  • Раздел packages — полный каталог всех сторонних зависимостей, присутствующих в вашем проекте, со ссылками на диспетчер исходных пакетов, используемую версию и тип применимой лицензии.
  • Раздел relationships. Здесь подробно описаны все отношения между компонентами, перечисленными в SBOM. Наиболее распространенное отношение, которое вы увидите, — это DEPENDS_ON, которое объявляет элемент в разделе packages как одну из зависимостей вашего проекта. Также существует несколько других типов отношений, таких как CREATED_BY, DEPENDENCY_OF и PATCH_FOR.
  • Подробности метаданных отчета — такие поля, как name, documentNamespace, spdxVersion и creationInfo определяет SBOM, инструмент, использованный для его создания, и применимую версию манифеста SPDX.

Теперь у вас есть SBOM, и вы можете начать использовать его с другими инструментами для сканирования уязвимостей и управления соблюдением лицензий. Вы можете распространять SBOM вместе с выпусками программного обеспечения, чтобы потребители могли просматривать содержимое каждой новой версии. SBOM лучше всего создавать как часть вашего конвейера сборки, чтобы они оставались актуальными.

Доступ к SBOM имеет неоценимое значение, когда появляются новые серьезные проблемы в цепочке поставок. Например, организации, использующие SBOM, могли лучше реагировать на Log4j. Они могли проверять свои отчеты, чтобы быстро находить проекты, зависящие от уязвимой библиотеки, вместо того, чтобы проверять списки пакетов вручную.

Сканирование образов Docker

SBOM Tool может сканировать существующие образы Docker в рамках создания отчета. Чтобы использовать эту возможность, вам нужно добавить флаг -di и указать тег изображения или дайджест, который вы хотите сканировать. Остальные аргументы остаются прежними.

$ sbom-tool generate -di ubuntu:latest -b sbom-output -bc . -pn demo -pv 1.0 -nsb https://demo.com/demo

Образ Docker будет проанализирован для определения пакетов, которые он включает. Они будут добавлены в отчет SBOM вместе с зависимостями, найденными в исходной папке. Вы можете сканировать несколько образов Docker за одну операцию, разделяя их теги или дайджест-хэши запятыми.

Краткое содержание

SBOM Tool — это молодая утилита для создания SBOM с открытым исходным кодом, разработанная в Microsoft. Он поддерживает несколько ведущих форматов пакетов и производит вывод, совместимый с SPDX. Это означает, что вы можете передавать сгенерированные SBOM прямо в другие инструменты, такие как Grype, для автоматического поиска уязвимостей в системе безопасности и устаревших зависимостей.

SBOM — это эффективный способ повысить осведомленность о цепочках поставок программного обеспечения и выявить скрытые проблемы. Создание и распространение SBOM помогает пользователям понять, что скрыто включено в их проект. Инструмент SBOM — это один из способов создания стандартных отраслевых отчетов с помощью одной команды, что упрощает добавление SBOM в каждый из ваших выпусков.




Все права защищены. © Linux-Console.net • 2019-2024