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

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

Руководства

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

Проверьте подписи, контрольные суммы и аттестации с учётом текущих требований к сети и корням доверия.

Обновлено:

Скачайте артефакты выпуска и перед установкой проверьте подписи, контрольные суммы и аттестации. Используйте идентичность подписанта и тег скачанной версии. Требования к сети описаны ниже.

Не передавайте установщик в shell через pipe. Скачайте артефакты, верифицируйте их, затем запускайте. Шаги ниже описывают, как это сделать.

Следующая версия — 1.0, первая стабильная версия Community и Business/Enterprise. Она ещё не выпущена. Возможности и их текущие ограничения описаны отдельно. Честность и ограничения.

Что поставляется с релизом

Помеченный релиз содержит бинарные архивы плюс всё необходимое для их аттестации:

АртефактЧто это
checksums.txt (+ .sig, .pem)SHA-256 каждого артефакта, с подписью cosign и сертификатом (подпись без ключа)
*_<os>_<arch>.tar.gzархив(ы) релиза для linux/darwin x amd64/arm64
*.spdx.sbom.jsonSBOM выпуска в формате SPDX
*.sbom.sigstore.jsonSPDX SBOM, обёрнутый как подписанная in-toto аттестация над архивом
*.vex.sigstore.jsonзаявление OpenVEX как подписанная in-toto аттестация над архивом
*.intoto.jsonlпровенанс сборки SLSA (создан slsa-github-generator)
образ контейнераопубликован в реестре, подписан и аттестован, привязан по дайджесту

Аттестации ссылаются на каждый артефакт по его байтам, никогда по изменяемому тегу.

Путь одной командой

Получите scripts/verify-release.sh из доверенной копии исходного кода на теге выпуска; скрипт не входит в файлы выпуска. Запуская его, вы доверяете этой копии. Укажите путь к скрипту из каталога скачанных файлов; он сообщает результат каждого шага проверки.

/path/to/olivares/scripts/verify-release.sh --source-tag <version>

--offline убирает обращение к Rekor из вызовов cosign, но не делает всю проверку независимой от сети. Проверке без ключа нужны корни доверия Sigstore, которые загружаются при отсутствии в кеше. У скрипта нет параметра --trusted-root. Проверкам пакетов SBOM и OpenVEX нужен корень доверия даже с --key; шаг SLSA запускает slsa-verifier без офлайн-параметра. Публичные выпуски подписаны без ключа и не публикуют ключ проверки. Используйте --key только для файлов, открытый ключ подписи которых вы получили от владельца по каналу, отдельному от канала получения проверяемых файлов.

Скрипту нужны cosign и sha256sum. В пользовательском режиме отсутствие аттестаций или slsa-verifier отмечается как пропущенный шаг. Пропущенный шаг не проверен. Режим --strict-publication только для издателя также требует --cert-identity и --source-uri; он отклоняет --key и --offline.

Что проверяется, шаг за шагом

Если предпочитаете выполнять проверки вручную, вот цепочка. Подставьте <archive> для каждого *.tar.gz.

1. Подпись над контрольными суммами

Верификация checksums.txt транзитивно доверяет каждому артефакту, указанному в нём. Проверка без ключа привязывает подписывающую идентичность к 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

2. Целостность артефактов

Пересчитайте хеш каждого артефакта по теперь доверенному манифесту:

sha256sum --ignore-missing --check checksums.txt

3. Аттестация SBOM (SPDX)

cosign verify-blob-attestation --type spdxjson \
  --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 \
  --bundle <archive>.sbom.sigstore.json --new-bundle-format \
  --check-claims <archive>

4. Аттестация OpenVEX

Заявление проекта об уязвимостях, верифицированное тем же способом:

cosign verify-blob-attestation --type openvex \
  --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 \
  --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

Верификация образа контейнера

Проверка образа без ключа доказывает образ по той же идентичности 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, которым управляет. Пакет содержит соответствующий cosign.pub; скрипты проверяют Helm chart и сохранённые образы этим ключом без Rekor. Прежде чем доверять пакету, сравните открытый ключ с копией, полученной от владельца по отдельному каналу. Ключ внутри пакета не подтверждает подлинность самого пакета. Образ проходит проверку только при наличии подписи, созданной этим ключом.

for d in images/*/; do
  cosign verify --local-image "$d" --insecure-ignore-tlog --key cosign.pub
done
cosign verify-blob --key cosign.pub --insecure-ignore-tlog --signature chart/*.tgz.sig chart/*.tgz

Что верификация доказывает и что не доказывает

Криптографическая верификация доказывает провенанс и целостность: что артефакт — это точный, неизменённый результат, который наш конвейер собрал и подписал. Она не сертифицирует поведение программного обеспечения или какую-либо позицию соответствия. Olivares AI спроектирован для — а не сертифицирован по — фреймворкам, таким как SOC 2 и ISO 27001; см. Честность и ограничения для понимания, что это различие означает на практике.

Верификация также настолько полна, насколько полны аттестации, которые данный релиз фактически опубликовал. Верификатор сообщает о каждом шаге, который выполняет; если сборка пропускает артефакт, соответствующему шагу нечего проверять. Стандартный релиз прикладывает артефакты SBOM, OpenVEX и SLSA, указанные выше.

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