欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

CI/CD 供应链防篡改:基于 Sigstore 与 Cosign 的容器镜像签名

发表于:|最后更新:|分类:DevSecOps|阅读:7095 次

为了防止构建好的容器镜像在从构建环境推送到仓库及拉取到 Kubernetes 集群的过程中被篡改,业界推行利用 Cosign 结合 OIDC(无密钥签署模式 Keyless) 对 OCI 镜像施加密码学签名,并在准入控制器中强校验。

一、Cosign 镜像签名与 K8s Kyverno 验证策略

bash
# 生成临时密钥或使用 OIDC 签署镜像
cosign sign --yes ghcr.io/org/app:v1.0.0
yaml
# Kyverno 准入策略拦截未签名镜像运行
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: check-image-signature
spec:
  validationFailureAction: Enforce
  rules:
  - name: verify-signature
    match:
      resources:
        kinds: ["Pod"]
    verifyImages:
    - imageReferences: ["ghcr.io/org/*"]
      attestors:
      - entries:
        - keys:
            publicKeys: |-
              -----BEGIN PUBLIC KEY-----
              MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...
              -----END PUBLIC KEY-----