1.5. 创建和验证任务运行签名而无需任何其他身份验证

要验证使用 Tekton 链与任何其他身份验证一起运行的任务的签名,请执行以下任务:

  • 创建加密的 x509 密钥对,并将它保存为 Kubernetes secret。
  • 配置 Tekton Chains 后端存储。
  • 创建任务运行,为它签名并将签名和有效负载存储为任务运行自身时的注解。
  • 从已签名任务运行中检索签名和有效负载。
  • 验证任务运行的签名。

先决条件

确保在集群中安装了以下组件:

  • Red Hat OpenShift Pipelines Operator
  • Tekton Chains
  • Cosign

流程

  1. 创建加密的 x509 密钥对,并将它保存为 Kubernetes secret。有关创建密钥对并将其保存为 secret 的更多信息,请参阅 "Signing secrets in Tekton Chains"。
  2. 在 Tekton Chains 配置中,禁用 OCI 存储,并将任务运行存储和格式设置为 tekton。在 TektonConfig 自定义资源中设置以下值:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    # ...
        chain:
          artifacts.oci.storage: ""
          artifacts.taskrun.format: tekton
          artifacts.taskrun.storage: tekton
    # ...

    有关使用 TektonConfig 自定义资源配置 Tekton 链的更多信息,请参阅"配置 Tekton 链"。

  3. 要重启 Tekton Chains 控制器以确保应用了修改后的配置,请输入以下命令:

    $ oc delete po -n openshift-pipelines -l app=tekton-chains-controller
  4. 输入以下命令来创建任务运行:

    $ oc create -f https://raw.githubusercontent.com/tektoncd/chains/main/examples/taskruns/task-output-image.yaml 1
    1
    将示例 URI 替换为指向任务运行的 URI 或文件路径。

    输出示例

    taskrun.tekton.dev/build-push-run-output-image-qbjvh created

  5. 输入以下命令来检查步骤的状态。等待进程完成。

    $ tkn tr describe --last

    输出示例

    [...truncated output...]
    NAME                            STATUS
    ∙ create-dir-builtimage-9467f   Completed
    ∙ git-source-sourcerepo-p2sk8   Completed
    ∙ build-and-push                Completed
    ∙ echo                          Completed
    ∙ image-digest-exporter-xlkn7   Completed

  6. 要从存储为 base64 编码注解的对象检索签名,请输入以下命令:

    $ tkn tr describe --last -o jsonpath="{.metadata.annotations.chains\.tekton\.dev/signature-taskrun-$TASKRUN_UID}" | base64 -d > sig
    $ export TASKRUN_UID=$(tkn tr describe --last -o  jsonpath='{.metadata.uid}')
  7. 要使用您创建的公钥验证签名,请输入以下命令:
$ cosign verify-blob-attestation --insecure-ignore-tlog --key path/to/cosign.pub --signature sig --type slsaprovenance --check-claims=false /dev/null 1
1
path/to/cosign.pub 替换为公钥文件的路径名。

输出示例

Verified OK

1.5.1. 其他资源