このドキュメントでは、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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Artifact Registry リポジトリにコンテナ イメージを保存するか、リポジトリを作成してイメージを push します。
-
メモを作成して更新する: Container Analysis メモの編集者 (
roles/containeranalysis.notes.editor
) - 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 ステートメントまたは他のパブリッシャーから提供された VEX ステートメントをアップロードします。
- VEX を使用して脆弱性に関する問題の優先順位を付けます。VEX ステートメントを表示し、VEX ステータスで脆弱性をフィルタする方法を学習する。
必要なロール
VEX 評価をアップロードし、脆弱性の VEX ステータスを確認するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
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"
]
}
}
]
}
場所
VEX ステートメントに記載する脆弱性ごとに、cve
ブランチを作成し、product_status
の値を定義する必要があります。
product_tree.branches.name
の name
フィールドの値は、イメージ URI です。この値を含めると、VEX ステートメントが特定の Docker イメージに関連付けられます。