このドキュメントでは、 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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
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 ステータスで脆弱性をフィルタする方法を確認します。