核心概念

供应链安全

供应链安全是指保护软件开发生命周期从开发到部署的完整性、安全性和可靠性。Tekton Chains 旨在解决供应链安全问题,通过提供机制来验证 CI/CD 管道生成的工件是否未被篡改并且可以信任。

源头

源头是包含关于软件工件的可验证信息的元数据,描述了它们的构建方式、所使用的源以及构建者。在 Tekton Chains 中,源头经过加密签名,以确保其完整性和真实性。

在 Tekton Chains 中有两种类型的源头:

  • 任务级源头:捕获特定 TaskRun 执行的详细信息
  • 管道级源头:捕获整个 PipelineRun 执行的过程,包括所有子 TaskRuns

SLSA 框架

SLSA(Supply-chain Levels for Software Artifacts)是一个安全框架,提供了一份标准和控制的清单,以防止篡改、提高完整性并保护包和基础设施。Tekton Chains 支持多种 SLSA 源头格式:

  • SLSA v0.2:通过 slsa/v1in-toto 格式处理
  • SLSA v1.0:通过 slsa/v2alpha3slsa/v2alpha4 格式处理

工件

在 Tekton Chains 中,工件指的是构建过程中的输入和输出:

  • 输入工件:影响构建过程的资源,如源代码库和依赖项
  • 输出工件:构建过程中生成的资源,如容器镜像

类型提示

类型提示是 Tekton Chains 用于了解 TaskRun 或 PipelineRun 的输入和输出工件的机制。类型提示是遵循特定格式的特殊命名参数或结果:

  • 对于 Git 输入:CHAINS-GIT_URLCHAINS-GIT_COMMIT
  • 对于通用输入:后缀为 ARTIFACT_INPUTS 的参数或结果
  • 对于镜像输出:IMAGES 或后缀为 IMAGE_URLIMAGE_DIGEST 的参数/结果
  • 对于通用输出:后缀为 ARTIFACT_OUTPUTS 的参数或结果

签名

签名是加密签署源头以确保其完整性和真实性的过程。Tekton Chains 支持多种签名方法:

  • x509:使用标准的 x509 证书和私钥
  • Cosign:使用 Sigstore 的 Cosign 工具进行签名
  • KMS:使用云提供商的密钥管理服务
  • 无密钥:使用 Fulcio 证书颁发机构的临时密钥

存储后端

存储后端是 Tekton Chains 存储生成的源头和签名的地方。支持的后端包括:

  • Tekton:作为 TaskRun/PipelineRun 上的注释进行存储
  • OCI:存储在与容器镜像一起的 OCI 注册表中
  • GCS:存储在 Google Cloud Storage 中
  • DocDB:存储在文档数据库中
  • Grafeas:存储在 Grafeas/容器分析中

控制器

Tekton Chains 控制器是核心组件,观察 TaskRun 和 PipelineRun 的执行,捕获相关信息,并生成、签署和存储源头。它作为 Kubernetes 部署在 tekton-pipelines 命名空间中运行。