Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 252

Cosign

审核人Cybersecurity entrepreneur & security researcher

Cosign 是什么?

CosignSigstore 项目提供的开源命令行工具,可使用有密钥或无密钥工作流对 OCI 工件及其他软件进行签名、验证与证明。


Cosign 是 Sigstore 技术栈面向用户的工具,其诞生正是为了应对供应链攻击——从 SolarWinds 到被劫持的 npm 包——这类攻击的目标是构建与分发流水线,而非运行中的系统。它可以对容器镜像、OCI 工件、二进制 blob、SBOM 和 in-toto 证明进行签名,并把签名与工件一起存放在 OCI 注册中心。

其决定性的创新是无密钥签名。Cosign 不再要求开发者守护长期存在的私钥,而是向 Fulcio 申请证书;Fulcio 是一个证书颁发机构,它验证 OIDC 身份(某个 GitHub Actions 工作流、某个 Google 或 GitHub 用户),并签发有效期约为十分钟的证书。Cosign 在该时间窗内完成签名,随后丢弃这个临时私钥;由于证书生命周期极短,无需吊销列表或 OCSP。签名事件会记录在 Rekor 中——一个仅追加、防篡改的透明日志——因此任何人日后都能证明签署了什么、由哪个身份签署、以及签署的时间。

于是,验证策略可以要求签署,而不是哪个密钥签署——例如"只允许由我们的 release.yml 可复用工作流构建的镜像"。KyvernoConnaisseurOPA Gatekeeper 等 Kubernetes 准入控制器会在部署时执行这些检查;而 Cosign 生成的证明为 SLSA 溯源提供支撑,把原本仅靠自我声明的构建主张变成可通过密码学验证的主张。

flowchart TD
  A[CI 作业构建镜像] --> B[cosign sign --identity-token OIDC]
  B --> C[Fulcio 验证 OIDC 身份<br/>签发约 10 分钟的证书]
  C --> D[Cosign 完成签名,丢弃密钥]
  D --> E[签名 + 证书记入 Rekor<br/>透明日志]
  E --> F[将镜像 + 签名推送到注册中心]
  F --> G[准入控制器<br/>Kyverno / Connaisseur]
  G --> H{是否由可信<br/>身份/工作流签名?}
  H -->|是| I[允许部署]
  H -->|否| J[被拦截]

示例

  1. 01

    cosign sign --identity-token $OIDC_TOKEN ghcr.io/org/app:v1.2

  2. 02

    Kyverno 策略检查生产镜像是否由特定的 GitHub Actions 工作流签名。

常见问题

Cosign 是什么?

Sigstore 项目提供的开源命令行工具,可使用有密钥或无密钥工作流对 OCI 工件及其他软件进行签名、验证与证明。 它属于网络安全的 应用安全 分类。

Cosign 是什么意思?

Sigstore 项目提供的开源命令行工具,可使用有密钥或无密钥工作流对 OCI 工件及其他软件进行签名、验证与证明。

如何防御 Cosign?

针对 Cosign 的防御通常结合技术控制与运营实践,详见上方完整定义。

Cosign 还有哪些其他名称?

常见的别称包括: cosign。

相关术语