核心概念
供应链安全
供应链安全是指保护软件开发生命周期从开发到部署的完整性、安全性和可靠性。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/v1或in-toto格式处理 - SLSA v1.0:通过
slsa/v2alpha3和slsa/v2alpha4格式处理
工件
在 Tekton Chains 中,工件指的是构建过程中的输入和输出:
- 输入工件:影响构建过程的资源,如源代码库和依赖项
- 输出工件:构建过程中生成的资源,如容器镜像
类型提示
类型提示是 Tekton Chains 用于了解 TaskRun 或 PipelineRun 的输入和输出工件的机制。类型提示是遵循特定格式的特殊命名参数或结果:
- 对于 Git 输入:
CHAINS-GIT_URL和CHAINS-GIT_COMMIT - 对于通用输入:后缀为
ARTIFACT_INPUTS的参数或结果 - 对于镜像输出:
IMAGES或后缀为IMAGE_URL和IMAGE_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 命名空间中运行。