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

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

Witness

Для чего

Witness оборачивает шаг сборки и автоматически собирает evidence о том, как он выполнялся. Команда witness run запускает любой процесс (например, make), а пока он идёт — фиксирует материалы и продукты, git-состояние, окружение, запущенные команды, и упаковывает всё это в подписанный in-toto attestation через набор подключаемых attestor'ов. Затем witness verify проверяет собранные attestations против политики: были ли пройдены нужные шаги, теми ли исполнителями, с ожидаемым набором evidence. По сути это «runtime-сборщик provenance», избавляющий от ручного написания link-метаданных.

Чем Witness отличается от голого in-toto in-toto задаёт формат и требует, чтобы вы сами сгенерировали link-метаданные. Witness автоматизирует их сбор: подключаемые attestor'ы (git, environment, command-run, products) наполняют attestation за вас, а policy-движок задаёт правила приёмки. Это уровень оркестрации поверх in-toto.

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

Запись attestation вокруг шага сборки и его проверка по политике:

# Обернуть сборку: собрать evidence и подписать attestation
witness run \
  --step build \
  --key signer.key \
  --outfile build.attestation.json \
  -- make release

# Проверить артефакт против политики (какие шаги/исполнители обязательны)
witness verify \
  --policy policy.signed.json \
  --publickey policy-ca.pub \
  --artifactfile app-0.1.tar.gz \
  --attestations build.attestation.json

Опционально attestations выгружаются и ищутся через сервис Archivista (--enable-archivista, --archivista-server <url>), а подпись может идти keyless через Sigstore.

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

Ограничения

Offline / on-premise

Частично. Ядро (witness run и witness verify с ключевой подписью и локальной политикой) работает полностью офлайн — никаких внешних сервисов. Сетевые зависимости — опциональны: keyless-подпись через Fulcio/Rekor, доверенные метки времени (TSA) и хранение/поиск attestations в публичной Archivista. В закрытом контуре всё это заменяется собственным PKI и self-hosted Archivista либо обычным файловым хранилищем.

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