Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.

SLSA

Для чего

SLSA (Supply-chain Levels for Software Artifacts) — это не утилита, а шкала зрелости гарантий о том, как был собран артефакт. Build-трек задаёт уровни L1–L3: от «provenance просто существует» до «provenance выпущен изолированным, защищённым от подделки builder'ом». SLSA отвечает не на вопрос «что внутри артефакта» (это SBOM), а на вопрос «можно ли доверять процессу сборки»: из какого commit, каким builder'ом, по какому workflow он получен.

Provenance против подписи состава Подпись SBOM (см. Cosign) подтверждает что лежит в артефакте. SLSA-provenance подтверждает как и где он собран. Это разные гарантии: артефакт может иметь честный SBOM и при этом быть собран на скомпрометированном runner'е.

Как применяют

SLSA-уровень не «ставится» командой — он достигается настройкой pipeline и проверяется инструментом. На практике provenance генерируется доверенным builder'ом (например, официальным GitHub-генератором), оформляется как in-toto attestation с predicateType: https://slsa.dev/provenance/v1 и верифицируется slsa-verifier с обязательной привязкой к источнику:

slsa-verifier verify-artifact app-linux-amd64 \
  --provenance-path app-linux-amd64.intoto.jsonl \
  --source-uri github.com/<github-owner>/<repository> \
  --source-tag v1.4.0

Ключевой фрагмент проверяемого provenance (декодированный statement):

{
  "predicateType": "https://slsa.dev/provenance/v1",
  "subject": [{ "name": "app-linux-amd64", "digest": { "sha256": "<digest>" } }],
  "predicate": {
    "runDetails": { "builder": { "id": "https://github.com/slsa-framework/slsa-github-generator/..." } }
  }
}

--source-uri обязателен по смыслу: без него verify подтверждает лишь, что provenance подписан, но не что артефакт собран именно из вашего кода.

Сильные стороны

Ограничения

Offline / on-premise

Частично. Сама модель уровней инфраструктуры не требует. slsa-verifier может проверять provenance офлайн, если бандл с подписью и нужные материалы доверия выгружены заранее (verify по локальному .intoto.jsonl без обращения к публичному Rekor возможен при оффлайн-бандле). Достижение L2/L3 в закрытом контуре требует собственного доверенного builder'а и, при keyless-подписи provenance, self-hosted Fulcio/Rekor — иначе сетевой доступ к публичным сервисам.

Связанные темы