用途:in-toto 是 CNCF 毕业项目,用于确保软件供应链从发起到最终安装的完整性。它通过在开发流程各步骤生成加密签名的证明(link 元数据),记录发生了什么、由谁执行、产出了哪些制品。在容器场景中,用于验证部署到 Kubernetes 的镜像是否遵循经批准的构建流程且未被篡改。
主要能力:供应链布局(layout)作为核心策略文档,定义步骤(clone、build、test、package、push)、执行者(functionaries,即人或 CI 系统)、检查项(inspections)以及步骤间的输入输出制品关系。每个步骤执行生成 link 文件,包含消耗的材料、产出的制品(均带哈希)、执行的命令及执行者的加密签名。验证时检查所有必需步骤是否执行、每步是否由授权执行者签名、制品哈希是否在步骤间正确链接、步骤间是否发生未授权修改。
使用方式:需 Python 3.8+ 或 Go 运行时、GPG 或 Ed25519 密钥、容器构建流水线(Docker、Buildah 或 Kaniko)、容器镜像仓库及 Kubernetes 集群。流程为:用 in-toto-keygen 生成各执行者的 Ed25519 密钥;用 Python 编写并签名供应链布局(root.layout);在 CI/CD 中用 in-toto-run 记录各步骤;部署前用 in-toto-verify 验证整条供应链,通过后再 kubectl apply。还可通过 ValidatingWebhookConfiguration 集成 Kubernetes 准入控制,在准入时验证证明。
适用场景:部署或配置供应链安全能力、建立符合合规要求的安全控制、构建或改进该领域安全架构、开展需要此实现的安全评估。
限制:资料未提供具体收费、价格或性能数据;实际效果取决于密钥管理、流水线集成与策略配置。in-toto 证明可映射到 SLSA 各级要求(L1 有布局文档、L2 托管构建服务签名证明、L3 加固构建平台与不可伪造来源、L4 双人审查与封闭构建)。