Cosign
Cosign 是什么?
CosignSigstore 项目提供的开源命令行工具,可使用有密钥或无密钥工作流对 OCI 工件及其他软件进行签名、验证与证明。
Cosign 是 Sigstore 技术栈面向用户的工具。它可以对容器镜像、OCI 工件、二进制 blob、SBOM 和 in-toto 证明进行签名,并把签名与工件一起存放在 OCI 注册中心。无密钥模式下,它通过 Fulcio 基于 OIDC 身份获取短期证书,并把签名写入 Rekor 透明日志;有密钥模式下则可以使用传统密钥、硬件令牌或 KMS 托管密钥。验证策略可以要求可信身份(例如某个特定的 GitHub Actions 工作流)、可复用工作流或特定的证明谓词。在许多 CI 流水线和 Kubernetes 准入系统(Kyverno、Connaisseur、OPA Gatekeeper)中,Cosign 已成为默认的签名工具,用以保障供应链完整性。
● 示例
- 01
cosign sign --identity-token $OIDC_TOKEN ghcr.io/org/app:v1.2
- 02
Kyverno 策略检查生产镜像是否由特定的 GitHub Actions 工作流签名。
● 常见问题
Cosign 是什么?
Sigstore 项目提供的开源命令行工具,可使用有密钥或无密钥工作流对 OCI 工件及其他软件进行签名、验证与证明。 它属于网络安全的 应用安全 分类。
Cosign 是什么意思?
Sigstore 项目提供的开源命令行工具,可使用有密钥或无密钥工作流对 OCI 工件及其他软件进行签名、验证与证明。
Cosign 是如何工作的?
Cosign 是 Sigstore 技术栈面向用户的工具。它可以对容器镜像、OCI 工件、二进制 blob、SBOM 和 in-toto 证明进行签名,并把签名与工件一起存放在 OCI 注册中心。无密钥模式下,它通过 Fulcio 基于 OIDC 身份获取短期证书,并把签名写入 Rekor 透明日志;有密钥模式下则可以使用传统密钥、硬件令牌或 KMS 托管密钥。验证策略可以要求可信身份(例如某个特定的 GitHub Actions 工作流)、可复用工作流或特定的证明谓词。在许多 CI 流水线和 Kubernetes 准入系统(Kyverno、Connaisseur、OPA Gatekeeper)中,Cosign 已成为默认的签名工具,用以保障供应链完整性。
如何防御 Cosign?
针对 Cosign 的防御通常结合技术控制与运营实践,详见上方完整定义。
Cosign 还有哪些其他名称?
常见的别称包括: cosign。
● 相关术语
- appsec№ 1044
Sigstore
Linux 基金会下的开源项目,通过短期密钥、OIDC 身份和透明日志,使签名、验证与保护软件工件变得简单。
- appsec№ 784
软件包签名
对软件包进行加密签名,使使用者能够验证发布者身份并确认工件在发布后未被篡改。
- appsec№ 870
来源证明(Provenance Attestation)
对软件工件如何生成(源代码、构建系统、参数与依赖)进行签名且可机器验证的声明,使使用者能够信任其来源。
- appsec№ 1053
SLSA Framework
Supply-chain Levels for Software Artifacts:OpenSSF 发布的分级要求集合,逐级强化软件构建、签名与验证,以抵御供应链篡改。
- appsec№ 1069
软件供应链安全
保护软件生产链中每一个环节——源代码、依赖、构建、签名、分发与部署——使其免受篡改、恶意代码与完整性破坏的学科。
- appsec№ 522
in-toto
一项开放框架,对软件供应链的每一步进行密码学证明,使消费者能够验证工件的构建与处理过程完全符合项目所有者的设计意图。