このドキュメントでは、Vulnerability Exploitability eXchange(VEX)ステートメントを作成する方法について説明します。
Artifact Analysis は、関連する VEX ステートメントを Artifact Registry に push されたコンテナ イメージごとに保存できます。VEX は、プロダクトが既知の脆弱性の影響を受けているかどうかを示すセキュリティ アドバイザリの一種です。
各ステートメントの内容は次のとおりです。
- VEX ステートメントのパブリッシャー
- ステートメントが書き込まれるアーティファクト
- 既知の脆弱性の脆弱性評価(VEX ステータス)
ソフトウェア パブリッシャーは VEX ステートメントを作成して、アプリケーションのセキュリティ対策を記述できます。VEX ステートメントには、特定のアーティファクトで検出された脆弱性が記載され、お客様や規制機関への影響に関するコンテキストが示されます。
セキュリティとポリシーの適用者は、VEX ステータスを使用してソフトウェア サプライ チェーンのリスクを優先順位付けし、VEX ステートメントを使用してアーティファクトの構成を証明することで、組織が規制要件を満たすのに役立ちます。
VEX のステータス
VEX ステータスは、アーティファクトが既知の脆弱性の影響を受けているかどうかを示します。
ステータスは次のいずれかになります。
- 影響なし: この脆弱性に関する修正は必要ありません。
- 影響あり: 修正することをおすすめします。
- 修正済み: このバージョンのプロダクトでは、脆弱性に対する修正が適用されています。
- 調査中: このプロダクトのステータスはまだ調査中です。 公開元が今後のリリースで新しいステータスを提供する予定です。
始める前に
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Container Analysis, Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Container Analysis, Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- コンテナ イメージを Artifact Registry リポジトリに保存するか、リポジトリを作成してイメージを push します。
必要なロール
VEX 評価のアップロードと脆弱性の VEX ステータスの確認に必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。
-
メモを作成、更新する: Container Analysis メモの編集者 (
roles/containeranalysis.notes.editor
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
VEX ステートメントを作成する
Artifact Analysis は、JSON の Common Security Advisory Format(CSAF)2.0 標準をサポートしています。新しい VEX ステートメントを生成するには、CSAF スキーマを使用します。
次の例は、既知の脆弱性に対する 1 つの cve
ブランチを持つ Artifact Registry 内のイメージの VEX ステートメントです。
CVE ごとに product_status
の値を定義する必要があります。
{
"document": {
"csaf_version": "2.0",
"lang": "en-US",
"publisher": {
"name": "Sample-Company",
"namespace": "https://sample-company.com"
},
"title": "Vex document 1.1"
},
"product_tree": {
"branches": [
{
"name": "https://LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME",
"product": {
"name": "PRODUCT_NAME",
"product_id": "IMAGE_NAME"
}
}
]
},
"vulnerabilities": [
{
"cve": "CVE_ID",
"product_status": {
"PRODUCT_STATUS": [
"IMAGE_NAME"
]
}
}
]
}
場所
- PRODUCT_NAME 画像の製品名(人が読める形式)。文字列値を受け取ります。値は、バージョン番号などの属性を含む、プロダクトの完全なカノニカル名にする必要があります。
- LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
- PROJECT_ID は、リポジトリを含むプロジェクトの ID です。
- REPO_NAME は、Artifact Registry の Docker リポジトリの名前です。
- IMAGE_NAME は、イメージ名です。
- CVE_ID は、脆弱性の識別子です(
CVE-2017-11164
など)。 - PRODUCT_STATUS はセキュリティ リスクの評価です。アーティファクト分析は、
known_affected
、known_not_affected
、under_investigation
、fixed
の 4 つのステータス タイプをサポートしています。
VEX ステートメントにリストする脆弱性ごとに、cve
ブランチを作成し、product_status
の値を定義する必要があります。
product_tree.branches.name
の name
フィールドの値は画像の URI です。この値を含めると、VEX ステートメントが特定の Docker イメージに関連付けられます。
次のステップ
- 既存の VEX ステートメントまたは他のパブリッシャーから提供された VEX ステートメントをVEX ステートメントをアップロードします。
- VEX を使用して脆弱性の問題の優先順位を付けます。VEX ステートメントを表示する方法と、VEX ステータス別に脆弱性をフィルタする方法について学習する。