Перейти к содержимому

Машинный перевод. Авторитетным источником является английская версия; проверка носителем языка ещё не выполнена.

Руководства

Верификация релиза

Доказательство, что релиз Olivares AI — тот, который мы опубликовали — проверка подписи, провенанса SLSA, SBOM и аттестаций OpenVEX, полностью офлайн без сети

Обновлено:

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.jsonSBOM по каждому архиву, в форматах SPDX и CycloneDX
*.sbom.sigstore.jsonSPDX 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, указанные выше.

Поиск в документации