架构

Tekton Chains 架构概述

Tekton Chains 是一个 Kubernetes 自定义资源定义(CRD)控制器,旨在为 Tekton 流水线提供供应链安全功能。Tekton Chains 的架构由多个关键组件协同工作,以提供安全的工件签名和验证功能。

Tekton Chains 架构

注意:上述图示展示了 Tekton Chains 的高层架构。实际实现可能会根据配置有所不同。

核心组件

Tekton Chains 控制器

Tekton Chains 控制器是架构的核心组件。它作为一个 Kubernetes 控制器运行,负责以下功能:

  • 监控集群中的 TaskRun 和 PipelineRun 完成情况
  • 对已完成的 TaskRuns 和 PipelineRuns 进行快照
  • 处理这些快照以生成加密签名和证明
  • 将签名和证明存储在配置的存储后端中

该控制器作为一个 Kubernetes 部署运行在 tekton-chains 命名空间中,负责 Tekton Chains 的所有核心功能。

签名组件

Tekton Chains 支持多种签名机制,以提供工件保护的灵活性:

  • X509 签名器:使用 X509 证书对工件进行签名
  • Cosign 签名器:与 Cosign 集成进行容器镜像签名
  • KMS 签名器:支持多种密钥管理系统:
    • GCP KMS
    • AWS KMS
    • Azure KMS
    • HashiCorp Vault

这些签名组件负责对 Tekton Chains 生成的工件和证明进行加密签名。

存储组件

Tekton Chains 可以在多种后端中存储签名和证明:

  • Tekton 存储:将签名作为 TaskRun 或 PipelineRun 对象的注释存储
  • OCI 存储:在 OCI 兼容的注册表中将签名和证明与容器镜像一起存储
  • GCS 存储:在 Google Cloud Storage 存储桶中存储签名和证明
  • DocDB 存储:在文档数据库(例如 MongoDB、Firestore)中存储签名和证明
  • Grafeas 存储:在 Grafeas 服务器中存储签名和证明

数据流

Tekton Chains 的数据流遵循以下步骤:

  1. 观察:Chains 控制器观察 Kubernetes 集群中的 TaskRun 和 PipelineRun 执行情况。

  2. 快照创建:当 TaskRun 或 PipelineRun 完成时,控制器会对其状态进行快照,包括输入、输出和执行细节。

  3. 格式转换:快照被转换为一个或多个标准负载格式(例如,in-toto 证明,SLSA 来源)。

  4. 签名:使用配置的签名机制对格式化的负载进行签名(X509、Cosign、KMS)。

  5. 存储:将签名的负载存储在配置的存储后端中。

  6. 验证:外部工具可以稍后检索并验证这些签名,以确保工件的完整性。

SLSA 来源生成

对于 SLSA(软件工件供应链级别)来源,Tekton Chains:

  1. 从 TaskRun 结果提取输入工件(源代码、依赖项)的信息
  2. 捕获构建环境和过程的细节
  3. 记录输出工件(容器镜像、二进制文件)信息
  4. 生成标准化的 SLSA 来源文档
  5. 签署来源文档
  6. 将签署的来源文档与工件一起存储或存储在指定位置

部署架构

Tekton Chains 作为 Kubernetes 控制器部署在集群中:

  • 命名空间:控制器运行在 tekton-chains 命名空间中
  • 部署:单个部署管理控制器 Pods
  • 服务账户:控制器使用具有适当权限的专用服务账户
  • 配置:通过名为 chains-config 的 ConfigMap 管理配置
  • 密钥:签名密钥和凭证作为 Kubernetes 密钥存储

高可用性考虑

Tekton Chains 控制器可以横向扩展以实现高可用性:

  • 可以部署多个副本以实现冗余
  • 领导者选举确保只有一个实例同时处理事件
  • 通过 Kubernetes 资源保持状态,从而实现无缝故障转移

集成点

Tekton Chains 与多个外部系统集成:

  • Tekton Pipelines:观察来自 Tekton Pipelines 的 TaskRuns 和 PipelineRuns
  • OCI 注册表:将签名和证明与容器镜像一起存储
  • 密钥管理系统:与各种 KMS 提供商集成以实现安全密钥管理
  • 透明日志:可以将证明发布到诸如 Rekor 的透明日志
  • 验证系统:提供可由如 Kyverno、OPA 或 Cosign 的系统验证的签名

该架构使 Tekton Chains 能够提供全面的供应链安全功能,同时保持部署和配置的灵活性。