Проблема
Команда может отлично видеть CVE в образе, но не понимать, кто и где его собрал, какой workflow породил этот digest и соответствует ли релиз ожидаемому source state.
Если provenance не проверяется автоматически, то security быстро превращается в набор красивых artefacts 'для галочки': файлы есть, но deploy их не читает.
Решение
Нужно рассматривать release trust как pipeline-контракт: digest pinning, provenance/attestation, verification gate, policy exceptions и запись решения.
Хорошая практика - явно отделить 'SBOM generated' от 'artifact verified for deployment'. Тогда команда видит, что inventory и trust chain - это соседние, но разные задачи.
Что проверить руками
- Проверить, что deploy использует digest, а не плавающий tag.
- Проверить, где и как генерируется provenance/attestation и кто её валидирует.
- Сравнить CI happy path и emergency/manual release path.
- Записать, что происходит при отсутствии attestation: block, warn или manual approval.
Типичные ошибки
- Считать signed artifact автоматически проверенным artifact.
- Не тестировать verify step как обязательную часть deploy path.
- Оставлять emergency path без тех же trust checks, что и основной pipeline.
Defensive checklist
- Deploy использует digest pinning.
- Есть verification gate для provenance/attestation.
- Exceptions оформляются явно, а не молча обходят pipeline.
- Retest повторяет не только build, но и actual deploy verification path.
Безопасный пример кода
Проверка attestation перед релизом. Пример рассчитан на owned/lab-среду и показывает инженерную логику проверки, а не эксплуатационную цепочку.
IMAGE="registry.example/app@sha256:REPLACE_ME"
# verify the image signature
cosign verify "$IMAGE"
# verify attached attestations / provenance
cosign verify-attestation "$IMAGE"
# optional: require annotations or policy claims
cosign verify-attestation -a env=production "$IMAGE"
Как это должно попасть в отчёт
- Release trust chain: source, workflow, digest, attestation, policy decision.
- Evidence: verified digest, verification output, exception path, owner.
- Retest: unsigned or mismatched artifact fails the same deploy gate.