4.2. Enterprise Contract と Red Hat Trusted Artifact Signer によるコンテナーイメージ署名の検証
Red Hat Trusted Artifact Signer (RHTAS) サービスをインストールすると、ec バイナリーファイルを使用して、RHTAS サービスのキーレス署名フレームワークを使用するコンテナーイメージのアテステーションと署名を検証できます。RHTAS のインストールに関する詳細は、Operator Lifecycle Manager を使用した Red Hat Trusted Artifact Signer のインストール を参照してください。
前提条件
- バージョン 4.13 以降の OpenShift 上で実行中の動作している RHTAS インストール。
- OpenShift Web コンソールへのアクセス。
-
cosignおよびocバイナリーファイルがインストールされたワークステーション。
手順
OpenShift クラスターから
ecバイナリーファイルをダウンロードします。- OpenShift Web コンソール にログインします。ホームページから、右上の ? アイコンをクリックし、Command Line Tools を選択します。
- ec download セクションから、プラットフォームのリンクをクリックします。
ターミナルを開き、
.gzファイルを展開し、ecバイナリーファイルに実行ビットを設定します。Linux および macOS の例
-
$ gunzip ec-amd64.gz -
$ chmod +x ec-amd64
-
ecバイナリーファイルを$PATH環境内のディレクトリーに移動します。例
$ sudo mv ec-amd64 /usr/local/bin/ec
他のイメージ検証コマンドオプションをすべて確認するには、ec validate image --help コマンドを実行します。
コンテナーイメージの署名および検証用にシェル環境を設定します。
ターミナルを開き、
sigstore-ocpディレクトリーからtas-env-variables.shスクリプトを実行します。例
cd sigstore-ocp source tas-env-variables.sh
cd sigstore-ocp source tas-env-variables.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) 環境変数を手動で設定します。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
$ source ./tas-env-vars.sh
The Update Framework (TUF) システムを初期化します。
例
cosign initialize --mirror=$TUF_URL --root=$TUF_URL/root.jsonコンテナーイメージに署名します。
構文
cosign sign -y --fulcio-url=$FULCIO_URL --rekor-url=$REKOR_URL --oidc-issuer=$OIDC_ISSUER_URL IMAGE_NAME例
cosign sign -y --fulcio-url=$FULCIO_URL --rekor-url=$REKOR_URL --oidc-issuer=$OIDC_ISSUER_URL example-hello-world@sha256:2788a47fd0ef1ece30898c1e608050ea71036d3329b9772dbb3d1f69313f745c表示される Web ブラウザーで、メールアドレスを使用してコンテナーイメージに署名します。
predicate.jsonファイルを作成します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow predicate.jsonファイルをコンテナーイメージに関連付けます。構文
cosign attest -y --predicate ./predicate.json \ --type slsaprovenance IMAGE_NAME:TAG
cosign attest -y --predicate ./predicate.json \ --type slsaprovenance IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
cosign attest -y --predicate ./predicate.json \ --type slsaprovenance example.io/hello-world:latest
$ cosign attest -y --predicate ./predicate.json \ --type slsaprovenance example.io/hello-world:latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーイメージにアテステーションと署名が 1 つ以上含まれていることを確認します。
構文
cosign tree IMAGE_NAME:TAG例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enterprise Contract でコンテナーイメージを検証します。
構文
ec validate image --image IMAGE_NAME:TAG \ --certificate-identity-regexp 'SIGNER_EMAIL_ADDR' \ --certificate-oidc-issuer-regexp 'keycloak-keycloak-system' \ --output yaml --show-successes
ec validate image --image IMAGE_NAME:TAG \ --certificate-identity-regexp 'SIGNER_EMAIL_ADDR' \ --certificate-oidc-issuer-regexp 'keycloak-keycloak-system' \ --output yaml --show-successesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enterprise Contract は、セキュリティー違反の詳細を含む合格/不合格レポートを生成します。
--infoフラグを追加すると、違反に関する詳細と考えられる解決策がレポートに追加されます。