供应链安全指的是保护从开发到部署的软件开发生命周期的完整性、安全性和可靠性。Tekton Chains 旨在通过提供机制来验证 CI/CD 流水线生成的工件未被篡改且可信,从而解决供应链安全问题。
SLSA(Supply-chain Levels for Software Artifacts)是一种安全框架,提供防止篡改、提升完整性以及保护包和基础设施的标准和控制清单。Tekton Chains 支持多种 SLSA 来源格式:
slsa/v1
或 in-toto
格式支持slsa/v2alpha3
和 slsa/v2alpha4
格式支持作为该框架的一部分,SLSA 设有多个保障等级。这些等级包含业界认可的最佳实践,形成四个逐级提升保障的等级。
路径/等级 | 要求 | 关注点 |
---|---|---|
Build L0 | (无) | (不适用) |
Build L1 | 显示包构建方式的来源 | 错误、文档 |
Build L2 | 签名的来源,由托管构建平台生成 | 构建后篡改 |
Build L3 | 加固的构建平台 | 构建期间篡改 |
Tekton 可实现 SLSA Level 2 合规。更多信息请参见 使用 Tekton 和 Tekton Chains 达到 SLSA Level 2
签名是对来源进行加密签名以确保其完整性和真实性的过程。Tekton Chains 支持多种签名方法:
镜像证明用于存储和验证与镜像相关的元数据信息。它提供更丰富的供应链安全信息,例如:
SLSA 来源 是包含可验证软件工件信息的元数据,描述了软件如何构建、使用了哪些源代码以及由谁构建。在 Tekton Chains 中,来源通过加密签名确保其完整性和真实性。
Tekton Chains 中有两种来源类型:
SBOM 是软件的嵌套清单,列出组成软件组件的“成分”,包括:
SBOM 可采用多种格式,例如:
Cosign 漏洞扫描结果 记录软件构建过程的安全评估,包括:
可根据需要添加自定义元数据以支持特定的安全需求。
例如,grype 可以生成漏洞扫描结果,这些结果可以作为自定义类型上传到镜像仓库。
验证机制高度灵活,可自定义以验证证明中存在的任何元数据。这意味着证明中存储的任何信息都可以作为验证标准,使组织能够根据其具体需求实施精确的安全控制。
证明验证的灵活性通过多种验证方法体现:
Kyverno JMESPath 验证
Rego 策略验证
CUE 验证
Tekton Chains 中的工件指构建过程的输入和输出:
类型提示是 Tekton Chains 用于理解 TaskRun 或 PipelineRun 的输入和输出工件的机制。类型提示是遵循特定格式的特殊命名参数或结果:
CHAINS-GIT_URL
和 CHAINS-GIT_COMMIT
ARTIFACT_INPUTS
的参数或结果IMAGES
或带有后缀 IMAGE_URL
和 IMAGE_DIGEST
的参数/结果ARTIFACT_OUTPUTS
的参数或结果存储后端是 Tekton Chains 存储生成的来源和签名的位置。支持的后端包括:
Tekton Chains 控制器是核心组件,负责观察 TaskRun 和 PipelineRun 的执行,捕获相关信息,并生成、签名和存储来源。它作为 Kubernetes 部署运行在 tekton-pipelines
命名空间中。