第1章 SBOM のダウンロード、変換、分析


次の手順では、TPA を使用して SBOM を検査する方法を説明します。具体的には、SBOM をダウンロードし、SBOM を互換性のある形式に変換して、TPA で SBOM を分析する方法を説明します。

注記

RHTAP 1.4 では、サポートされている CI プロバイダー (Tekton、Jenkins、GitLab CI、GitHub Actions) を使用してアプリケーションをビルドするときに、SBOM が TPA に自動的に公開されるため、この手順は必要ありません。GitHub Actions は テクノロジープレビュー 機能であり、完全にはテストされていないことに注意してください。

SBOM を手動で展開し、ローカルコピーを保持する場合は、次の手順に従ってください。

前提条件:

手順:

  1. コンテナーレジストリーで、SBOM 検査の対象とするコンテナーイメージの完全なアドレスを確認します。アドレスの形式は、registry/namespace/image:tag です。たとえば、quay.io/app/app-image:ff59e21cc などです。

    注記

    SBOM イメージのアドレス (末尾が .sbom のもの) は使用しないでください。実際のアプリケーションイメージのアドレスを使用してください。

  2. CLI で、cosign を使用して SBOM をダウンロードします。出力を、後で参照できるファイルにリダイレクトします。必ず新しいファイル名の末尾を .json にします。

    cosign download sbom quay.io/redhat/rhtap-app:8d34c03188cf294a77339b2a733b1f6811263a369b309e6b170d9b489abc0334 > /tmp/sbom.json
    Copy to Clipboard Toggle word wrap
  3. (オプション)最終的には、この .json ファイルにリストされている名前で TPA UI に SBOM が表示されます。デフォルトでは、Syft によって SBOM のファイルパスに基づいてその名前が作成されます。TPA UI に、よりわかりやすい名前を付けて SBOM を表示するには、ダウンロードした .json ファイルで手動で SBOM を変更する必要があります。具体的には、.metadata.component オブジェクト内の名前を置き換える必要があります。必要に応じて、ここで version フィールドを追加することもできます。

    $ vim /tmp/sbom.json
    "component": {
          "bom-ref": "fdef64df97f1d419",
          "type": "file",
          "name": "/var/lib/containers/storage/vfs/dir/3b3009adcd335d2b3902c5a7014d22b2beb6392b1958f1d9c7aabe24acab2deb" #Replace this with a meaningful name
        }
    Copy to Clipboard Toggle word wrap
  4. 以下のコマンドを実行して Bombastic API URL を環境変数として保存します。

    $ bombastic_api_url="https://$(oc -n rhtap-tpa get route --selector app.kubernetes.io/name=bombastic-api -o jsonpath='{.items[].spec.host}')"
    Copy to Clipboard Toggle word wrap
    注記

    このコマンドと次のコマンドでは、-n の後に、RHTAP をインストールした名前空間を必ず入力してください。この例では、rhtap という名前空間を使用していると想定しています。

  5. CLI で、次の値で新しい token_issuer_url 環境変数を作成します。

    $ token_issuer_url=https://$(oc -n rhtap-keycloak get route --selector app=keycloak -o  jsonpath='{.items[].spec.host}')/realms/chicken/protocol/openid-connect/token
    Copy to Clipboard Toggle word wrap
  6. TPA__OIDC__WALKER_CLIENT_SECRET 環境変数を設定し、その値として TPA OIDC Walker クライアントシークレットを指定します。

    $ TPA__OIDC__WALKER_CLIENT_SECRET=$(kubectl get -n rhtap secrets/rhtap-trustification-integration --template={{.data.oidc_client_secret}} | base64 -d)
    Copy to Clipboard Toggle word wrap
  7. 次のコマンドを実行して BOMbastic API のトークンを取得します。このトークンを使用すると、SBOM をアップロードできます。

    $ tpa_token=$(curl \
        -d 'client_id=walker' \
        -d "client_secret=$TPA__OIDC__WALKER_CLIENT_SECRET" \
        -d 'grant_type=client_credentials' \
        "$token_issuer_url" \
    | jq -r .access_token)
    Copy to Clipboard Toggle word wrap
  8. SBOM のアップロードを試行します。

    curl \
        -H "authorization: Bearer $tpa_token" \
        -H "transfer-encoding: chunked" \
        -H "content-type: application/json" \
        --data @/tmp/sbom.json \
        "$bombastic_api_url/api/v1/sbom?id=my-sbom"
    Copy to Clipboard Toggle word wrap
    1. エラーメッセージ storage error: invalid storage content が表示された場合は、Syft を使用して SBOM を以前の CycloneDX 1.4 に変換します。異なる pURL を持つパッケージのマージに関する警告は、無視しても問題ありません。この警告は、Syft が元の SBOM の一部のデータを破棄する可能性があることを示していますが、そのデータは重要ではありません。

      $ syft convert /tmp/sbom.json -o cyclonedx-json@1.4=/tmp/sbom-1-4.json
      Copy to Clipboard Toggle word wrap
    2. SBOM の再アップロードを試行します。

      $ curl \
          -H "authorization: Bearer $tpa_token" \
          -H "transfer-encoding: chunked" \
          -H "content-type: application/json" \
          --data @/tmp/sbom-1-4.json \
          "$bombastic_api_url/api/v1/sbom?id=my-sbom"
      Copy to Clipboard Toggle word wrap
  9. OpenShift コンソールから、RHTAP を実行しているクラスターにアクセスします。
  10. rhtap プロジェクトで Networking > Routes に移動しますspog-ui サービスと同じ行にリストされている URL を開きます。
  11. Register ボタンを使用して新規アカウントを作成し、TPA に対して認証します。
  12. SBOM (直近にアップロードしたもの) を選択し、その SBOM に基づいて TPA が提供した、アプリケーションに関する分析情報を確認します。

    1. Dependency Analytics Report タブに移動し、脆弱性および修復を表示します。





改訂日時: 2025-02-07

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat