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 バイナリーファイルがインストールされたワークステーション。

手順

  1. OpenShift クラスターから ec バイナリーファイルをダウンロードします。

    1. OpenShift Web コンソール にログインします。ホームページから、右上の ? アイコンをクリックし、Command Line Tools を選択します。
    2. ec download セクションから、プラットフォームのリンクをクリックします。
    3. ターミナルを開き、.gz ファイルを展開し、ec バイナリーファイルに実行ビットを設定します。

      Linux および macOS の例

      • $ gunzip ec-amd64.gz
      • $ chmod +x ec-amd64
    4. ec バイナリーファイルを $PATH 環境内のディレクトリーに移動します。

      $ sudo mv ec-amd64 /usr/local/bin/ec

ヒント

他のイメージ検証コマンドオプションをすべて確認するには、ec validate image --help コマンドを実行します。

  1. コンテナーイメージの署名および検証用にシェル環境を設定します。

    1. ターミナルを開き、sigstore-ocp ディレクトリーから tas-env-variables.sh スクリプトを実行します。

      cd sigstore-ocp
      source tas-env-variables.sh
      Copy to Clipboard

    2. (オプション) 環境変数を手動で設定します。

      export OPENSHIFT_APPS_SUBDOMAIN=apps.$(oc get dns cluster -o jsonpath='{ .spec.baseDomain }')
      export OIDC_AUTHENTICATION_REALM=sigstore
      export FULCIO_URL=https://fulcio.$OPENSHIFT_APPS_SUBDOMAIN
      export OIDC_ISSUER_URL=https://keycloak-keycloak-system.$OPENSHIFT_APPS_SUBDOMAIN/auth/realms/$OIDC_AUTHENTICATION_REALM
      export REKOR_URL=https://rekor.$OPENSHIFT_APPS_SUBDOMAIN
      export TUF_URL=https://tuf.$OPENSHIFT_APPS_SUBDOMAIN
      Copy to Clipboard

      $ source ./tas-env-vars.sh

  2. Update Framework (TUF) システムを初期化します。

    cosign initialize --mirror=$TUF_URL --root=$TUF_URL/root.json

  3. コンテナーイメージに署名します。

    構文

    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 ブラウザーで、メールアドレスを使用してコンテナーイメージに署名します。

  4. predicate.json ファイルを作成します。

    {
      "builder": {
        "id": "https://localhost/dummy-id"
      },
      "buildType": "https://example.com/tekton-pipeline",
      "invocation": {},
      "buildConfig": {},
      "metadata": {
        "completeness": {
          "parameters": false,
          "environment": false,
          "materials": false
        },
        "reproducible": false
      },
      "materials": []
    }
    Copy to Clipboard

  5. predicate.json ファイルをコンテナーイメージに関連付けます。

    構文

    cosign attest -y --predicate ./predicate.json \
    --type slsaprovenance IMAGE_NAME:TAG
    Copy to Clipboard

    $ cosign attest -y --predicate ./predicate.json \
    --type slsaprovenance example.io/hello-world:latest
    Copy to Clipboard

  6. コンテナーイメージにアテステーションと署名が 1 つ以上含まれていることを確認します。

    構文

    cosign tree IMAGE_NAME:TAG

    $ cosign tree example.io/hello-world:latest
    📦 Supply Chain Security Related artifacts for an image: example.io/hello-world@sha256:7de5fa822a9d1e507c36565ee0cf50c08faa64505461c844a3ce3944d23efa35
    └── 💾 Attestations for an image tag: example.io/hello-world:sha256-7de5fa822a9d1e507c36565ee0cf50c08faa64505461c844a3ce3944d23efa35.att
       └── 🍒 sha256:40d94d96a6d3ab3d94b429881e1b470ae9a3cac55a3ec874051bdecd9da06c2e
    └── 🔐 Signatures for an image tag: example.io/hello-world:sha256-7de5fa822a9d1e507c36565ee0cf50c08faa64505461c844a3ce3944d23efa35.sig
       └── 🍒 sha256:f32171250715d4538aec33adc40fac2343f5092631d4fc2457e2116a489387b7
    Copy to Clipboard

  7. 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
    Copy to Clipboard

    $ ec validate image --image example.io/hello-world:latest \
    --certificate-identity 'jdoe@example.com' \
    --certificate-oidc-issuer 'keycloak-keycloak-system' \
    --output yaml --show-successes
    
    success: true
    successes:
      - metadata:
          code: builtin.attestation.signature_check
        msg: Pass
      - metadata:
          code: builtin.attestation.syntax_check
        msg: Pass
      - metadata:
          code: builtin.image.signature_check
        msg: Pass
    ec-version: v0.1.2427-499ef12
    effective-time: "2024-01-21T19:57:51.338191Z"
    key: ""
    policy: {}
    success: true
    Copy to Clipboard

    Enterprise Contract は、セキュリティー違反の詳細を含む合格/不合格レポートを生成します。--info フラグを追加すると、違反に関する詳細と考えられる解決策がレポートに追加されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat