このドキュメントでは、Artifact Analysis に保存されている Vulnerability Exploitability eXchange(VEX)ステートメントを表示し、VEX ステータスを使用して脆弱性をフィルタする方法について説明します。
セキュリティ担当者とポリシー適用担当者は、これらの機能を使用して、セキュリティ問題の軽減タスクに優先順位を付けることができます。また、VEX データを使用してアーティファクトの構成を証明し、組織が規制要件を満たせるようにすることもできます。
必要なロール
VEX 評価のアップロードと脆弱性の VEX ステータスの確認に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。
-
脆弱性の発生を表示するには:
Container Analysis のオカレンスの閲覧者 (
roles/containeranalysis.occurrences.viewer
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Google Cloud コンソールで VEX のステータスを確認する
Artifact Registry に保存されているコンテナ イメージの VEX 情報を表示するには:
Artifact Registry の [リポジトリ] ページを開きます。
ページにリポジトリのリストが表示されます。
リポジトリ リストで、リポジトリ名をクリックします。
画像リストで、イメージ名をクリックします。
イメージ ダイジェストのリストが開きます。
ダイジェストのリストで、ダイジェスト名をクリックします。
タブが並んだダイジェストの詳細ページが開きます。デフォルトでは、[概要] タブが開いています。
タブの行で [脆弱性] タブを選択します。
このページには、[スキャン結果] の概要と [VEX ステータス] セクションが表示されます。
[VEX ステータス] の概要セクションには、各 VEX ステータス タイプに分類されたパッケージの数が表示されます。特定の VEX ステータスのすべてのパッケージを表示するには、ステータス タイプの横にある番号をクリックします。
[脆弱性] タブには、脆弱性リストに各パッケージの VEX ステータスも表示されます。
脆弱性リストをフィルタするには:
- 脆弱性リストの上にある [脆弱性をフィルタ] をクリックします。
- フィルタリストからフィルタを選択します。
- リストのフィルタに使用する値を指定します。
Cloud Build で VEX のステータスを確認する
Cloud Build を使用している場合は、Google Cloud コンソールの [セキュリティ分析情報] サイドパネルで VEX 情報を表示することもできます。
Cloud Build を使用している場合は、Google Cloud コンソールの [セキュリティ分析情報] サイドパネルでイメージのメタデータを表示できます。
[セキュリティ分析情報] サイドパネルには、Artifact Registry に保存されているアーティファクトのビルド セキュリティ情報の概要が表示されます。サイドパネルの詳細と、Cloud Build を使用してソフトウェア サプライ チェーンを保護する方法については、ビルドのセキュリティ分析情報を表示するをご覧ください。
gcloud CLI を使用して表示する
次のセクションでは、VEX 情報を取得し、フィルタを適用して必要に応じて結果を制限する方法について説明します。
1 つのアーティファクトの VEX 情報を表示する
アップロードされた VEX 情報を表示するには、API をクエリして、メモタイプが VULNERABILITY_ASSESSMENT
のメモを一覧表示します。
指定したアーティファクトの脆弱性評価メモをすべてリクエストするには、次の API 呼び出しを使用します。
curl --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 はイメージの完全な URL です。次に例を示します。https://LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID@sha256:HASH。
- STATUS は、フィルタする VEX ステータスです。これは、
known_affected
、known_not_affected
、under_investigation
、fixed
のいずれかの値にできます。
たとえば、次のコマンドを実行して、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 標準にエクスポートできません。