Целостность цепочки поставок
Коротко о главном
Заголовок раздела «Коротко о главном»Средства контроля цепочки поставок NextPDF действуют в двух точках: CI-гейты, выполняющиеся на каждом pull request, меняющем зависимости, и на каждом теге версии, и релизный workflow, в котором настроены генерация provenance, keyless-подписание и формирование SBOM.
| Средство контроля | Тип |
|---|---|
SBOM сборки в формате CycloneDX 1.7 | CI-гейт, жёсткий |
| Заявление in-toto, фиксирующее входные данные сборки | CI-гейт, жёсткий |
| Сверка SHA-256-отпечатков зависимостей с закреплённым бейзлайном | CI-гейт, жёсткий |
| Проверка согласованности OpenVEX с политикой по известным уязвимостям зависимостей | CI-гейт, жёсткий |
| Проверка детерминизма на наборе фикстур | CI-проверка, best-effort |
Генерация provenance закреплённым slsa-github-generator | Конфигурация workflow — релизный workflow |
Keyless-подписание Sigstore cosign с записью в журнал прозрачности Rekor | Конфигурация workflow — релизный workflow |
Формирование SBOM в форматах CycloneDX 1.7 и SPDX 2.3 | Конфигурация workflow — релизный workflow |
Ночная матрица php-fuzzer по путям парсера и модуля записи | CI по расписанию |
CI-гейты
Заголовок раздела «CI-гейты»Каждый pull request, затрагивающий зависимости, и каждый тег версии проходят следующие проверки:
| Проверка | Что делает | Гейт |
|---|---|---|
| Инвентаризация | Формирует SBOM сборки в формате CycloneDX 1.7 | Жёсткий |
| Запись входных данных сборки | Формирует заявление in-toto, фиксирующее входные данные сборки | Жёсткий |
| Целостность зависимостей | Сверяет SHA-256-отпечатки байтов с закреплённым бейзлайном | Жёсткий |
| Согласованность VEX | Требует, чтобы каждой записи политики по известным уязвимостям зависимостей соответствовало заявление в документе OpenVEX v0.2.0 репозитория | Жёсткий |
| Воспроизводимость | Выполняет проверку детерминизма на наборе фикстур | Best-effort |
Гейт целостности зависимостей сверяет SHA-256-отпечатки байтов дерева зависимостей с бейзлайном, закреплённым в репозитории, независимо от метаданных пакетов.
Конфигурация релизного workflow
Заголовок раздела «Конфигурация релизного workflow»Provenance — конфигурация workflow
Заголовок раздела «Provenance — конфигурация workflow»Релизный workflow закрепляет канонический переиспользуемый workflow
slsa-github-generator, настроенный генерировать in-toto provenance внутри
изолированного эфемерного билдера, и настраивает инлайновый запуск slsa-verifier
для проверки результата генератора.
Подписание и прозрачность — конфигурация workflow
Заголовок раздела «Подписание и прозрачность — конфигурация workflow»Релизный workflow настраивает keyless-подписание бандла артефактов с помощью
Sigstore cosign с записью в журнал прозрачности Rekor. Keyless-подписание выводит
короткоживущий сертификат из OIDC-идентичности workflow
(https://token.actions.githubusercontent.com), поэтому этот путь подписания
релизов настроен без долгоживущего ключа подписи артефактов.
SBOM — конфигурация workflow
Заголовок раздела «SBOM — конфигурация workflow»Релизный workflow настраивает формирование двойного SBOM — документа CycloneDX 1.7
и документа SPDX 2.3.
Фаззинг
Заголовок раздела «Фаззинг»Ночная матрица php-fuzzer вместе с харнессом по AST и дереву структуры нагружает
пути парсера и модуля записи.