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カスタムリソースで次の値を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow TektonConfigカスタムリソースを使用した Tekton チェーンの設定の詳細は、「Tekton チェーンの設定」を参照してください。Tekton Chains コントローラーを再起動して、変更した設定が確実に適用されるようにするには、次のコマンドを入力します。
oc delete po -n openshift-pipelines -l app=tekton-chains-controller
$ oc delete po -n openshift-pipelines -l app=tekton-chains-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力してタスク実行を作成します。
oc create -f https://raw.githubusercontent.com/tektoncd/chains/main/examples/taskruns/task-output-image.yaml
$ oc create -f https://raw.githubusercontent.com/tektoncd/chains/main/examples/taskruns/task-output-image.yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- サンプル URI を、タスクの実行を指す URI またはファイルパスに置き換えます。
出力例
taskrun.tekton.dev/build-push-run-output-image-qbjvh created
taskrun.tekton.dev/build-push-run-output-image-qbjvh createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、ステップのステータスを確認します。プロセスが完了するまで待ちます。
tkn tr describe --last
$ tkn tr describe --lastCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Base64でエンコードされたアノテーションとして保存されたオブジェクトから署名を取得するには、次のコマンドを入力します。tkn tr describe --last -o jsonpath="{.metadata.annotations.chains\.tekton\.dev/signature-taskrun-$TASKRUN_UID}" | base64 -d > sig$ tkn tr describe --last -o jsonpath="{.metadata.annotations.chains\.tekton\.dev/signature-taskrun-$TASKRUN_UID}" | base64 -d > sigCopy to Clipboard Copied! Toggle word wrap Toggle overflow export TASKRUN_UID=$(tkn tr describe --last -o jsonpath='{.metadata.uid}')$ export TASKRUN_UID=$(tkn tr describe --last -o jsonpath='{.metadata.uid}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 作成した公開鍵を使用して署名を検証するには、次のコマンドを入力します。
cosign verify-blob-attestation --insecure-ignore-tlog --key path/to/cosign.pub --signature sig --type slsaprovenance --check-claims=false /dev/null
$ cosign verify-blob-attestation --insecure-ignore-tlog --key path/to/cosign.pub --signature sig --type slsaprovenance --check-claims=false /dev/null
- 1
path/to/cosign.pubを公開鍵ファイルのパス名に置き換えます。出力例
Verified OK
Verified OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow