查看 VEX 状态

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

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

所需的角色

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

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

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

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

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

  1. 打开 Artifact Registry 的代码库页面。

    打开“代码库”页面

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

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

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

    系统会显示映像摘要的列表。

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

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

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

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

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

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

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

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

在 Cloud Build 中查看 VEX 状态

如果您使用的是 Cloud Build,还可以在 Google Cloud 控制台内的安全洞见侧边栏中查看 VEX 信息。

如果您使用的是 Cloud Build,则可以在 Google Cloud 控制台内的安全洞见侧边栏中查看映像元数据。

安全性数据洞见侧边栏可提供存储在 Artifact Registry 中的工件的 build 安全信息的高级概览。如需详细了解侧边栏以及如何使用 Cloud Build 帮助保护软件供应链,请参阅查看 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 是 Google Cloud 项目的 ID,您的映像存储在该项目的 Artifact Registry 制品库中。
  • 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 是 Google Cloud 项目的 ID,您的映像存储在该项目的 Artifact Registry 制品库中。
  • REPO_NAME 是包含相应映像的 Artifact Registry 制品库的名称。
  • IMAGE_NAME 是映像的名称。
  • DIGEST 是映像摘要,一个以 sha256: 开头的字符串。

限制

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

后续步骤