Перейти к содержанию

Составить и выгрузить ППК (SBOM) с учетом требований ФСТЭК

Контекст

Для сертификации и подготовки сопроводительных материалов недостаточно просто выгрузить обычный SBOM. Нужен перечень программных компонентов в машиночитаемой форме, который учитывает дополнительные требования ФСТЭК и при этом отражает полный состав проекта, включая зависимости, которые не всегда раскрываются в манифестах по умолчанию.

CodeScoring поддерживает выгрузку SBOM в расширенных форматах CycloneDX v1.6 Ext JSON и CycloneDX v1.7 Ext JSON, адаптированных под такие требования. Чтобы такой файл получился полезным, сначала важно собрать полный состав компонентов, а затем разметить в проекте свойства зависимостей, которые не определяются автоматически.

В примере ниже для локального запуска используется Python-проект и pip, потому что на этой связке проще наглядно показать, зачем для полного ППК иногда нужно разрешение зависимостей в локальной среде и явное указание пути к пакетному менеджеру. Тот же подход применяется и для других экосистем, где для полного инвентаря нужно разрешение зависимостей в окружении.

Что получится

После прохождения сценария:

  • в CodeScoring появится проект с полным составом компонентов, сохраненным после локального запуска агента;
  • для ключевых зависимостей будут заполнены свойства, важные для выгрузки ППК;
  • из интерфейса можно будет скачать CycloneDX v1.6 Ext JSON или CycloneDX v1.7 Ext JSON с учетом требований ФСТЭК.

Требования

Перед началом убедитесь, что есть:

  • доступ к on-premise инсталляции CodeScoring;
  • лицензия CodeScoring, в которой включен модуль SCA;
  • API-токен платформы для локального запуска агента;
  • локальная копия проекта, для которого нужно сформировать ППК;
  • установленный в локальной среде пакетный менеджер и известный путь к нему, например /usr/local/bin/pip3;
  • права на просмотр проекта и выгрузку SBOM из интерфейса.

Шаги

Шаг 1. Подготовьте агент Johnny для локального запуска

Сначала нужно убедиться, что локальный запуск можно выполнить без дополнительных донастроек в последний момент.

  1. Откройте страницу [platform-url]/download/ в своей инсталляции CodeScoring.
  2. При необходимости проверьте актуальную версию по адресу [platform-url]/download/johnny_version.
  3. Скачайте исполняемый файл агента под свою систему.
  4. Сделайте файл исполняемым:
chmod +x ./johnny

После этого агент можно использовать для локальной инвентаризации проекта и сохранения результатов в платформу.

Шаг 2. Сначала получите полный состав компонентов локально

Чтобы получить полный граф зависимостей с учетом транзитивных, нужен либо lock-файл соответствующего пакетного менеджера, либо запуск с разрешением зависимостей в окружении сборки. В случае pip отдельный lock-файл обычно не используется, поэтому в этом примере показан второй вариант с явным указанием пути к пакетному менеджеру.

Пример локального запуска с сохранением результатов в CodeScoring

./johnny scan dir . \
  --api_token <api_token> \
  --api_url <api_url> \
  --project "ppk-fstec-demo" \
  --save-results \
  --create-project \
  --localization ru \
  --pip-resolve \
  --pip-path /usr/local/bin/pip3 \
  --bom-path bom-local.json

Что важно в этой команде:

  • --pip-resolve включает разрешение зависимостей в окружении;
  • --pip-path явно указывает, какой pip нужно использовать для локального запуска;
  • --save-results и --create-project сохраняют результаты в отдельный CLI-проект CodeScoring;
  • --bom-path bom-local.json оставляет локальную копию SBOM рядом с проектом;
  • полный список флагов и режимов запуска собран в руководстве по запуску агента Johnny.

Когда resolve действительно нужен

Для некоторых экосистем пакетные менеджеры по умолчанию не раскрывают транзитивные зависимости в манифестах. В таких случаях CodeScoring рекомендует разрешение зависимостей в окружении. Если lock-файл уже существует, агент использует его и отдельный resolve не выполняет.

Ниже показано короткое интерактивное демо. Оно показывает разницу между запуском только по манифесту и запуском с resolve. Для pip такой режим стоит использовать только в изолированном окружении проекта: иначе в результат могут попасть лишние пакеты из локальной среды, которые не относятся к сканируемому приложению.

После такого запуска в платформе появляется CLI-проект с полным составом компонентов, а локально сохраняется bom-local.json.

Шаг 3. Разметьте свойства зависимостей перед выгрузкой

Расширенный SBOM для ФСТЭК отличается от обычного тем, что в него добавляются дополнительные свойства компонентов. Часть из них требует ручной разметки в проекте.

  1. Откройте созданный проект в CodeScoring.
  2. Перейдите к таблице зависимостей.
  3. Нажмите Настроить зависимости.
  4. Для компонентов, которые нужно отразить в ППК более точно, заполните необходимые поля:
    • VCS — ссылка на репозиторий или архив с исходным кодом;
    • Поверхность атакиДа, Косвенно или Нет;
    • Функция безопасностиДа, Косвенно или Нет;
    • Кем предоставлено — если компонент заимствован из другого продукта.
  5. Сохраните изменения.

Что не заполняется автоматически

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

Эти значения относятся только к текущему проекту и учитываются в следующих выгрузках из него.

После этого выбранные значения будут учитываться при последующих выгрузках SBOM из проекта.

Шаг 4. Выгрузите ППК в расширенном формате CycloneDX

Теперь можно получить машиночитаемый файл, который уже учитывает разметку из проекта.

  1. На странице проекта нажмите Скачать SBOM.
  2. В списке форматов выберите:
    • CycloneDX v1.6 Ext JSON, или
    • CycloneDX v1.7 Ext JSON.
  3. При необходимости задайте имя файла.
  4. Подтвердите выгрузку.

Почему нужен именно формат Ext

Для требований ФСТЭК недостаточно обычного CycloneDX JSON. Нужен расширенный формат Ext, в котором дополнительные свойства компонентов включаются в properties.

После этого на локальной машине появится файл ППК в формате, который адаптирован под дополнительные требования ФСТЭК.

Шаг 5. Проверьте содержимое выгруженного файла

Финальная проверка нужна, чтобы убедиться, что выгружен не просто SBOM, а именно тот файл, который содержит добавленные свойства и пригоден для дальнейшей передачи и проверки.

  1. Откройте выгруженный JSON-файл в редакторе или просмотрщике JSON.
  2. Найдите один из компонентов, который был размечен на предыдущем шаге.
  3. Убедитесь, что:
    • у компонента есть блок properties;
    • в нем присутствуют значения для свойств, связанных с поверхностью атаки, функцией безопасности и источником заимствования;
    • ссылка на репозиторий или архив исходного кода попала в externalReferences.

После такой проверки можно быть уверенным, что файл содержит не только базовый перечень компонентов, но и дополнительную разметку, важную для ППК.

Результат

Сценарий можно считать завершенным, если:

  • локальный запуск агента сформировал полный состав компонентов и сохранил результаты в проект CodeScoring;
  • для нужных зависимостей в проекте заполнены свойства, влияющие на выгрузку ППК;
  • из интерфейса скачан CycloneDX v1.6 Ext JSON или CycloneDX v1.7 Ext JSON;
  • в выгруженном файле видны дополнительные свойства компонентов и ссылка на исходный код там, где она была указана.

После этого ППК можно использовать как машиночитаемый результат для внутренней проверки и дальнейшей подготовки материалов.

Что дальше

Страница была полезна?