跳至正文

机器翻译。英文版本为权威来源,母语审校尚未完成。

指南

验证发布版本

证明 Olivares AI 发布版本是我们发布的那个——验证其签名、SLSA 溯源、SBOM 和 OpenVEX 认证,完全离线无需网络

最近更新:

Olivares AI 治理你基础设施上的代理,因此它自己的供应链是你信任模型的一部分。在运行发布版本之前,证明它是我们发布的那个。每个版本都附带你需要的产物来以密码学方式验证——验证可以完全无需网络运行,这是断连和气隙资产的路径。

不要将安装程序通过管道传给 shell。下载产物,验证它们,然后运行它们。以下步骤说明如何操作。

预发布状态。 尚未发布任何公开发布版本——olivaresai/olivares 随正式发布一同上线,因此今天没有可下载的产物,也没有可对其运行这些命令的对象。本指南记录每个公开发布版本都将携带的验证链;支撑它的管线已经构建完成并在 CI 中持续演练。首个带标签的发布版本发布后,以下所有内容即可运行。

发布版本附带什么

标记的发布携带二进制档案加上证明它们所需的一切:

产物内容
checksums.txt(+ .sig.pem每个产物的 SHA-256,带有 cosign 签名和(无密钥)证书
*_<os>_<arch>.tar.gzlinux/darwin x amd64/arm64 的发布档案
*.spdx.sbom.json / *.cdx.sbom.json每个档案的 SBOM,以 SPDX 和 CycloneDX 两种形式提供
*.sbom.sigstore.jsonSPDX SBOM 包装为档案上的签名 in-toto 认证
*.vex.sigstore.jsonOpenVEX 声明作为档案上的签名 in-toto 认证
*.intoto.jsonlSLSA 构建溯源(由 slsa-github-generator 生成)
容器镜像发布到注册表,已签名和认证,按摘要固定

认证按字节引用每个产物,绝不通过可变标签。

一命令路径

仓库附带 scripts/verify-release.sh。从包含下载文件的目录运行它;它走完整个链并报告每个步骤:

# 无密钥(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>

网络的使用取决于签名模型。无密钥签名携带 Rekor 透明日志条目,因此默认路径访问 Rekor(你可以传递 --offline 来使用捆绑的条目)。基于密钥的签名在没有 Rekor 条目的情况下生成,因此脚本添加 --insecure-ignore-tlog 且不联系任何内容。--key cosign.pub --offline 组合是真正的断连路径。

脚本需要 cosignsha256sumslsa-verifier 是可选的。缺少产物(或验证器)的步骤以清晰的说明跳过而非失败——因此它在最小发布上工作并在完整发布上完全验证。

逐步检查内容

如果你更喜欢手动运行检查,这就是链。将 <archive> 替换为每个 *.tar.gz

1. 校验和上的签名

验证 checksums.txt 传递信任到其中列出的每个产物。无密钥验证将签名身份固定到项目的 GitHub Actions OIDC 身份:

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

验证容器镜像

无密钥镜像路径针对相同的 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 产物。

搜索文档