1. 基本信息
| 项目 | 内容 |
|---|---|
| 名称 | sign-artifact-harness-harness-skills |
| 作者/维护者 | Harness(harness 官方组织) |
| 来源链接 | https://github.com/harness/harness-skills/tree/main/skills/sign-artifact |
| 许可证 | Apache-2.0(GitHub API 获取,仓库级) |
| GitHub Stars / Forks | 合集仓库整体 73 / 14(GitHub API 获取;该数字属整个 harness-skills 合集,不代表本技能自身热度,取证方式见第 7 章) |
| 最新版本 | SKILL.md 声明 version 1.0.0;子目录提交于 2026-06-03(GitHub API 获取) |
| 安装方式 | 克隆仓库 + 配置 Harness MCP v2 Server(详见第 10 章) |
2. 功能介绍与亮点
sign-artifact 用自然语言向已有的 Harness 流水线精确插入一个 Artifact Signing(SscaArtifactSigning)步骤,用 Cosign 对容器镜像或本地阶段产物签名。
- 三种签名方式全覆盖:keyless(Harness OIDC)、key-based(Cosign 密钥对,存为 Harness 文件密钥)、Vault 签名,均给出可直接使用的 YAML 片段
- 来源类型广:第三方镜像仓库(Docker、ECR、GCR、GAR、ACR)、Harness Artifact Registry(HAR)、Harness 本地阶段产物均支持
- 外科手术式修改,不越界:20 条显式规则中明确“只能插入或更新
SscaArtifactSigning一个步骤,绝不新增/删除/重排其他步骤”,并特别禁止在本技能里顺带加入 SAST/SCA/STO 扫描步骤 - 踩过坑才写得出的故障排查:文档专门标出一个常见陷阱——Harness UI 的“上传签名到制品仓库”复选框默认不勾选,仅给出签名步骤本身不代表
.sig会真正出现在 registry 里;针对这一项单独给出 8 步排查清单
3. 适用场景
所属分类:安全与合规
适合已经在用 Harness CI/CD、且流水线中已有镜像构建/推送步骤的工程或安全团队:当需要为某条具体流水线的某个阶段添加制品签名(如满足内部合规要求“制品必须签名才能部署”)时,不必手写 SscaArtifactSigning 的 YAML 细节、也不必记住“上传签名”这个默认关闭的隐藏开关,用一句话描述需求即可让 agent 完成配置。
4. 跨 Agent 兼容性
- Claude Code:原生支持——仓库根目录 CLAUDE.md 导入 AGENTS.md,skills 自动发现,README 给出具体安装步骤
- Codex:官方支持——README 明确列出 OpenAI Codex 的设置步骤(读取根目录 AGENTS.md 作为系统指令)
- OpenClaw:未验证——抓取材料未点名,仅笼统声明支持任何兼容系统指令/MCP/文件上下文的 AI 工具
- Hermes Agent:未验证——抓取材料未点名,理由同上
5. 推荐理由
把“给已有流水线精确加一个签名步骤”这件容易在细节上出错的事情(该放哪个阶段、用哪种签名方式、是否记得打开上传开关)交给 agent 按向导逐项确认,同时靠 20 条显式规则约束 agent 不越权改动流水线其他部分,兼顾易用与可控性,适合还不熟悉 Harness SSCA YAML 语法的初中级工程师。
6. 评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 受欢迎程度 | 7 | Harness 官方出品,但本子技能自身仅 1 次提交,仓库整体 73 stars 规模有限,未见独立于官方渠道的第三方讨论 |
| 可用性 | 8 | 10 阶段向导 + 20 条显式 UX 规则、故障排查段落极详尽(仅“.sig 未出现在 registry“一项就有 8 步排查),但需要已有 Harness 账号、配置好的 MCP v2 Server 和一条已存在的流水线,非零配置开箱即用 |
| 安全性 | 9 | 见下方检查清单 |
| 综合 | 8.0 | 三项均值 |
安全检查清单:
| 检查项 | 结果 |
|---|---|
| ① Shell 命令与权限范围 | 不执行任意 shell 命令,全部通过 harness_get/harness_update/harness_list 等 MCP 工具调用完成;规则 20 明确限定“仅可插入或更新 SscaArtifactSigning 一个步骤” |
| ② 联网外发 | 仅通过用户自行配置的 Harness MCP v2 Server 与用户自己的 Harness 账号通信,未见其他外发目标 |
| ③ 凭据存储 | 依赖 Harness MCP Server 自身的 API Key 配置(环境变量);密钥式签名要求 Cosign 私钥以 Harness 文件密钥形式存储,技能正文不要求粘贴或落盘明文凭据 |
| ④ 可疑指令 | 全文未发现提示注入或隐蔽指令;反而多条规则(如“Surgical YAML only”“Never add HarnessSAST/SCA/STO scanners”)是明确的防越权护栏 |
| ⑤ 作者信誉 | Harness 为知名商业 CI/CD 平台厂商,harness 为其官方 GitHub 组织 |
| ⑥ License | Apache-2.0,明确(仓库级) |
| ⑦ 维护时间 | 子目录提交于 2026-06-03,仓库整体最近一次提交为 2026-07-07,非弃置项目 |
7. 跟同类 Skills 相比的优势
| 方案 | 定位 | 差异 |
|---|---|---|
| sign-artifact(本技能) | 精确把 Cosign 签名步骤插入既有 Harness 流水线的具体阶段 | 只聚焦签名这一单一动作,外科手术式 YAML 修改,不触碰 SBOM/SLSA/扫描等其他步骤 |
| manage-supply-chain(同仓库姊妹技能) | 一站式配置 SBOM/签名/SLSA/OPA 策略并给出合规仪表盘 | 覆盖整条供应链安全链路,适合从零规划整体策略;不做单一签名步骤的精细调整 |
| verify-sign(同仓库姊妹技能) | 验证已签名制品的 Cosign 签名 | 是 sign-artifact 的验证对应物,前提是制品已被签名,不负责生成签名 |
| supply-chain-risk-auditor(Trail of Bits 出品) | 对代码仓库的第三方依赖做静态尽调,标记单一维护者、久未更新、历史 CVE 等风险 | 分析对象是依赖库本身而非制品签名,产出风险评估报告,不涉及 CI/CD 流水线配置 |
8. 用户评价
该技能所在仓库目前仅有 Harness 内部工程师的提交与合并记录,第三方平台尚无独立的具名用户评价。
9. 其他补充
同仓库还有 create-sbom、enforce-sbom、generate-slsa、enforce-slsa 等更细粒度的姊妹技能,覆盖 SBOM 生成与 SLSA 溯源等其他供应链安全环节,需要更完整覆盖面时可与 manage-supply-chain 搭配安装。
10. 安装使用方式
git clone https://github.com/harness/harness-skills.git
cd harness-skills
claude
在 ~/.claude/settings.json 中加入 Harness MCP v2 Server 配置:
{
"mcpServers": {
"harness-mcp-v2": {
"command": "npx",
"args": ["-y", "harness-mcp-v2"],
"env": { "HARNESS_API_KEY": "<your-api-key>" }
}
}
}
安装后无需重启;在对话中输入 /sign-artifact 并描述需求(如“给某流水线的镜像推送步骤后面加上 keyless 签名,并上传签名到 registry”)即可触发。
11. 注意事项
- 必须已有 Harness 账号并配置好 Harness MCP v2 Server(含 API Key),无法离线或脱离 Harness 平台使用
- 只能作用于已存在的流水线,不会创建独立的签名专用流水线
- Deploy(CD)阶段签名目前不支持,Harness 官方文档将其列为路线图功能,需改用 CI 或 Security 阶段
- “上传签名到制品仓库”在 Harness UI 中默认不勾选,遗漏该开关是导致签名步骤成功但 registry 里看不到
.sig的最常见原因 - OpenClaw / Hermes Agent 的兼容性未见官方声明,跨 agent 使用前建议自行验证