(可选)无密钥签名验证
TIP
- 如果你对无密钥签名验证感兴趣,可以继续阅读以下内容。
- 本章内容需要能够访问公网。
- 但如果你已经部署了私有 Rekor 服务,也可以使用这些能力。
虽然 ACP (Alauda Container Platform) 目前不提供部署私有 Rekor 实例的能力,但它提供与 Rekor 服务的集成能力。
这里我们以集成公共 Rekor 为例,介绍如何使用这些服务。 如果你已经部署了私有 Rekor 服务,请参考相关文档进行配置。
目录
功能概览使用场景前提条件流程概览分步说明步骤 1-3:基础设置步骤 4:重新运行流水线以生成镜像步骤 5:获取 rekor 日志索引步骤 6:通过 curl 获取 rekor 签名步骤 7:通过 rekor-cli 获取 rekor 签名步骤 8:在 Kyverno 中验证 rekor预期结果参考资料功能概览
此方法通过透明日志来增强安全性,从而消除密钥管理的需要:
- 配置 Tekton Chains 使用无密钥签名。
- 使用
buildahTekton Task 构建镜像。 - 配置 Kyverno 规则以验证无密钥签名。
- 使用该镜像创建 Pod,以验证无密钥签名。
使用场景
以下场景需要参考本文档中的指导:
- 在 Kubernetes 集群中为容器镜像实现无密钥签名和验证
- 强制执行安全策略,在不管理签名密钥的情况下验证镜像签名
- 在 CI/CD 流水线中设置自动化透明日志验证
- 通过 Rekor 透明日志确保镜像来源和完整性
- 通过将镜像签名与公共 Rekor 服务进行比对,实施供应链安全控制
前提条件
- 已安装 Tekton Pipelines、Tekton Chains 和 Kyverno 的 Kubernetes 集群
- 已启用镜像推送的 registry
- 已安装并配置好可访问集群的
kubectlCLI - 已安装
cosignCLI 工具 - 已安装
jqCLI 工具 - 已安装
curl - 已安装 rekor-cli
- 用于验证和交互存储在 Rekor 透明日志服务器中的证明信息。
流程概览
分步说明
步骤 1-3:基础设置
这些步骤与 快速开始:已签名 Provenance 指南完全相同。请按照该指南完成以下内容:
-
配置 Tekton Chains 的透明日志
TIP
- 如果你有私有 Rekor 服务,可以将
transparency.url设置为你的 Rekor 服务器地址。transparency.url: "<https://rekor.sigstore.dev>"
有关该配置的更多细节,请参阅 透明日志
步骤 4:重新运行流水线以生成镜像
TIP
- 由于我们修改了透明日志配置,因此需要在 已签名 Provenance 中触发一次新的流水线运行。
- 这将使 Tekton Chains 为新的镜像和 PipelineRun 生成透明日志条目。
步骤 5:获取 rekor 日志索引
从 PipelineRun 的注解中获取 rekor 日志索引。
步骤 6:通过 curl 获取 rekor 签名
如果你需要查看 rekor 签名的内容,可以执行以下命令:
此内容与镜像中的 attestation 相同,可用于验证镜像内容的真实性和完整性。 可以直接从 Rekor 检索 attestation 信息,而无需使用镜像 registry 的凭据,这使得验证过程更加便捷且易于访问。
步骤 7:通过 rekor-cli 获取 rekor 签名
通过日志索引获取签名
通过镜像 digest 获取签名
步骤 8:在 Kyverno 中验证 rekor
修改 ClusterPolicy 的 keys 部分以添加 rekor 验证。
YAML 字段说明
rekor:rekor 验证配置。ignoreTlog:是否忽略透明日志。- 如果为
false,将验证 rekor 服务器。
- 如果为
url:rekor 服务器的 URL。- 如果未设置,将使用默认 rekor 服务器
https://rekor.sigstore.dev。
- 如果未设置,将使用默认 rekor 服务器
pubkey:签名者的公钥。- 如果未设置,将从 rekor 服务器获取公钥。
- 如果 rekor 服务器是私有的,则需要从 rekor 服务器获取公钥。
curl <https://rekor.sigstore.dev>/api/v1/log/publicKey
如果你的镜像未签名,Pod 将被阻止。
预期结果
完成本指南后:
- 你已经完成了一个可正常工作的 Tekton Chains 无密钥签名与 Rekor 集成环境
- 你的容器镜像会自动签名,且其签名会存储在 Rekor 透明日志中
- 无需管理签名密钥即可验证镜像签名
- 只有在 Rekor 中具有有效签名的镜像才能在指定命名空间中部署
- 你已经通过 Rekor 验证镜像签名,实现了无密钥供应链安全控制
本指南为在 CI/CD 流水线中实现无密钥签名和验证提供了基础。在生产环境中,你应当:
- 配置适当的命名空间隔离和访问控制
- 为签名验证失败设置监控和告警
- 定期审查和更新安全策略
- 考虑部署私有 Rekor 实例以增强安全性