Скилл Quality

Release Verify

Consumer-side рецепт верификации Datarim-релизов — sha256 → cosign verify-blob → gh attestation verify. Загружай при install/update из GitHub Release.

Обзор

Datarim-релизы публикуются из Arcanada-one/datarim через release.yml и подписаны Sigstore cosign keyless (GitHub OIDC), сопровождаются CycloneDX SBOM и SLSA L2 build provenance attestation. Никогда не устанавливай tarball без проверки подписи. Этот skill — точка входа для AI-агентов и операторов, потребляющих Datarim-релизы; канонический источник: docs/release-verification.md.

Когда использовать

  • Пользователь говорит «установи Datarim», «обнови до v*», «скачай latest release».
  • Пользователь спрашивает «как проверить tarball», «что такое cosign bundle», «зачем sha256 если есть подпись».
  • Любая инструкция, включающая gh release download Arcanada-one/datarim или эквивалент.
  • Перед запуском любого install-скрипта из release tarball.

Не загружать для git-checkout / git pull рабочих копий — там верификация через git commit signing (отдельная политика).

Что входит в каждый релиз

  • datarim-<TAG>-source.tar.gz — source archive (git archive HEAD, prefix datarim-<TAG>/).
  • datarim-<TAG>-source.tar.gz.sha256 — SHA-256 checksum.
  • datarim-<TAG>-source.tar.gz.cosign.bundle — cosign signature bundle (cert + signature + Rekor inclusion proof).
  • datarim-<TAG>-sbom.cdx.json — CycloneDX SBOM.
  • datarim-<TAG>-sbom.cdx.json.cosign.bundle — cosign-подпись на SBOM.
  • GitHub attestation (server-side) — SLSA L2 build provenance, через gh attestation verify.

Предусловия

  • cosign ≥ 3.0
  • gh ≥ 2.40 (для gh attestation verify)
  • sha256sum, jq (POSIX)

Verify Recipe (5 шагов, все должны вернуть exit 0)

TAG=v1.21.3   # замени на проверяемый релиз

# 1. Скачать все артефакты релиза.
gh release download "$TAG" --repo Arcanada-one/datarim

# 2. Проверить целостность tarball через checksum.
sha256sum -c "datarim-${TAG}-source.tar.gz.sha256"

# 3. Проверить cosign signature на tarball.
cosign verify-blob \
  --bundle "datarim-${TAG}-source.tar.gz.cosign.bundle" \
  --certificate-identity "https://github.com/Arcanada-one/datarim/.github/workflows/release.yml@refs/tags/${TAG}" \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
  "datarim-${TAG}-source.tar.gz"

# 4. Проверить cosign signature на SBOM (тот же identity binding).
cosign verify-blob \
  --bundle "datarim-${TAG}-sbom.cdx.json.cosign.bundle" \
  --certificate-identity "https://github.com/Arcanada-one/datarim/.github/workflows/release.yml@refs/tags/${TAG}" \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
  "datarim-${TAG}-sbom.cdx.json"

# 5. Проверить SLSA build provenance.
gh attestation verify "datarim-${TAG}-source.tar.gz" --repo Arcanada-one/datarim

Любой non-zero exit → артефакт untrusted, не разворачивать.

Что доказывает каждый шаг

  • sha256sum -c — целостность. Tarball не повреждён в транзите.
  • cosign verify-blob (tarball) — подлинность. Tarball произведён release.yml именно на этом теге в Arcanada-one/datarim. Подпись зафиксирована в Sigstore Rekor public transparency log.
  • cosign verify-blob (SBOM) — SBOM произведён той же workflow-run, что и tarball.
  • gh attestation verify — SLSA L2 build provenance: артефакт собран GitHub-hosted runners из source на этом теге.

cosign verify-blob — шаг, связывающий tarball с build-origin. Sha256 без cosign не доказывает ничего: атакующий заменит и архив, и .sha256-файл одновременно.

Counter-Examples (так не делать)

  • Pipe-to-tar без проверки подписиcurl … | tar -xz пропускает криптографическую верификацию целиком.
  • Только checksumsha256sum -c ничего не доказывает, если .sha256 подделан вместе с tarball.
  • Cosign без --certificate-identity — принимает подпись от любого signer-а из OIDC issuer; любой subject может выпустить cert и подписать произвольный tarball.

Если верификация падает

Если cosign verify-blob или gh attestation verify падает на официальном release-tag — не устанавливай. Открой issue в https://github.com/Arcanada-one/datarim/issues с тегом, командой и её output. Это потенциальный supply-chain инцидент.

Когда используется

Загружается AI-агентами и операторами, потребляющими Datarim-релизы. Ссылается из CLAUDE.md § Security Mandate § S4 (Supply Chain). При расхождении с docs/release-verification.md — канонический doc побеждает; обнови skill.