@absolutejs/attest

中文文档
0.2.3发布于 2026/10/29MITTypeScriptES Module构建来源已验证近 30 天下载 1903

无钥匙的Sigstore验证政策、出处、签名和私人CI管道的核查.

中文使用文档
文档目录4 节
  1. 为什么这不属于 @absolutejs/deploy
  2. GitHub 动作身份
  3. 国 际
  4. 安全财产

@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 捆绑 .
  • 在第一个被侵犯的边界停止的顺序处决.

麻省理工学院有执照.

版本与发布记录

@absolutejs/attest 共发布 8 个版本,首次发布于 2026/07/31;过去 12 个月发布了 8 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.3latest2026/10/2910 天前
0.2.22026/10/2910 天前
0.2.12026/10/1821 天前
0.2.02026/09/171 个月前
0.1.32026/07/313 个月前
0.1.22026/07/313 个月前

关于 @absolutejs/attest 的常见问题

@absolutejs/attest 是什么?

无钥匙的Sigstore验证政策、出处、签名和私人CI管道的核查.

如何安装 @absolutejs/attest?

在项目目录运行 npm install @absolutejs/attest,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 absolute-attest,可以用 npx absolute-attest 直接运行。

@absolutejs/attest 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@absolutejs/attest 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@absolutejs/attest 可以商用吗?

@absolutejs/attest 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@absolutejs/attest 的下载量有多少?

根据 npm 官方下载统计,@absolutejs/attest 在 2026/10/05 – 2026/11/03 这 30 天内被下载 1,903 次,日均约 63 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@absolutejs/attest 还在维护吗?

最新版本 0.2.3 发布于 2026/10/29(10 天前);至今共发布 8 个版本,其中过去 12 个月发布了 8 个;首次发布于 2026/07/31。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。