Olivares AI управляет агентами на вашей инфраструктуре, поэтому его собственная цепочка поставок — часть вашей модели доверия. Прежде чем запускать релиз, докажите, что это тот, который мы опубликовали. Каждый релиз поставляет артефакты для криптографической верификации — и верификация может выполняться вообще без сети, что является путём для отключённых и изолированных окружений.
Не передавайте установщик в shell через pipe. Скачайте артефакты, верифицируйте их, затем запускайте. Шаги ниже описывают, как это сделать.
Статус pre-release. Публичный релиз ещё не опубликован —
olivaresai/olivaresпубликуется вместе с запуском, поэтому сегодня нет артефакта для скачивания и нечего верифицировать этими командами. Это руководство документирует цепочку верификации, которую будет нести каждый публичный релиз; конвейер, стоящий за ней, построен и выполняется в CI. Всё, что описано ниже, станет выполнимым с первым помеченным релизом.
Что поставляется с релизом
Помеченный релиз содержит бинарные архивы плюс всё необходимое для их аттестации:
| Артефакт | Что это |
|---|---|
checksums.txt (+ .sig, .pem) | SHA-256 каждого артефакта, с подписью cosign и (keyless) сертификатом |
*_<os>_<arch>.tar.gz | архив(ы) релиза для linux/darwin x amd64/arm64 |
*.spdx.sbom.json / *.cdx.sbom.json | SBOM по каждому архиву, в форматах SPDX и CycloneDX |
*.sbom.sigstore.json | SPDX SBOM, обёрнутый как подписанная in-toto аттестация над архивом |
*.vex.sigstore.json | заявление OpenVEX как подписанная in-toto аттестация над архивом |
*.intoto.jsonl | провенанс сборки SLSA (создан slsa-github-generator) |
| образ контейнера | опубликован в реестре, подписан и аттестован, привязан по дайджесту |
Аттестации ссылаются на каждый артефакт по его байтам, никогда по изменяемому тегу.
Путь одной командой
Репозиторий содержит scripts/verify-release.sh. Запустите его из каталога со скачанными файлами; он проходит всю цепочку и сообщает о каждом шаге:
# Keyless (Sigstore) — по умолчанию. Требует сеть к логу прозрачности (Rekor).
scripts/verify-release.sh
# На основе ключей — верификация по публичному ключу проекта (дружественно к изолированной сети).
scripts/verify-release.sh --key cosign.pub
# Полностью офлайн — на основе ключей, без сети к логу прозрачности.
scripts/verify-release.sh --key cosign.pub --offline
# Привязать провенанс SLSA к конкретному тегу исходников.
scripts/verify-release.sh --source-tag <version>
Как используется сеть, зависит от модели подписания. Keyless-подписи несут запись лога прозрачности Rekor, поэтому путь по умолчанию обращается к Rekor (можно передать --offline для использования упакованной записи). Подписи на основе ключей создаются без записи Rekor, поэтому скрипт добавляет --insecure-ignore-tlog и ни к чему не обращается. Комбинация --key cosign.pub --offline — это действительно отключённый путь.
Скрипт требует cosign и sha256sum; slsa-verifier опционален. Шаги, чьи артефакты (или верификатор) отсутствуют, пропускаются с чётким сообщением, а не завершаются ошибкой — так он работает на минимальном релизе и полностью верифицирует полный.
Что проверяется, шаг за шагом
Если предпочитаете выполнять проверки вручную, вот цепочка. Подставьте <archive> для каждого *.tar.gz.
1. Подпись над контрольными суммами
Верификация checksums.txt транзитивно доверяет каждому артефакту, указанному в нём. Keyless-верификация привязывает подписывающую идентичность к OIDC-идентичности GitHub Actions проекта:
cosign verify-blob \
--certificate checksums.txt.pem \
--signature checksums.txt.sig \
--certificate-identity-regexp '^https://github\.com/olivaresai/olivares/\.github/workflows/release\.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
checksums.txt
На основе ключей вместо этого используется cosign verify-blob --key cosign.pub --signature checksums.txt.sig --insecure-ignore-tlog checksums.txt.
2. Целостность артефактов
Пересчитайте хеш каждого артефакта по теперь доверенному манифесту:
sha256sum --check checksums.txt
3. Аттестация SBOM (SPDX)
cosign verify-blob-attestation --type spdxjson \
--bundle <archive>.sbom.sigstore.json --new-bundle-format \
--check-claims <archive>
Добавьте --key cosign.pub --insecure-ignore-tlog (вместо флагов идентичности) для офлайн-пути. CycloneDX SBOM (*.cdx.sbom.json) поставляется рядом для инструментов, которые его предпочитают.
4. Аттестация OpenVEX
Заявление проекта об уязвимостях, верифицированное тем же способом:
cosign verify-blob-attestation --type openvex \
--bundle <archive>.vex.sigstore.json --new-bundle-format \
--check-claims <archive>
5. Провенанс SLSA
slsa-verifier verify-artifact <archive> \
--provenance-path <provenance>.intoto.jsonl \
--source-uri github.com/olivaresai/olivares
Верификация образа контейнера
Keyless-путь образа доказывает образ по той же идентичности GitHub Actions, но требует сеть. Всегда разрешайте и развёртывайте по дайджесту, никогда по изменяемому тегу:
IMAGE=ghcr.io/olivaresai/olivares
DIGEST="$(crane digest "$IMAGE:<version>")"
REF="$IMAGE@$DIGEST"
cosign verify "$REF" \
--certificate-identity-regexp '^https://github\.com/olivaresai/olivares/\.github/workflows/release\.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
Для полностью отключённого окружения используйте пакет для изолированной сети: он содержит образ, его подписи и аттестации, и cosign.pub, и верифицируется офлайн с cosign verify --local-image <dir> --insecure-ignore-tlog --key cosign.pub. Руководство по самостоятельному размещению описывает сборку и зеркалирование этого пакета.
Что верификация доказывает и что не доказывает
Криптографическая верификация доказывает провенанс и целостность: что артефакт — это точный, неизменённый результат, который наш конвейер собрал и подписал. Она не сертифицирует поведение программного обеспечения или какую-либо позицию соответствия. Olivares AI до версии 1.0 и спроектирован для — а не сертифицирован по — фреймворкам, таким как SOC 2 и ISO 27001; см. Честность и ограничения для понимания, что это различие означает на практике.
Верификация также настолько полна, насколько полны аттестации, которые данный релиз фактически опубликовал. Верификатор сообщает о каждом шаге, который выполняет; если сборка пропускает артефакт, соответствующему шагу нечего проверять. Стандартный релиз прикладывает артефакты SBOM, OpenVEX и SLSA, указанные выше.