VEX のステータスを表示する

このドキュメントでは、Artifact Analysis に保存されている Vulnerability Exploitability eXchange(VEX)ステートメントを表示し、VEX ステータスを使用して脆弱性をフィルタする方法について説明します。

セキュリティとポリシーの適用者は、これらの機能を使用して、セキュリティ問題の軽減タスクの優先順位付けを行うことができます。また、VEX データを使用してアーティファクトの構成を証明し、組織が規制要件を満たすようにすることもできます。

必要なロール

VEX 評価をアップロードし、脆弱性の VEX ステータスを確認するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Google Cloud コンソールで VEX のステータスを表示する

Artifact Registry に保存されているコンテナ イメージの VEX 情報を表示するには:

  1. Artifact Registry の [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

    リポジトリのリストが表示されます。

  2. リポジトリ リストで、リポジトリ名をクリックします。

  3. イメージのリストで、イメージ名をクリックします。

    イメージ ダイジェストのリストが開きます。

  4. ダイジェストのリストで、ダイジェスト名をクリックします。

    ダイジェストの詳細ページが開き、タブの行が表示されます。デフォルトでは、[概要] タブが開いています。

  5. タブの行で、[脆弱性] タブを選択します。

    ページには、[VEX ステータス] セクションを含む [スキャン結果] の概要が表示されます。

    [VEX ステータス] の概要セクションには、各 VEX ステータス タイプで分類されたパッケージの数が表示されます。特定の VEX ステータスのパッケージをすべて表示するには、ステータス タイプの横にある数字をクリックします。

    [脆弱性] タブには、脆弱性リスト内の各パッケージの VEX ステータスも表示されます。

    脆弱性リストをフィルタするには:

    1. 脆弱性リストの上にある [脆弱性をフィルタ] をクリックします。
    2. フィルタリストからフィルタを選択します。
    3. リストのフィルタリングに使用する値を指定します。

Cloud Build で VEX のステータスを表示する

Cloud Build を使用している場合は、 Google Cloud コンソールの [セキュリティ分析情報] サイドパネルで VEX 情報を表示することもできます。

Cloud Build を使用している場合は、 Google Cloud コンソール内の [セキュリティ分析情報] サイドパネルでイメージのメタデータを表示できます。

[セキュリティ分析情報] サイドパネルには、Artifact Registry に保存されているアーティファクトのビルド セキュリティ情報の概要が表示されます。サイドパネルの詳細と、Cloud Build を使用してソフトウェア サプライ チェーンを保護する方法については、ビルドのセキュリティ分析情報を表示するをご覧ください。

gcloud CLI を使用して表示する

次のセクションでは、VEX 情報を取得し、必要に応じてフィルタを適用して結果を絞り込む方法について説明します。

単一のアーティファクトの VEX 情報を表示する

アップロードされた VEX 情報を表示するには、API をクエリして、メモタイプ VULNERABILITY_ASSESSMENT のメモを一覧表示します。

次の API 呼び出しを使用して、指定されたアーティファクトのすべての脆弱性評価メモをリクエストします。

curl -G -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    --data-urlencode "filter=(kind=\"VULNERABILITY_ASSESSMENT\" AND vulnerability_assessment.product.generic_uri=\"https://LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME@DIGEST\"" https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/notes

場所

  • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
  • PROJECT_ID は、イメージが Artifact Registry リポジトリに保存されている Google Cloud プロジェクトの ID です。
  • REPO_NAME は、イメージを含む Artifact Registry リポジトリの名前です。
  • IMAGE_NAME は、イメージ名です。
  • DIGEST: イメージ ダイジェスト(sha256: で始まる文字列)

VEX ステータスで脆弱性をフィルタする

gcloud を使用すると、VEX ステータスで脆弱性メタデータをフィルタできます。Artifact Analysis は、各 Grafeas 脆弱性オカレンスに保存されているステータスに基づいてフィルタします。

次のコマンドを実行して、指定した VEX ステータスに基づいて脆弱性の検出結果をフィルタします。

gcloud artifacts vulnerabilities list RESOURCE_URI \
    --occurrence-filter="vulnDetails.vex_assessment.state=\"STATUS\""

場所

  • RESOURCE_URI は、https://LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID@sha256:HASH のようなイメージの完全な URL です。
  • STATUS は、フィルタする VEX ステータスです。これは、known_affectedknown_not_affectedunder_investigationfixed のいずれかの値になります。

たとえば、次のコマンドを実行して、VEX ステータスが AFFECTED の脆弱性の検出結果をフィルタします。

gcloud artifacts vulnerabilities list RESOURCE_URI \
    --occurrence-filter="vulnDetails.vex_assessment.state=\"AFFECTED\""

VEX なしの脆弱性のリストを取得する

まだ VEX 情報が関連付けられていない脆弱性を特定するには、次の gcloud コマンドを使用します。

gcloud artifacts vulnerabilities list /
    LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME@DIGEST /--occurrence-filter="isNull(vulnDetails.vex_assessment.state)"

場所

  • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
  • PROJECT_ID は、イメージが Artifact Registry リポジトリに保存されている Google Cloud プロジェクトの ID です。
  • REPO_NAME は、イメージを含む Artifact Registry リポジトリの名前です。
  • IMAGE_NAME は、イメージ名です。
  • DIGEST: イメージ ダイジェスト(sha256: で始まる文字列)

制限事項

  • VEX ステートメントのアップロードは、コンテナ イメージでのみサポートされています。
  • アップロードされた VEX ステートメントを CSAF、OpenVex、SPDX 標準にエクスポートすることはできません。

次のステップ