Tekton Chains 是一个 Kubernetes 自定义资源定义(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 中配置,且由于验证 webhook 的限制,无法在 TektonConfig
中配置。
如果遇到此问题,您需要禁用 TektonConfig
对 Chains
的自动部署,并手动创建 TektonHub
资源。
下面是配置 Chains 的不同方式的简单示例。
chains-config
ConfigMap 中配置以下是 chains-config
ConfigMap 的示例:
提示: 布尔值是字符串形式,如
"true"
或"false"
。
YAML 字段说明:
artifacts.oci.format
:证明的格式。artifacts.oci.storage
:证明的存储后端。artifacts.pipelinerun.format
:PipelineRun 证明的格式。artifacts.pipelinerun.storage
:PipelineRun 证明的存储后端。artifacts.taskrun.format
:TaskRun 证明的格式。artifacts.taskrun.storage
:TaskRun 证明的存储后端。在 TektonConfig
资源中,Chains 的配置大致如下:
提示: 布尔值为原始类型,如
true
或false
。
YAML 字段说明:
spec.chain
:此部分包含 Chains 的配置。
disabled
:是否禁用 Chains。
generateSigningSecret
:是否生成签名密钥。
controllerEnvs
:Tekton Chains 控制器的环境变量。
name
:环境变量名称。value
:环境变量值。options
:Tekton Chains 控制器的选项。
deployments.tekton-chains-controller
:Tekton Chains 控制器的部署选项。
spec.template.spec.containers.env.SIGSTORE_ID_TOKEN
:Tekton Chains 控制器的 ID 令牌。TektonChains
中,最终会同步到 chains-config
ConfigMap。
artifacts.oci.format
artifacts.oci.storage
artifacts.pipelinerun.format
artifacts.pipelinerun.storage
artifacts.taskrun.format
artifacts.taskrun.storage
storage.oci.repository.insecure
signers.x509.fulcio.address
signers.x509.fulcio.issuer
transparency.enabled
transparency.url
键 | 描述 | 支持的值 | 默认值 |
---|---|---|---|
artifacts.taskrun.format | 存储 TaskRun 负载的格式。 | in-toto, slsa/v1, slsa/v2alpha3, slsa/v2alpha4 | in-toto |
artifacts.taskrun.storage | 存储 TaskRun 签名的存储后端。可用多个后端,用逗号分隔("tekton,oci")。要禁用 TaskRun 证明输入,使用空字符串 ("")。 | tekton, oci, gcs, docdb, grafeas, archivista | tekton |
artifacts.taskrun.signer | 用于签署 TaskRun 负载的签名后端。 | x509, kms | x509 |
说明
slsa/v1
是 in-toto
的别名,用于向后兼容。oci
,证明将与存储的 OCI 工件一起存储。更多信息请参见 cosign documentation。tekton
,证明将存储在 Tekton TaskRun
的注解中。与 TaskRun 类似,您可以配置 PipelineRun 的签名和存储。
键 | 描述 | 支持的值 | 默认值 |
---|---|---|---|
artifacts.pipelinerun.format | 存储 PipelineRun 负载的格式。 | in-toto, slsa/v1, slsa/v2alpha3, slsa/v2alpha4 | in-toto |
artifacts.pipelinerun.storage | 存储 PipelineRun 签名的存储后端。可用多个后端,用逗号分隔("tekton,oci")。要禁用 PipelineRun 证明输入,使用空字符串 ("")。 | tekton, oci, gcs, docdb, grafeas, archivista | tekton |
artifacts.pipelinerun.signer | 用于签署 PipelineRun 负载的签名后端。 | x509, kms | x509 |
artifacts.pipelinerun.enable-deep-inspection | 此布尔选项配置 Chains 是否应检查子 TaskRun,以捕获 PipelineRun 中的输入/输出。设置为 "false" 表示 Chains 仅检查流水线级别结果,"true" 表示 Chains 同时检查流水线级别和任务级别结果。 | "true", "false" | "false" |
oci
,证明将与存储的 OCI 工件一起存储。更多信息请参见 cosign documentation。tekton
,证明将存储在 Tekton PipelineRun
的注解中。键 | 描述 | 支持的值 | 默认值 |
---|---|---|---|
artifacts.oci.format | 存储 OCI 负载的格式。 | simplesigning | simplesigning |
artifacts.oci.storage | 存储 OCI 签名的存储后端。可用多个后端,用逗号分隔("oci,tekton")。要禁用 OCI 证明输入,使用空字符串 ("")。 | tekton, oci | oci |
artifacts.oci.signer | 用于签署 OCI 负载的签名后端。 | x509, kms | x509 |
oci
,证明将与存储的 OCI 工件一起存储。更多信息请参见 cosign documentation。tekton
,证明将存储在 Tekton TaskRun
或 PipelineRun
的注解中。Chains 支持多种存储后端来存储证明和签名。以下列出了一些常见的存储后端,更多详细配置请参见 Storage Configuration
键 | 描述 | 支持的值 | 默认值 |
---|---|---|---|
storage.oci.repository | 存储 OCI 签名和证明的 OCI 仓库 | 如果未定义,且 artifacts.{oci,taskrun}.storage 中包含 oci 存储,证明将与存储的 OCI 工件一起存储。(GCP 示例)定义此值后,OCI 包将存储在指定位置,而非与镜像并存。更多信息请参见 cosign 文档。 | |
storage.oci.repository.insecure | 连接 OCI 仓库时是否使用不安全连接 | true , false | false |
说明
storage.oci.repository.insecure
设置为 true
,以允许不安全连接。键 | 描述 | 支持的值 | 默认值 |
---|---|---|---|
transparency.enabled | 是否启用透明日志。 | "true", "false" | "false" |
transparency.url | 透明日志的 URL。 | "https://rekor.sigstore.dev" |
注意: 如果 transparency.enabled 设置为 manual,则只有带有以下注解的 TaskRun 和 PipelineRun 会上传到透明日志:
键 | 描述 | 支持的值 | 默认值 |
---|---|---|---|
signers.x509.fulcio.enabled | 是否启用来自 fulcio 的自动证书。 | "true", "false" | "false" |
signers.x509.fulcio.address | 如果启用,向 Fulcio 请求证书的地址。 | "https://fulcio.sigstore.dev" | |
signers.x509.fulcio.issuer | 预期的 OIDC 发行者。 | "https://oauth2.sigstore.dev/auth" | |
signers.x509.fulcio.provider | 请求 ID 令牌的提供者 | "google", "spiffe", "github", "filesystem" | 未设置时将尝试所有提供者。 |
signers.x509.identity.token.file | 包含 ID 令牌的文件路径。 | ||
signers.x509.tuf.mirror.url | TUF 服务器 URL。期望存在 $TUF_URL/root.json。 | "https://sigstore-tuf-root.storage.googleapis.com" |