3. 信任边界模型:零信任架构、供应链信任链、签名与验证的信任传递机制

在云原生供应链安全中,信任边界不再是传统的网络边界。Sigstore 通过构建从代码提交到镜像部署的完整信任链,实现了零信任架构下的签名与验证传递机制。本章深入剖析信任边界的理论模型与 Sigstore 的工程实现。

3.1 零信任架构下的信任边界重构

传统安全模型假设“内网可信、外网不可信”,而零信任架构(Zero Trust Architecture, ZTA)的核心原则是“永不信任,始终验证”。在软件供应链中,这意味着:

  • 无隐式信任:任何组件、构建步骤或镜像层都不应被默认信任。
  • 最小权限:签名密钥、访问令牌仅在最短生命周期内授予最小范围。
  • 持续验证:每次拉取、部署操作都必须验证签名和元数据。
关键概念:信任边界迁移
信任边界从“网络位置”迁移到“密码学身份”。Sigstore 通过 Fulcio 证书和 Rekor 日志,将信任锚定在可验证的公开透明日志上,而非 IP 地址或网络段。

3.2 供应链信任链模型

Sigstore 构建的信任链包含四个核心环节,每个环节都通过签名与验证建立信任传递:

环节 信任锚点 签名对象 验证方式
开发者身份 Fulcio 根证书 / OIDC 提供商 代码提交、标签 验证证书链 + OIDC
构建过程 构建平台身份(GitHub Actions、GitLab CI) 构建产物(SBOM、签名) 验证构建者证书 + Rekor 条目
镜像签名 Cosign 生成的临时密钥对 容器镜像摘要 验证镜像签名与 Rekor 时间戳
部署验证 策略引擎(Kyverno、OPA) 镜像 + 签名 + 策略 策略评估 + 签名验证

信任传递的核心公式可抽象为:

信任(镜像) = 验证(签名(镜像摘要), 证书(身份)) ∧ 验证(证书, Fulcio根) ∧ 存在(Rekor条目)

3.3 签名与验证的信任传递机制

Sigstore 的信任传递机制通过三个组件协同工作,形成可审计、不可抵赖的信任链:

Sigstore 信任传递机制架构 开发者 / OIDC 身份 GitHub / Google / 微软 Fulcio 证书颁发 短期证书 (10分钟) Rekor 透明日志 不可篡改审计 请求证书 颁发证书 上传签名条目 Cosign 签名 镜像摘要 + 证书 镜像仓库 镜像 + 签名 + SBOM 策略引擎 Kyverno / OPA 推送签名 拉取验证 验证流程 1. 验证证书链 → 2. 查询 Rekor 条目 → 3. 匹配镜像摘要 4. 策略评估 → 5. 允许/拒绝部署 K8s 部署
信任传递关键点:
  • 短期证书:Fulcio 颁发的证书有效期通常为 10 分钟,降低密钥泄露风险。
  • 透明日志:Rekor 保证签名操作可审计,任何验证方都能独立验证签名存在性。
  • 无中心化信任:信任根分散在多个 OIDC 提供商和 Fulcio 实例上,避免单点故障。

3.4 信任边界适配策略

在企业环境中适配 Sigstore 信任边界时,需考虑以下架构决策:

场景 信任边界模型 Sigstore 适配方案 注意事项
公有云 SaaS 信任 Sigstore 公共服务 直接使用 sigstore.dev 服务 依赖外部网络,需考虑可用性
私有化部署 信任内部 PKI 自建 Fulcio + Rekor 实例 需维护根证书和日志集群
混合云 分层信任 内部签名 + 外部验证桥接 证书链交叉认证
离线环境 气隙信任 预分发根证书 + 本地 Rekor 日志同步策略

3.5 信任传递的工程验证

以下是一个完整的信任链验证命令示例,展示从镜像签名到部署验证的信任传递:

# 1. 使用 Cosign 签名镜像(自动获取 Fulcio 证书并记录到 Rekor)
cosign sign --yes ghcr.io/myorg/myapp:v1.0.0

# 2. 验证镜像签名(验证证书链 + Rekor 条目)
cosign verify \
  --certificate-identity-regexp ".*@myorg\.com" \
  --certificate-oidc-issuer-regexp "https://accounts\.google\.com" \
  ghcr.io/myorg/myapp:v1.0.0

# 3. 查询 Rekor 日志确认签名时间戳
rekor-cli search --sha256 $(cosign triangulate ghcr.io/myorg/myapp:v1.0.0 | cut -d@ -f2)

# 4. 策略引擎验证(Kyverno 集群策略示例)
kubectl apply -f - <<EOF
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: verify-sigstore
spec:
  validationFailureAction: Enforce
  rules:
    - name: verify-signature
      match:
        any:
          - resources:
              kinds:
                - Pod
      verifyImages:
        - imageReferences:
            - "ghcr.io/myorg/*"
          attestors:
            - entries:
                - keyless:
                    subject: ".*@myorg\\.com"
                    issuer: "https://accounts\\.google\\.com"
                    rekor:
                      url: https://rekor.sigstore.dev
EOF
信任边界陷阱:
  • 证书过期:Fulcio 短期证书过期后,Rekor 条目仍可验证,但需确保验证时使用正确的根证书。
  • 日志分叉:自建 Rekor 实例需配置监控,防止日志分叉导致验证失败。
  • OIDC 提供商变更:如果 OIDC 提供商更换签发密钥,需更新 Fulcio 信任配置。

3.6 信任边界模型总结

Sigstore 的信任边界模型通过以下机制实现零信任供应链安全:

  • 密码学身份:替代网络身份,每个签名操作都绑定到可验证的 OIDC 身份。
  • 透明日志:所有签名事件公开可查,提供不可抵赖性。
  • 短期凭证:最小化密钥泄露影响范围。
  • 策略驱动验证:部署时强制验证,确保只有经过签名的镜像才能运行。