1.2. 信頼できるアーティファクト署名のインストールの確認


システム管理者として、Red Hat OpenShift Container Platform 上で実行されている Red Hat Trusted Artifact Signer (RHTAS) のデプロイメントを確認できます。

テストコンテナーイメージに署名し、その署名の信頼性を検証して、環境内での RHTAS のデプロイメントを検証できます。

コードパイプラインからアーティファクトビルドに署名する方法は 2 つ、検証する方法は 3 つあります。cosigngitsign を使用して署名および検証できますが、検証できるのは Enterprise Contract のみです。

1.2.1. コマンドラインインターフェイスから Cosign を使用したコンテナーの署名と検証

cosign ツールを使用すると、Red Hat の Trusted Artifact Signer (RHTAS) サービスを使用して、Open Container Initiative (OCI) コンテナーイメージや他のビルドアーティファクトに署名し、検証する機能が提供されます。

重要

RHTAS の場合、cosign バージョン 2.2 以降を使用する必要があります。

前提条件

  • Red Hat OpenShift Container Platform 4.15 以降への RHTAS インストール。
  • OpenShift Web コンソールへのアクセス。
  • oc および podman バイナリーがインストールされたワークステーション。

手順

  1. OpenShift クラスターからワークステーションに cosign バイナリーをダウンロードします。

    1. OpenShift Web コンソールにログインします。ホームページから ? アイコンをクリックして、Command line tools をクリックし、cosign ダウンロードセクションに移動し、プラットフォームのリンクをクリックします。
    2. ワークステーションでターミナルを開き、バイナリー .gz ファイルを展開し、実行ビットを設定します。

      Copy to Clipboard Toggle word wrap
      gunzip cosign-amd64.gz
      chmod +x cosign-amd64

    3. バイナリーを $PATH 環境内の場所に移動し、名前を変更します。

      Copy to Clipboard Toggle word wrap
      sudo mv cosign-amd64 /usr/local/bin/cosign

  2. OpenShift クラスターにログインします。

    構文

    Copy to Clipboard Toggle word wrap
    oc login --token=TOKEN --server=SERVER_URL_AND_PORT

    Copy to Clipboard Toggle word wrap
    oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443

    注記

    OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。

  3. RHTAS プロジェクトに切り替えます。

    構文

    Copy to Clipboard Toggle word wrap
    oc project PROJECT_NAME

    Copy to Clipboard Toggle word wrap
    oc project trusted-artifact-signer

    注記

    RHTAS インストールのプロジェクト名を使用します。

  4. コンテナーイメージの署名と検証を行うためにシェル環境を設定します。

    Copy to Clipboard Toggle word wrap
    export TUF_URL="https://tuf.${BASE_HOSTNAME}"
    export OIDC_ISSUER_URL=https://$(oc get route keycloak -n keycloak-system | tail -n 1 | awk '{print $2}')/auth/realms/trusted-artifact-signer
    export COSIGN_FULCIO_URL=$(oc get fulcio -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    export COSIGN_REKOR_URL=$(oc get rekor -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    export COSIGN_MIRROR=$TUF_URL
    export COSIGN_ROOT=$TUF_URL/root.json
    export COSIGN_OIDC_CLIENT_ID="trusted-artifact-signer"
    export COSIGN_OIDC_ISSUER=$OIDC_ISSUER_URL
    export COSIGN_CERTIFICATE_OIDC_ISSUER=$OIDC_ISSUER_URL
    export COSIGN_YES="true"
    export SIGSTORE_FULCIO_URL=$COSIGN_FULCIO_URL
    export SIGSTORE_OIDC_ISSUER=$COSIGN_OIDC_ISSUER
    export SIGSTORE_REKOR_URL=$COSIGN_REKOR_URL
    export REKOR_REKOR_SERVER=$COSIGN_REKOR_URL

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

    Copy to Clipboard Toggle word wrap
    cosign initialize

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

    1. 空のコンテナーイメージを作成します。

      Copy to Clipboard Toggle word wrap
      echo "FROM scratch" > ./tmp.Dockerfile
      podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h

    2. 空のコンテナーイメージを ttl.sh 一時レジストリーにプッシュします。

      Copy to Clipboard Toggle word wrap
      podman push ttl.sh/rhtas/test-image:1h

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

      構文

      Copy to Clipboard Toggle word wrap
      cosign sign -y IMAGE_NAME:TAG

      Copy to Clipboard Toggle word wrap
      cosign sign -y ttl.sh/rhtas/test-image:1h

      Web ブラウザーが開いて、コンテナーイメージをメールアドレスで署名できます。

    4. 一時的な Docker ファイルを削除します。

      Copy to Clipboard Toggle word wrap
      rm ./tmp.Dockerfile

  7. 証明書 ID と発行者を使用して、署名済みコンテナーイメージを確認します。

    構文

    Copy to Clipboard Toggle word wrap
    cosign verify --certificate-identity=SIGNING_EMAIL_ADDR IMAGE_NAME:TAG

    Copy to Clipboard Toggle word wrap
    cosign verify --certificate-identity=jdoe@redhat.com ttl.sh/rhtas/test-image:1h

    注記

    cosign コマンドと --certificate-identity-regexp および --certificate-oidc-issuer-regexp オプションを使用して、証明書の ID と発行者に正規表現を使用することもできます。

  8. OpenShift クラスターからワークステーションに rekor-cli バイナリーをダウンロードします。

    1. OpenShift Web コンソールにログインします。ホームページで ? アイコンをクリックし、Command line tools をクリックして rekor-cli ダウンロードセクションに移動し、プラットフォームのリンクをクリックします。
    2. ワークステーションでターミナルを開き、バイナリー .gz ファイルを展開し、実行ビットを設定します。

      Copy to Clipboard Toggle word wrap
      gunzip rekor-cli-amd64.gz
      chmod +x rekor-cli-amd64

    3. バイナリーを $PATH 環境内の場所に移動し、名前を変更します。

      Copy to Clipboard Toggle word wrap
      sudo mv rekor-cli-amd64 /usr/local/bin/rekor-cli

  9. Rekor コマンドラインインターフェイスを使用して透明性ログをクエリーします。

    1. ログインデックスに基づき検索します。

      Copy to Clipboard Toggle word wrap
      rekor-cli get --log-index 0 --rekor_server $COSIGN_REKOR_URL --format json | jq

    2. ユニバーサルユニーク ID (UUID) を取得するために、メールアドレスを検索します。

      構文

      Copy to Clipboard Toggle word wrap
      rekor-cli search --email SIGNING_EMAIL_ADDR --rekor_server $COSIGN_REKOR_URL --format json | jq

      Copy to Clipboard Toggle word wrap
      rekor-cli search --email jdoe@redhat.com --rekor_server $COSIGN_REKOR_URL --format json | jq

      このコマンドは、次の手順で使用する UUID を返します。

    3. UUID を使用してトランザクションの詳細を取得します。

      構文

      Copy to Clipboard Toggle word wrap
      rekor-cli get --uuid UUID --rekor_server $COSIGN_REKOR_URL --format json | jq

      Copy to Clipboard Toggle word wrap
      rekor-cli get --uuid 24296fb24b8ad77a71b9c1374e207537bafdd75b4f591dcee10f3f697f150d7cc5d0b725eea641e7 --rekor_server $COSIGN_REKOR_URL --format json | jq

1.2.2. コマンドラインインターフェイスから Gitsign を使用したコミットの署名および検証

gitsign ツールを使用すると、Red Hat の Trusted Artifact Signer (RHTAS) サービスを使用して、Git リポジトリーのコミットに署名し、検証することができます。

前提条件

  • Red Hat OpenShift Container Platform 4.15 以降への RHTAS インストール。
  • OpenShift Web コンソールへのアクセス。
  • ocgitcosign バイナリーがインストールされたワークステーション。

    • cosign バージョン 2.2 以降を使用する必要があります。

手順

  1. OpenShift クラスターからワークステーションに gitsign バイナリーをダウンロードします。

    1. OpenShift Web コンソールにログインします。ホームページから、? をクリックします。アイコンをクリックして、Command line tools をクリックし、gitsign ダウンロードセクションに移動して、お使いのプラットフォームのリンクをクリックします。
    2. ワークステーションでターミナルを開き、.gz ファイルを展開して、実行ビットを設定します。

      Copy to Clipboard Toggle word wrap
      gunzip gitsign-amd64.gz
      chmod +x gitsign-amd64

    3. バイナリーを $PATH 環境内の場所に移動し、名前を変更します。

      Copy to Clipboard Toggle word wrap
      sudo mv gitsign-amd64 /usr/local/bin/gitsign

  2. OpenShift クラスターにログインします。

    構文

    Copy to Clipboard Toggle word wrap
    oc login --token=TOKEN --server=SERVER_URL_AND_PORT

    Copy to Clipboard Toggle word wrap
    oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443

    注記

    OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。

  3. RHTAS プロジェクトに切り替えます。

    構文

    Copy to Clipboard Toggle word wrap
    oc project PROJECT_NAME

    Copy to Clipboard Toggle word wrap
    oc project trusted-artifact-signer

    注記

    RHTAS インストールのプロジェクト名を使用します。

  4. コミットの署名と検証を行うためにシェル環境を設定します。

    Copy to Clipboard Toggle word wrap
    export TUF_URL=$(oc get tuf -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    export OIDC_ISSUER_URL=https://$(oc get route keycloak -n keycloak-system | tail -n 1 | awk '{print $2}')/auth/realms/trusted-artifact-signer
    export COSIGN_FULCIO_URL=$(oc get fulcio -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    export COSIGN_REKOR_URL=$(oc get rekor -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    export COSIGN_MIRROR=$TUF_URL
    export COSIGN_ROOT=$TUF_URL/root.json
    export COSIGN_OIDC_CLIENT_ID="trusted-artifact-signer"
    export COSIGN_OIDC_ISSUER=$OIDC_ISSUER_URL
    export COSIGN_CERTIFICATE_OIDC_ISSUER=$OIDC_ISSUER_URL
    export COSIGN_YES="true"
    export SIGSTORE_FULCIO_URL=$COSIGN_FULCIO_URL
    export SIGSTORE_OIDC_ISSUER=$COSIGN_OIDC_ISSUER
    export SIGSTORE_REKOR_URL=$COSIGN_REKOR_URL
    export REKOR_REKOR_SERVER=$COSIGN_REKOR_URL

  5. RHTAS サービスを使用してコミットに署名するようにローカルリポジトリー設定を指定します。

    Copy to Clipboard Toggle word wrap
    git config --local commit.gpgsign true
    git config --local tag.gpgsign true
    git config --local gpg.x509.program gitsign
    git config --local gpg.format x509
    git config --local gitsign.fulcio $SIGSTORE_FULCIO_URL
    git config --local gitsign.rekor $SIGSTORE_REKOR_URL
    git config --local gitsign.issuer $SIGSTORE_OIDC_ISSUER
    git config --local gitsign.clientID trusted-artifact-signer

  6. ローカルリポジトリーにコミットを作成します。

    Copy to Clipboard Toggle word wrap
    git commit --allow-empty -S -m “Test of a signed commit”

    Web ブラウザーが開いて、メールアドレスでコミットに署名できます。

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

    Copy to Clipboard Toggle word wrap
    cosign initialize

  8. コミットを確認します。

    構文

    Copy to Clipboard Toggle word wrap
    gitsign verify --certificate-identity=SIGNING_EMAIL --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEAD

    Copy to Clipboard Toggle word wrap
    gitsign verify --certificate-identity=jdoe@redhat.com --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEAD

1.2.3. エンタープライズコントラクトを使用したコンテナーイメージの署名の検証

Enterprise Contract (EC) は、ソフトウェアサプライチェーンのセキュリティーを維持するためのツールであり、これを使用してコンテナーイメージのポリシーを定義および適用できます。ec バイナリーを使用すると、Red Hat の Trusted Artifact Signer (RHTAS) 署名フレームワークを使用するコンテナーイメージのアテステーションと署名を検証できます。

前提条件

  • Red Hat OpenShift Container Platform 4.15 以降への RHTAS インストール。
  • OpenShift Web コンソールへのアクセス。
  • occosign、および podman バイナリーがインストールされたワークステーション。

    • cosign バージョン 2.2 以降を使用する必要があります。

手順

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

    1. OpenShift Web コンソールにログインします。ホームページから ? アイコンをクリックし、Command line tools をクリックして、ec ダウンロードセクションに移動してから、お使いのプラットフォームへのリンクをクリックします。
    2. ワークステーションでターミナルを開き、バイナリー .gz ファイルを展開し、実行ビットを設定します。

      Copy to Clipboard Toggle word wrap
      gunzip ec-amd64.gz
      chmod +x ec-amd64

    3. バイナリーを $PATH 環境内の場所に移動し、名前を変更します。

      Copy to Clipboard Toggle word wrap
      sudo mv ec-amd64 /usr/local/bin/ec

  2. OpenShift クラスターにログインします。

    構文

    Copy to Clipboard Toggle word wrap
    oc login --token=TOKEN --server=SERVER_URL_AND_PORT

    Copy to Clipboard Toggle word wrap
    oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443

    注記

    OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。

  3. RHTAS プロジェクトに切り替えます。

    構文

    Copy to Clipboard Toggle word wrap
    oc project PROJECT_NAME

    Copy to Clipboard Toggle word wrap
    oc project trusted-artifact-signer

    注記

    RHTAS インストールのプロジェクト名を使用します。

  4. コンテナーイメージの署名と検証を行うためにシェル環境を設定します。

    Copy to Clipboard Toggle word wrap
    export TUF_URL=$(oc get tuf -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    export OIDC_ISSUER_URL=https://$(oc get route keycloak -n keycloak-system | tail -n 1 | awk '{print $2}')/auth/realms/trusted-artifact-signer
    export COSIGN_FULCIO_URL=$(oc get fulcio -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    export COSIGN_REKOR_URL=$(oc get rekor -o jsonpath='{.items[0].status.url}' -n trusted-artifact-signer)
    export COSIGN_MIRROR=$TUF_URL
    export COSIGN_ROOT=$TUF_URL/root.json
    export COSIGN_OIDC_CLIENT_ID="trusted-artifact-signer"
    export COSIGN_OIDC_ISSUER=$OIDC_ISSUER_URL
    export COSIGN_CERTIFICATE_OIDC_ISSUER=$OIDC_ISSUER_URL
    export COSIGN_YES="true"
    export SIGSTORE_FULCIO_URL=$COSIGN_FULCIO_URL
    export SIGSTORE_OIDC_ISSUER=$COSIGN_OIDC_ISSUER
    export SIGSTORE_REKOR_URL=$COSIGN_REKOR_URL
    export REKOR_REKOR_SERVER=$COSIGN_REKOR_URL

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

    Copy to Clipboard Toggle word wrap
    cosign initialize

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

    1. 空のコンテナーイメージを作成します。

      Copy to Clipboard Toggle word wrap
      echo "FROM scratch" > ./tmp.Dockerfile
      podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h

    2. 空のコンテナーイメージを ttl.sh 一時レジストリーにプッシュします。

      Copy to Clipboard Toggle word wrap
      podman push ttl.sh/rhtas/test-image:1h

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

      構文

      Copy to Clipboard Toggle word wrap
      cosign sign -y IMAGE_NAME:TAG

      Copy to Clipboard Toggle word wrap
      cosign sign -y ttl.sh/rhtas/test-image:1h

      Web ブラウザーが開いて、コンテナーイメージをメールアドレスで署名できます。

    4. 一時的な Docker ファイルを削除します。

      Copy to Clipboard Toggle word wrap
      rm ./tmp.Dockerfile

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

    Copy to Clipboard Toggle word wrap
    {
      "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": []
    }

    スキーマレイアウトの詳細は、SLSA provenance predicate specifications を参照してください。

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

    構文

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

    Copy to Clipboard Toggle word wrap
    cosign attest -y --predicate ./predicate.json --type slsaprovenance ttl.sh/rhtas/test-image:1h

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

    構文

    Copy to Clipboard Toggle word wrap
    cosign tree IMAGE_NAME:TAG

    Copy to Clipboard Toggle word wrap
    cosign tree ttl.sh/rhtas/test-image:1h
    
    📦 Supply Chain Security Related artifacts for an image: ttl.sh/rhtas/test-image@sha256:7de5fa822a9d1e507c36565ee0cf50c08faa64505461c844a3ce3944d23efa35
    └── 💾 Attestations for an image tag: ttl.sh/rhtas/test-image:sha256-7de5fa822a9d1e507c36565ee0cf50c08faa64505461c844a3ce3944d23efa35.att
       └── 🍒 sha256:40d94d96a6d3ab3d94b429881e1b470ae9a3cac55a3ec874051bdecd9da06c2e
    └── 🔐 Signatures for an image tag: ttl.sh/rhtas/test-image:sha256-7de5fa822a9d1e507c36565ee0cf50c08faa64505461c844a3ce3944d23efa35.sig
       └── 🍒 sha256:f32171250715d4538aec33adc40fac2343f5092631d4fc2457e2116a489387b7

  10. Enterprise Contact を使用してコンテナーイメージを確認します。

    構文

    Copy to Clipboard Toggle word wrap
    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 Toggle word wrap
    ec validate image --image ttl.sh/rhtas/test-image:1h --certificate-identity-regexp 'jdoe@example.com' --certificate-oidc-issuer-regexp '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

    エンタープライズコントラクトは、セキュリティー違反の詳細を含む pass-fail レポートを生成します。--info フラグを追加すると、レポートには、検出された違反に対する詳細と考えられる解決策が含まれます。

関連情報

関連情報

  • 詳細は、Enterprise Contract の Web サイト を参照してください。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.