查看 VEX 状态

本文档介绍如何查看存储在 Artifact Analysis 中的 漏洞可利用性交换 (VEX) 声明,以及如何使用 VEX 状态过滤漏洞。

安全和政策执行者可以使用这些功能来确定安全问题缓解任务的优先级。您还可以使用 VEX 数据来证明工件的组成,以帮助您的组织满足监管要求。

所需的角色

如需获得上传 VEX 评估和检查漏洞的 VEX 状态所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。

在 Google Cloud 控制台中查看 VEX 状态

如需查看存储在 Artifact Registry 中的容器映像的 VEX 信息,请执行以下操作:

  1. 打开 Artifact Registry Repositories (代码库)页面。

    打开“代码库”页面

    该页面会显示您的代码库列表。

  2. 在代码库列表中,点击代码库名称。

  3. 在映像列表中,点击映像名称。

    系统会打开映像摘要列表。

  4. 在摘要列表中,点击摘要名称。

    系统会打开摘要详情页面,其中包含一行标签页。默认情况下,概览 标签页处于打开状态。

  5. 在标签页行中,选择 Vulnerabilities (漏洞)标签页。

    该页面会显示 Scan results (扫描结果)概览,其中包含 VEX Status (VEX 状态)部分。

    VEX Status (VEX 状态)摘要部分会显示按每种 VEX 状态类型分类的软件包数量。如需查看具有特定 VEX 状态的所有软件包,请点击状态类型旁边的数字。

    Vulnerabilities (漏洞)标签页还会显示漏洞列表中每个软件包的 VEX 状态。

    如需过滤漏洞列表,请执行以下操作:

    1. 在漏洞列表上方,点击 Filter vulnerabilities (过滤漏洞)。
    2. 从过滤条件列表中选择一个过滤条件。
    3. 指定要用于过滤列表的值。

在 Cloud Build 中查看 VEX 状态

如果您使用的是 Cloud Build,还可以在 Security insights(安全性数据洞见)侧边栏中查看 VEX 信息,该侧边栏位于 Google Cloud 控制台内。

如果您使用的是 Cloud Build,可以在 Security insights(安全性数据洞见)侧边栏中查看映像元数据,该侧边栏位于 Google Cloud 控制台内。

Security insights (安全性数据洞见)侧边栏提供了存储在 Artifact Registry 中的工件的构建安全信息的高级概览。如需详细了解 该侧边栏以及如何使用 Cloud Build 来帮助保护您的 软件供应链,请参阅 查看构建安全性数据洞见

使用 gcloud CLI 查看

以下部分介绍了如何检索 VEX 信息以及如何应用过滤条件来根据您的需求限制结果。

查看单个工件的 VEX 信息

如需查看上传的 VEX 信息,您可以查询 API 并列出备注类型为 VULNERABILITY_ASSESSMENT 的备注。

使用以下 API 调用来请求指定工件的所有漏洞评估备注:

curl -G -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    --data-urlencode "filter=(kind=\"VULNERABILITY_ASSESSMENT\" AND vulnerability_assessment.product.generic_uri=\"https://LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME@DIGEST\"" https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/notes

地点

  • LOCATION 是代码库的单区域或多区域位置。
  • PROJECT_ID 是在其中将映像存储在 Artifact Registry 代码库中的 Google Cloud 项目的 ID。
  • REPO_NAME 是包含映像的 Artifact Registry 代码库的名称。
  • IMAGE_NAME 是映像的名称。
  • DIGEST 是映像摘要,即以 sha256: 开头的字符串。

按 VEX 状态过滤漏洞

使用 gcloud,您可以按 VEX 状态过滤漏洞元数据。Artifact Analysis 会根据存储在每个 Grafeas 漏洞发生实例中的状态进行过滤。

运行以下命令,根据指定的 VEX 状态过滤漏洞发生实例:

gcloud artifacts vulnerabilities list RESOURCE_URI \
    --occurrence-filter="vulnDetails.vex_assessment.state=\"STATUS\""

地点

  • RESOURCE_URI 是映像的完整网址,类似于 https://LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID@sha256:HASH。
  • STATUS 是要过滤的 VEX 状态,可以是以下值之一:known_affectedknown_not_affectedunder_investigationfixed

例如,运行以下命令可过滤 VEX 状态为 AFFECTED 的漏洞发生实例:

gcloud artifacts vulnerabilities list RESOURCE_URI \
    --occurrence-filter="vulnDetails.vex_assessment.state=\"AFFECTED\""

列出没有 VEX 的漏洞

如需确定哪些漏洞尚未关联任何 VEX 信息,请使用以下 gcloud 命令:

gcloud artifacts vulnerabilities list /
    LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME@DIGEST /--occurrence-filter="isNull(vulnDetails.vex_assessment.state)"

地点

  • LOCATION 是代码库的单区域或多区域位置。
  • PROJECT_ID 是在其中将映像存储在 Artifact Registry 代码库中的 Google Cloud 项目的 ID。
  • REPO_NAME 是包含映像的 Artifact Registry 代码库的名称。
  • IMAGE_NAME 是映像的名称。
  • DIGEST 是映像摘要,即以 sha256: 开头的字符串。

限制

  • 仅支持为容器映像上传 VEX 声明。
  • 上传的 VEX 声明无法导出为 CSAF、OpenVex 或 SPDX 标准。

后续步骤