(可选)无密钥签名验证
TIP
- 如果您对无密钥签名验证感兴趣,可以继续阅读以下内容。
- 本章内容需要能够访问公共网络。
- 但如果您已经部署了私有 Rekor 服务,也可以使用这些服务。
NOTE
目前,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:基本设置
这些步骤与快速入门:已签名的来源证明指南完全相同。请按照该指南中的说明执行以下操作:
-
配置 Tekton Chains 的透明日志
TIP
- 如果您使用的是私有 Rekor 服务,可以将
transparency.url设置为您的 Rekor 服务器 URL。transparency.url: "<https://rekor.sigstore.dev>"
有关配置的更多详细信息,请参阅透明日志
步骤 4:重新运行流水线以生成镜像
TIP
- 由于我们修改了透明日志配置,因此需要在已签名的来源证明中触发新的流水线运行。
- 这样 Tekton Chains 就可以为新的镜像和 PipelineRun 生成透明日志条目。
步骤 5:获取 Rekor 日志索引
从 PipelineRun 的注解中获取 Rekor 日志索引。
步骤 6:通过 curl 获取 Rekor 签名
如果需要查看 Rekor 签名的内容,可以执行以下命令:
此内容与镜像中的声明相同,可用于验证镜像内容的真实性和完整性。 无需从镜像 registry 获取凭据即可从 Rekor 检索声明信息,因此验证过程更加便捷和易于访问。
步骤 7:通过 rekor-cli 获取 Rekor 签名
通过日志索引获取签名
通过镜像摘要获取签名
步骤 8:在 Kyverno 中验证 Rekor
修改 keys 的 ClusterPolicy 部分,以添加 Rekor 验证。
Explanation of YAML fields
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 实例,以增强安全性