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


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

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

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

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

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

重要

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

前提条件

  • Ansible によって管理される Red Hat Enterprise Linux 9.4 以降で実行される RHTAS のインストール。
  • podman バイナリーがインストールされたワークステーション。

手順

  1. ローカルのコマンドラインインターフェイス (CLI) ツールのダウンロードページから cosign バイナリーをワークステーションにダウンロードします。

    注記

    URL アドレスは、tas_single_node_base_hostname 変数によって定義された設定済みノードです。tas_single_node_base_hostname の値が example.com の場合、URL アドレスの例は https://cli-server.example.com です。

    1. ダウンロードページから、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. コンテナーイメージの署名と検証を行うためにシェル環境を設定します。

    Copy to Clipboard Toggle word wrap
    export BASE_HOSTNAME=BASE_HOSTNAME_OF_RHTAS_SERVICE
    export TUF_URL="https://tuf.${BASE_HOSTNAME}"
    export OIDC_ISSUER_URL=OIDC_ISSUER_URL
    export COSIGN_FULCIO_URL="https://fulcio.${BASE_HOSTNAME}"
    export COSIGN_REKOR_URL="https://rekor.${BASE_HOSTNAME}"
    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

    BASE_HOSTNAME_OF_RHTAS_SERVICEtas_single_node_base_hostname 変数の値に置き換え、OIDC_ISSUER_URL は OpenID Connect (OIDC) プロバイダーの URL 文字列に置き換えます。

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

    Copy to Clipboard Toggle word wrap
    cosign initialize

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

    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

  5. 証明書 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 と発行者に正規表現を使用することもできます。

  6. ローカルのコマンドラインインターフェイス (CLI) ツールのダウンロードページから rekor-cli バイナリーをワークステーションにダウンロードします。

    1. Web ブラウザーを開き、CLI サーバーの Web ページに移動します。

      注記

      URL アドレスは、tas_single_node_base_hostname 変数によって定義された設定済みノードです。tas_single_node_base_hostname の値が example.com の場合、URL アドレスの例は https://cli-server.example.com です。

    2. ダウンロードページから rekor-cli ダウンロードセクションに移動し、プラットフォームのリンクをクリックします。
    3. ワークステーションでターミナルを開き、バイナリー .gz ファイルを展開し、実行ビットを設定します。

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

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

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

  7. 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

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

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

前提条件

  • Ansible によって管理される Red Hat Enterprise Linux 9.4 以降で実行される RHTAS のインストール。
  • git および cosign バイナリーがインストールされたワークステーション。

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

手順

  1. ローカルのコマンドラインインターフェイス (CLI) ツールのダウンロードページから gitsign バイナリーをワークステーションにダウンロードします。

    注記

    URL アドレスは、tas_single_node_base_hostname 変数によって定義された設定済みノードです。tas_single_node_base_hostname の値が example.com の場合、URL アドレスの例は https://cli-server.example.com です。

    1. ダウンロードページから、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. コミットの署名と検証を行うためにシェル環境を設定します。

    Copy to Clipboard Toggle word wrap
    export BASE_HOSTNAME=BASE_HOSTNAME_OF_RHTAS_SERVICE
    export TUF_URL="https://tuf.${BASE_HOSTNAME}"
    export OIDC_ISSUER_URL=OIDC_ISSUER_URL
    export COSIGN_FULCIO_URL="https://fulcio.${BASE_HOSTNAME}"
    export COSIGN_REKOR_URL="https://rekor.${BASE_HOSTNAME}"
    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

    BASE_HOSTNAME_OF_RHTAS_SERVICEtas_single_node_base_hostname 変数の値に置き換え、OIDC_ISSUER_URL は OpenID Connect (OIDC) プロバイダーの URL 文字列に置き換えます。

  3. 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

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

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

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

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

    Copy to Clipboard Toggle word wrap
    cosign initialize

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

    構文

    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

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

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

前提条件

  • Ansible によって管理される Red Hat Enterprise Linux 9.4 以降で実行される RHTAS のインストール。
  • cosign および podman バイナリーがインストールされたワークステーション。

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

手順

  1. ローカルのコマンドラインインターフェイス (CLI) ツールのダウンロードページから ec バイナリーをワークステーションにダウンロードします。

    注記

    URL アドレスは、tas_single_node_base_hostname 変数によって定義された設定済みノードです。tas_single_node_base_hostname の値が example.com の場合、URL アドレスの例は https://cli-server.example.com です。

    1. ダウンロードページから、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. コンテナーイメージの署名と検証を行うためにシェル環境を設定します。

    Copy to Clipboard Toggle word wrap
    export BASE_HOSTNAME=BASE_HOSTNAME_OF_RHTAS_SERVICE
    export TUF_URL="https://tuf.${BASE_HOSTNAME}"
    export OIDC_ISSUER_URL=OIDC_ISSUER_URL
    export COSIGN_FULCIO_URL="https://fulcio.${BASE_HOSTNAME}"
    export COSIGN_REKOR_URL="https://rekor.${BASE_HOSTNAME}"
    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

    BASE_HOSTNAME_OF_RHTAS_SERVICEtas_single_node_base_hostname 変数の値に置き換え、OIDC_ISSUER_URL は OpenID Connect (OIDC) プロバイダーの URL 文字列に置き換えます。

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

    Copy to Clipboard Toggle word wrap
    cosign initialize

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

    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

  5. 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 を参照してください。

  6. 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

  7. コンテナーイメージにアテステーションと署名が 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

  8. 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.