Chains 配置
目录
概述配置在chains-config ConfigMap 中配置在 TektonConfig 中配置TaskRun 配置PipelineRun 配置OCI 配置存储配置Sigstore 功能配置Transparency Log使用 Fulcio 进行无密钥签名参考概述
Tekton Chains 是一个 Kubernetes Custom Resource Definition (CRD) 控制器,用于让你在 Tekton 中管理供应链安全。本文档介绍如何配置 Tekton Chains。
配置
Chains 配置存储在 tekton-pipelines 或 tekton-chains 命名空间中名为 chains-config 的 ConfigMap 里。你可以修改这个 ConfigMap 来改变 Chains 的行为。
默认情况下,Tekton Chains 会通过 TektonConfig 资源自动部署。你可以修改 TektonConfig 资源来配置 Chains。
本质上,Tekton Operator 会将 Chains 配置从 TektonConfig 资源同步到 TektonChains 资源,并最终反映到 chains-config ConfigMap 中。
如果你通过 TektonConfig 部署 Chains,就必须通过 TektonConfig 配置 Chains。
如果你只修改 chains-config ConfigMap 中的配置,而它没有同步到 TektonChains 资源,配置可能会丢失。
当 TektonConfig 中的配置发生变化,或因其他原因触发一次调谐时,chains-config ConfigMap 中的配置将被覆盖。
不过,某些高级配置只支持在 chains-config ConfigMap 中设置,由于 validation webhook 的限制,无法在 TektonConfig 中配置。
如果你遇到这个问题,需要禁用 TektonConfig 对 Chains 的自动部署,并手动创建一个 TektonHub 资源。
下面简单演示配置 Chains 的不同方式。
在 chains-config ConfigMap 中配置
以下是 chains-config ConfigMap 的示例:
布尔值是字符串,例如 "true" 或 "false"。
Explanation of YAML fields
artifacts.oci.format: 证明的格式。artifacts.oci.storage: 证明的存储后端。artifacts.pipelinerun.format: PipelineRun 证明的格式。artifacts.pipelinerun.storage: PipelineRun 证明的存储后端。artifacts.taskrun.format: TaskRun 证明的格式。artifacts.taskrun.storage: TaskRun 证明的存储后端。
在 TektonConfig 中配置
在 TektonConfig 资源中,Chains 的配置大致如下:
布尔值使用原始类型,例如 true 或 false。
Explanation of YAML fields
spec.chain: 此部分包含 Chains 的配置。disabled: 是否禁用 Chains。- 此配置是 TektonConfig 独有的,在 TektonChains 中不存在。
generateSigningSecret: 是否生成 signing secret。- 此配置是 TektonConfig 独有的,在 TektonChains 中不存在。
controllerEnvs: Tekton Chains controller 的环境变量。- 此配置是 TektonConfig 独有的,在 TektonChains 中不存在。
name: 环境变量的名称。value: 环境变量的值。
options: Tekton Chains controller 的选项。- 此配置是 TektonConfig 独有的,在 TektonChains 中不存在。
deployments.tekton-chains-controller: Tekton Chains controller 的部署选项。spec.template.spec.containers.env.SIGSTORE_ID_TOKEN: Tekton Chains controller 的 ID token。
- 更详细的支持信息可见于 Additional fields as options
- 以下配置也存在于
TektonChains中,并且最终会同步到chains-configConfigMap。artifacts.oci.formatartifacts.oci.storageartifacts.pipelinerun.formatartifacts.pipelinerun.storageartifacts.taskrun.formatartifacts.taskrun.storagestorage.oci.repository.insecuresigners.x509.fulcio.addresssigners.x509.fulcio.issuertransparency.enabledtransparency.url
TaskRun 配置
说明
slsa/v1是in-toto的别名,用于向后兼容。- 如果存储类型是
oci,attestations 将与已存储的 OCI artifact 本身一起保存。更多信息请参见 cosign documentation。 - 如果存储类型是
tekton,attestations 将存储在 TektonTaskRun的 annotations 中。
PipelineRun 配置
与 TaskRun 类似,你可以配置 PipelineRun 的签名和存储。
- 如果存储类型是
oci,attestations 将与已存储的 OCI artifact 本身一起保存。更多信息请参见 cosign documentation。 - 如果存储类型是
tekton,attestations 将存储在 TektonPipelineRun的 annotations 中。
OCI 配置
- 如果存储类型是
oci,attestations 将与已存储的 OCI artifact 本身一起保存。更多信息请参见 cosign documentation。 - 如果存储类型是
tekton,attestations 将存储在 TektonTaskRun或PipelineRun的 annotations 中。
存储配置
Chains 支持多个用于存储 attestations 和 signatures 的存储后端。 下面列出了一些更常见的存储后端;如需更详细的配置,请参见 Storage Configuration
说明
- 如果你的 OCI repository 使用自签名证书,需要将
storage.oci.repository.insecure设置为true,以允许不安全连接。
Sigstore 功能配置
Transparency Log
注意: 如果 transparency.enabled 设置为 manual,则只有带有以下 annotation 的 TaskRuns 和 PipelineRuns 才会上传到 transparency log: