VEX ステートメントを作成する

このドキュメントでは、Vulnerability Exploitability eXchange(VEX)ステートメントを作成する方法について説明します。

Artifact Analysis は、関連する VEX ステートメントを Artifact Registry に push されたコンテナ イメージごとに保存できます。VEX は、プロダクトが既知の脆弱性の影響を受けているかどうかを示すセキュリティ アドバイザリの一種です。

各ステートメントの内容は次のとおりです。

  • VEX ステートメントのパブリッシャー
  • ステートメントが書き込まれるアーティファクト
  • 既知の脆弱性の脆弱性評価(VEX ステータス)

ソフトウェア パブリッシャーは VEX ステートメントを作成して、アプリケーションのセキュリティ対策を記述できます。VEX ステートメントには、特定のアーティファクトで検出された脆弱性が記載され、お客様や規制機関への影響に関するコンテキストが示されます。

セキュリティとポリシーの適用者は、VEX ステータスを使用してソフトウェア サプライ チェーンのリスクを優先順位付けし、VEX ステートメントを使用してアーティファクトの構成を証明することで、組織が規制要件を満たすのに役立ちます。

VEX のステータス

VEX ステータスは、アーティファクトが既知の脆弱性の影響を受けているかどうかを示します。

ステータスは次のいずれかになります。

  • 影響なし: この脆弱性に関する修正は必要ありません。
  • 影響あり: 修正することをおすすめします。
  • 修正済み: このバージョンのプロダクトでは、脆弱性に対する修正が適用されています。
  • 調査中: このプロダクトのステータスはまだ調査中です。 公開元が今後のリリースで新しいステータスを提供する予定です。

始める前に

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Container Analysis, Artifact Registry APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Container Analysis, Artifact Registry APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. コンテナ イメージを Artifact Registry リポジトリに保存するか、リポジトリを作成してイメージを push します。

必要なロール

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"
        ]
      }
    }
  ]
}

場所

  • PRODUCT_NAME 画像の製品名(人が読める形式)。文字列値を受け取ります。値は、バージョン番号などの属性を含む、プロダクトの完全なカノニカル名にする必要があります。
  • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
  • PROJECT_ID は、リポジトリを含むプロジェクトの ID です。
  • REPO_NAME は、Artifact Registry の Docker リポジトリの名前です。
  • IMAGE_NAME は、イメージ名です。
  • CVE_ID は、脆弱性の識別子です(CVE-2017-11164 など)。
  • PRODUCT_STATUS はセキュリティ リスクの評価です。アーティファクト分析は、known_affectedknown_not_affectedunder_investigationfixed の 4 つのステータス タイプをサポートしています。

VEX ステートメントにリストする脆弱性ごとに、cve ブランチを作成し、product_status の値を定義する必要があります。

product_tree.branches.namename フィールドの値は画像の URI です。この値を含めると、VEX ステートメントが特定の Docker イメージに関連付けられます。

次のステップ