このドキュメントでは、Vulnerability Exploitability eXchange(VEX)ステートメントを作成する方法について説明します。
Artifact Analysis は、関連する VEX ステートメントを Artifact Registry に push されたコンテナ イメージごとに保存できます。VEX は、プロダクトが既知の脆弱性の影響を受けているかどうかを示すセキュリティ アドバイザリの一種です。
各ステートメントの内容は次のとおりです。
- VEX ステートメントのパブリッシャー
- ステートメントが書き込まれるアーティファクト
- 既知の脆弱性の脆弱性評価(VEX ステータス)
ソフトウェア パブリッシャーは、アプリケーションのセキュリティ ポスチャーを説明する VEX ステートメントを作成できます。VEX ステートメントは、特定のアーティファクトで検出された脆弱性を記録し、顧客や規制機関への影響に関するコンテキストを提供します。
セキュリティとポリシーの適用者は、VEX ステータスを使用してソフトウェア サプライ チェーンのリスクをトリアージし、VEX ステートメントを使用してアーティファクトの構成を証明することで、組織が規制要件を満たすのに役立てることができます。
VEX のステータス
VEX ステータスは、アーティファクトが既知の脆弱性の影響を受けているかどうかを示します。
ステータスは次のいずれかになります。
- 影響なし: この脆弱性に関する修正は必要ありません。
- 影響あり: 修正することをおすすめします。
- 修正済み: このバージョンのプロダクトでは、脆弱性に対する修正が適用されています。
- 調査中: このプロダクトのステータスはまだ調査中です。公開元が今後のリリースで新しいステータスを提供する予定です。
始める前に
-
Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Container Analysis, Artifact Registry APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Container Analysis, Artifact Registry APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
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 します。
必要なロール
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 は、セキュリティ リスクの評価です。Artifact Analysis は、
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 ステータスで脆弱性をフィルタする方法を学習する。