@absolutejs/测试
私人CI管道的无钥匙软件供应链证明.
@absolutejs/attest 将不可改变的容器文摘或释放文件绑入一个
精确的 GitHub 动作存储器、 工作流程、 校正以及承诺 。 它创建了 SLSA v1
出处上游, 构建已失效的 Cosign 命令计划, 存储图像
来源和SPDX SBOM在其OCI登记册中图像旁边的证明,以及
为普通发布文件创建可移植的 Sigstore 捆绑.
软件包不执行加密,操作证书权限, 或取而代之的是西格斯托尔. 正式的Cosign客户端执行签名和 对富尔西奥,雷克和斯格斯托尔信任根进行核查. 这个包 拥有可重用策略, 告诉 Cosign 确切的哪个工作流程标识和 文物摘要是可以接受的.
为什么这不属于 @absolutejs/deploy
在部署之前进行证明,在没有部署人员的情况下仍然有用.
建立系统提供证据、登记处保存证据、核实入境控制
离线放行审查员检查. @absolutejs/deploy 可能需要
激活前的有效证据,但不应拥有信任模型.
GitHub 动作身份
import {
createImagePublicationCommands,
githubWorkflowIdentityFromEnvironment,
} from "@absolutejs/attest";
const identity = githubWorkflowIdentityFromEnvironment(process.env);
const commands = createImagePublicationCommands({
identity,
imageReference:
"ghcr.io/acme/api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
provenancePath: "evidence/provenance.json",
sbomPath: "evidence/sbom.spdx.json",
});
每个核查命令都要求:
- 确切的Fulcio OIDC发行商;
- 准确的 GitHub 仓库;
- 确切的工作流程文件;
- 确切的分行或标记参考;
- 确切的来源;
- 以文摘为主的OCI图像参考.
标记, 如 latest,简称承诺,不附带条件的工作流程名称,以及
非 GitHub 引用 URL 被拒绝 .
国 际
软件包导出 absolute-attest cI 任务 :
absolute-attest provenance evidence/provenance.json
absolute-attest publish-image \
"$IMAGE_NAME@$IMAGE_DIGEST" \
evidence/provenance.json \
evidence/sbom.spdx.json \
evidence/attestations.json
absolute-attest sign-blobs \
release/release.json \
release/images.env \
release/sha256sums.txt
absolute-attest verify-blobs \
release/release.json \
release/images.env \
release/sha256sums.txt
absolute-attest verify-image \
"$IMAGE_NAME@$IMAGE_DIGEST"
CLI 读取 GitHub 的标准 GITHUB_REPOSITORY, (中文(简体) ), GITHUB_WORKFLOW_REF, (中文(简体) ),
GITHUB_REF, (中文(简体) ), GITHUB_SHA, (中文(简体) ), GITHUB_SERVER_URL,以及 GITHUB_RUN_ID
变量。 无证书。 Cosign 获得工作寿命短的 OIDC
身份直接来自 GitHub 动作.
信任的服务器可以在不管理临时文件的情况下验证一个可移植的捆绑 :
import { verifyPortableBlobBundle } from '@absolutejs/attest';
const verified = await verifyPortableBlobBundle({
artifact: certificationJson,
bundle,
identity: allowedIdentity,
runner
});
帮助者将艺术品捆绑起来,写出0600模式的临时文件,
需要被绑定的 Cosign 版本, 验证 GitHub 工作流程的准确身份
和 blob,返回捆绑的 SHA-256,并删除目录 finally。 。 。 .
呼叫者仍负责将储存库、工作流程和
将有效签名视为授权签名.
安全财产
- 没有长寿的签名钥匙.
- 无自定义密码.
- 每次签署或证明行动后立即核查.
- 精确证书身份和 GitHub 工作流程要求 .
- SHA-256 文摘被固定的图像.
- SLSA v1 源代码绑定在源代码和工作流程引用.
- SPDX JSON SBOM 与OCI图像一起存储的证明.
- 非容器释放文件的可移植 Sigstore 捆绑 .
- 在第一个被侵犯的边界停止的顺序处决.
麻省理工学院有执照.