技术深度解析
`actions/attest` 操作基于一个简单但强大的原则:将构建工件的加密摘要与一个签名令牌绑定,该令牌证明该工件是由特定的 GitHub Actions 工作流运行产生的。在底层,该操作使用 GitHub 的 OIDC 提供者来获取一个签名的 JWT(JSON Web Token),其中包含关于工作流运行的声明——例如仓库、分支、提交 SHA 和工作流名称。然后,这个 JWT 被用来创建一个 in-toto 证明,这是一种用于描述软件工件来源的标准化格式。
该证明包括:
- 主体(Subject):被证明工件的摘要(SHA256)。
- 谓词(Predicate):关于工件如何构建的声明,包括工作流运行 ID、触发事件和构建者身份。
- 签名(Signature):对证明的加密签名,使用 OIDC 令牌作为签名身份生成。
验证过程使用 `gh attestation verify`,它会联系 GitHub 的证明 API 来验证签名,并检查证明的声明是否与预期的工作流运行匹配。这消除了对单独的公钥基础设施(PKI)或密钥管理系统的需求。
对于希望检查代码的开发者,该操作在 GitHub 上的 `actions/attest` 仓库是开源的(116 颗星,日增 +0)。该仓库包含操作的 TypeScript 源代码,以及测试和文档。底层的验证逻辑也可以在 GitHub CLI(`gh`)中找到,该 CLI 是用 Go 编写的。
性能基准测试
| 指标 | 值 |
|---|---|
| 平均构建时间增加 | 5-10 秒 |
| 证明大小 | ~2-5 KB |
| 验证延迟(gh CLI) | < 1 秒 |
| 支持的工件类型 | 任何文件(二进制、容器镜像、SBOM 等) |
数据要点: 性能开销极小,使得证明即使对于延迟敏感的流水线也是可行的。证明体积小,确保它可以与工件一起存储而不会产生显著的存储成本。
该操作目前仅支持 GitHub 托管的运行器,因为 OIDC 令牌是由 GitHub Actions 环境自动预配的。对于自托管运行器,管理员必须配置运行器以从 GitHub 的 OIDC 提供者请求 OIDC 令牌,这需要网络访问 `https://token.actions.githubusercontent.com` 和适当的防火墙规则。对于气隙环境或高度受限的环境来说,这是一个不小的障碍。
关键参与者与案例研究
这里的主要参与者是 GitHub(微软),它正在将 `actions/attest` 定位为 Sigstore 和 cosign 等第三方签名工具的原生替代方案。由 Linux 基金会开发并得到 Google、Red Hat 等支持的 Sigstore,一直是开源软件签名的事实标准。Cosign 是 Sigstore 项目的一部分,允许使用由 Fulcio(证书颁发机构)和 Rekor(透明日志)支持的无密钥签名来签名容器镜像和 blob。
比较:actions/attest vs. Sigstore/cosign
| 特性 | actions/attest | Sigstore/cosign |
|---|---|---|
| 密钥管理 | 无(基于 OIDC) | 无(通过 Fulcio 实现无密钥) |
| 透明日志 | GitHub 的证明 API | Rekor(公开、不可变) |
| 支持的格式 | in-toto 证明 | in-toto、DSSE、原始签名 |
| 验证工具 | `gh attestation verify` | `cosign verify` |
| 生态系统锁定 | 与 GitHub 紧密耦合 | 平台无关 |
| 自托管支持 | 有限(需要 OIDC 配置) | 完整(任何 CI/CD 系统) |
数据要点: actions/attest 为仅限 GitHub 的工作流提供了卓越的集成,但对于多平台或混合环境,Sigstore/cosign 仍然是更可移植的选择。
一个值得注意的早期采用者是 OpenSSF(开源安全基金会),它一直在倡导 SLSA 合规性。`actions/attest` 操作通过提供签名的来源证明,直接支持 SLSA 构建级别 2。Google 和 Chainguard 等公司也一直在推动在其自身的 CI/CD 系统中采用类似的证明机制。
行业影响与市场动态
`actions/attest` 的推出是对日益增长的监管和行业对软件供应链安全压力的直接回应。美国关于网络安全的行政命令(EO 14028)和欧盟《网络弹性法案》都要求关键软件提供软件来源证明和 SBOM。GitHub 此举使开发者无需额外工具即可更轻松地合规。
市场采用预测
| 年份 | 估计使用证明的 GitHub Actions 工作流百分比 |
|---|---|
| 2025 | 5-10%(早期采用者) |
| 2026 | 20-30%(主流,由合规性驱动) |
| 2027 | 50%+(公共仓库的默认设置) |
数据要点: 采用率可能会遵循合规性驱动的曲线,一旦主要云提供商或政府机构强制要求采购时提供证明,采用率将显著上升。
该操作还威胁到了第三方签名工具的商业模式。