第5章 コンテナーイメージのアテストと検証
Enterprise Contract によって署名済みコンテナーイメージを検証する前に、まず SLSA 来歴を作成し、それをコンテナーイメージに関連付ける必要があります。来歴とは、サプライチェーン内の特定のソフトウェア "リンク" がどこで、いつ、どのように作成されたかなど、ソフトウェアアーティファクトに関する検証可能な情報です。Supply-chain Levels for Software Artifacts (SLSA) の来歴の詳細は、SLSA Provenance を参照してください。
前提条件
- 署名済みのコンテナーイメージ。
- OpenShift Web コンソールへのアクセス。
- バージョン 4.13 以降の OpenShift 上で実行中の動作している Red Hat Trusted Artifact Signer インストール。
-
cosign
およびoc
バイナリーファイルがインストールされたワークステーション。
手順
SLSA 来歴ファイル
predicate.json
を作成します。以下に例を示します。echo '{ "builder": { "id": "https://localhost/dummy-id" }, "buildType": "https://localhost/dummy-type", "invocation": {}, "buildConfig": {}, "metadata": { "buildStartedOn": "2023-09-25T16:26:44Z", "buildFinishedOn": "2023-09-25T16:28:59Z", "completeness": { "parameters": false, "environment": false, "materials": false }, "reproducible": false }, "materials": [] } ' > predicate.json
作成した
predicate.json
ファイルに署名してアテストします。以下に例を示します。cosign attest -y --fulcio-url=$FULCIO_URL \ --rekor-url=$REKOR_URL \ --oidc-issuer=$OIDC_ISSUER_URL \ --predicate predicate.json \ --type slsaprovenance $IMAGE
Keycloak が開き、コンテナーイメージに署名したときのログインに基づいて自動的に認証されます。
Enterprise Contract を使用して署名とアテステーションを検証します。以下に例を示します。
ec validate image --image $IMAGE \ --certificate-identity-regexp '.*' \ --certificate-oidc-issuer-regexp '.*' \ --output yaml --show-successes
ec validate image
コマンドを実行するときは、各署名が期待される identity
と一致するように、できるだけ詳細に指定してください。
検証
- Enterprise Contract によってコンテナーイメージが検証され、Enterprise Contract のすべての検証と署名に関する詳細なレポートが開きます。
関連情報
- Red Hat Trusted Artifact Signer の詳細、特に RHTAP および Enterprise Contract との連携方法は、Red Hat Trusted Artifact Signer デプロイメント を参照してください。
- SLSA の詳細は、slsa.dev を参照してください。
- Keycloak の詳細は、keycloak.org を参照してください。