1.5. 追加認証なしでタスク実行の署名を作成および検証する
追加認証を使用して Tekton Chains でタスク実行の署名を検証するには、次のタスクを実行します。
- 暗号化された x509 キーペアを作成し、Kubernetes シークレットとして保存します。
- Tekton Chains バックエンドストレージを設定します。
- タスク実行を作成して署名し、署名とペイロードをタスク実行自体にアノテーションとして保存します。
- 署名されたタスクの実行から署名とペイロードを取得します。
- タスク実行の署名を確認します。
前提条件
次のコンポーネントがクラスターにインストールされていることを確認する。
- Red Hat OpenShift Pipelines Operator
- Tekton Chains
- Cosign
手順
- 暗号化された x509 キーペアを作成し、Kubernetes シークレットとして保存します。鍵ペアの作成とシークレットとしての保存の詳細は、「Tekton Chains でのシークレットの署名」を参照してください。
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 チェーンの設定」を参照してください。Tekton Chains コントローラーを再起動して、変更した設定が確実に適用されるようにするには、次のコマンドを入力します。
$ oc delete po -n openshift-pipelines -l app=tekton-chains-controller
次のコマンドを入力してタスク実行を作成します。
$ 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
次のコマンドを入力して、ステップのステータスを確認します。プロセスが完了するまで待ちます。
$ 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
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}')
- 作成した公開鍵を使用して署名を検証するには、次のコマンドを入力します。
$ 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