Мы все много слышали о SBOM недавно. Мы слышали об их полезности, их составе и требованиях к безопасности и регулированию. На этот раз я хочу поговорить о немного менее известном сегменте SBOM CyclonDX — графе зависимостей.
В отличие от названия, граф зависимостей не является визуальным аспектом SBOM. Его цель — помочь описать зависимость компонентов от других компонентов. Это зависит от компонентов бом-ref – уникальный идентификатор для каждого компонента SBOM. Идея состоит в том, чтобы показать, какие элементы зависят или связаны друг с другом. Звучит достаточно просто, не так ли?
Scribe часто использует граф зависимостей в процессе принятия решения о том, что элементы СБОМ важны и на что следует обратить внимание. В этой статье мы рассмотрим способ Писец использует график зависимостей SBOM и практические преимущества, которые мы можем извлечь из него. Мы рассмотрим несколько примеров графа зависимостей SBOM в формате JSON и в заключение рассмотрим, что еще мы можем с ним сделать в будущем.
Что такое граф зависимости?
Граф зависимостей был добавлен в формат CyclonDX в 2019 году. Его заявленная цель заключалась в том, чтобы связать компоненты вместе с помощью уникального идентификатора, который позже стал известен как бом-ref. В Пример использования CycloneDX, мы можем увидеть, как зависимости используют идентификатор ссылки компонента, чтобы показать, что от чего зависит:
Даже не вдаваясь в примеры, я уверен, вы увидите, что возможность соединять один элемент с другими может оказаться полезной. Во-первых, как наиболее распространенный вариант использования, он позволяет сразу увидеть все зависимости библиотеки в одном месте.
Граф зависимостей может представлять как прямые, так и транзитивные отношения и обычно имеет глубину в один узел.
Хотя можно представить полное дерево зависимостей, это не рекомендуется, поскольку это может привести к бесконечным циклам из-за циклических зависимостей или других сложных отношений. Рекомендуется сохранять графики простыми, представляя один узел.
Как Scribe использует граф зависимостей?
Scribe широко использует метаданные, собранные вместе с SBOM, для придания контекста доказательствам. Контекст доказательств включает в себя то, где и когда они были собраны, каков их предмет и так далее. Поскольку Scribe стремится предоставлять надежную, многократно используемую информацию, мы используем граф зависимостей для создания соединений, которые можно использовать для разных клиентов и проектов.
Вот ссылки на графы зависимостей, которые поддерживает Scribe:

Источник: Писец документации
- Пакет-файл: это соединение позволяет нам видеть, какие файлы принадлежат каждому пакету. Очевидно, что если мы находим файл в пакете, которому он не принадлежит, это явный признак проблемы.
- Индикация слоя и уровень пакета: Знать, какие пакеты расположены на каком слое образа, полезно, поскольку таким образом мы можем упорядочить уязвимости по слоям. Проблемы, которые вы унаследовали от своего базового изображения или родительского изображения, не будут иметь такой же актуальности и вашей прямой возможности влиять на них, как проблемы, обнаруженные на слоях, которые вы создали сами.
- Слой-файл: Подобно соединению «пакет-файл», это соединение позволяет нам видеть, какие файлы связаны с каждым слоем. В сочетании с другими соединениями мы можем проверить, что файлы связаны с правильным пакетом и слоем и что нет файлов там, где их не должно быть.
- Зафиксировать и зафиксировать файл: Определив, какие файлы взяты из какого коммита, мы можем убедиться, что в файлах коммита не было ненужных изменений до того, как они были использованы для создания окончательного образа.
Используя всю эту информацию вместе, мы можем составить из SBOM довольно полное представление о том, какие файлы и где следует найти. В результате у нас больше шансов обнаружить выбросы или аберрации, которые могут указывать на проблему в вашем изображении — либо на проблему целостности, либо на потенциальную атаку.
Граф зависимостей и применение политик
Scribe использует этот комплексный граф зависимостей для эффективного применения сложных политик. Например, Commit-File Зависимость используется для соблюдения политики владельца кода. Это позволяет нам проверить, кто, какой файл и когда зафиксировал. Пакет-файл Зависимость используется для обеспечения политик целостности пакетов. Это позволяет нам проверить, какие файлы должны быть связаны с каждым пакетом, и убедиться, что это действительно так. Кроме того, Уровень пакета Зависимость используется для адаптации политик пакетов к конкретным требованиям каждого уровня. Поскольку каждый образ программного обеспечения может создавать свои слои по-разному, очень важно точно знать, какие пакеты с каким слоем образа связаны.
Настройка информации о вашем графике зависимостей
Мы знаем, что не все хотят делиться всей этой информацией или что они не хотят ее видеть или каким-либо образом использовать.
Чтобы решить эту проблему, Scribe позволяет вам создавать более конкретные версии вашего SBOM. Вот параметры настройки, которые вы можете использовать с нашим Валинт инструмент при создании SBOM, который мы в настоящее время поддерживаем. В будущем будут доступны дополнительные опции:
- Чтобы включить только определенные группы компонентов, используйте -компоненты для выбора между типами групп.
- Чтобы включить или исключить определенные типы пакетов, используйте -Тип упаковки or --package-exclude-type чтобы выбрать конкретный тип пакета.
- Чтобы включить найденные установленные пакеты (группа пакетов устанавливать) или пакеты, на которые ссылаются источники (группа пакетов индекс), используйте –группа-пакетов для выбора между вариантами.
- Чтобы исключить компоненты, используйте --filter-regex, –фильтр-область, и –filter-purl чтобы исключить любой компонент, который вы хотите исключить.
- Чтобы прикрепить любое содержимое файла, используйте –attach-regex для включения содержимого внешних файлов.
- Чтобы включить пользовательские среды и метки, используйте –env и -этикетка чтобы прикрепить свои настраиваемые поля. Это позволяет вам добавлять собственные метаданные в создаваемый вами SBOM.
Глядя в будущее
Scribe придает первостепенное значение контексту и связям, которые мы устанавливаем между различными компонентами вашего SBOM, используя его. Благодаря способности нашего Валинта подписать, проверить и управлять политиками мы считаем вполне возможным увидеть будущее, в котором можно будет сделать больше, чем просто управлять политиками безопасности. Мы можем представить себе будущее, в котором информация о графе зависимостей может использоваться для контроля качества, удовлетворения конкретных требований соответствия и даже в несвязанных областях, таких как финансовые технологии и сельское хозяйство.
Платформа Scribe имеет уровень бесплатного пользования, где вы можете начать пробовать ее прямо сейчас, имея под рукой все возможности для игры. Я призываю вас попробуй, оцените полезность такой информации, накопленной с течением времени, и посмотрите, для чего вы можете использовать эту информацию. Я надеюсь, что вы присоединитесь к нам, поскольку мы приветствуем более безопасное будущее для всех нас.
Этот контент предоставлен вам Scribe Security, ведущим поставщиком комплексных решений для обеспечения безопасности цепочки поставок программного обеспечения, обеспечивающим современную безопасность артефактов кода, а также процессов разработки и доставки кода по всей цепочке поставок программного обеспечения. Подробнее.