本文档介绍了如何查看存储在 Artifact Analysis 中的 Vulnerability Exploitability eXchange (VEX) 语句,以及如何使用 VEX 状态过滤漏洞。
安全和政策违规处置人员可以使用这些功能来确定安全问题缓解任务的优先级。您还可以使用 VEX 数据来证明工件组成,帮助贵组织满足监管要求。
所需的角色
如需获得上传 VEX 评估和查看漏洞的 VEX 状态所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
如需查看漏洞出现情况,请使用 Container Analysis Occurrences Viewer (
roles/containeranalysis.occurrences.viewer
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
在 Google Cloud 控制台中查看 VEX 状态
如需查看存储在 Artifact Registry 中的容器映像的 VEX 信息,请执行以下操作:
打开 Artifact Registry 的代码库页面。
该页面会显示您的代码库列表。
在代码库列表中,点击相应代码库的名称。
在图片列表中,点击图片名称。
系统随即会打开图片摘要列表。
在摘要列表中,点击摘要名称。
系统随即会打开一个摘要详情页面,其中包含一排标签页。默认情况下,系统会打开概览标签页。
在标签页行中,选择漏洞标签页。
该页面会显示扫描结果概览,其中包含 VEX 状态部分。
VEX 状态摘要部分会显示按每种 VEX 状态类型分类的软件包数量。如需查看具有特定 VEX 状态的所有软件包,请点击状态类型旁边的数字。
漏洞标签页还会显示漏洞列表中每个软件包的 VEX 状态。
如需过滤漏洞列表,请执行以下操作:
- 在漏洞列表上方,点击过滤漏洞。
- 从过滤条件列表中选择一个过滤条件。
- 指定要用于过滤列表的值。
在 Cloud Build 中查看 VEX 状态
如果您使用的是 Cloud Build,还可以在 Google Cloud 控制台的安全分析侧边栏中查看 VEX 信息。
如果您使用的是 Cloud Build,则可以在 Google Cloud 控制台的安全分析侧边栏中查看映像元数据。
安全性数据分析侧边栏概要介绍了存储在 Artifact Registry 中的工件的构建安全信息。如需详细了解侧边栏以及如何使用 Cloud Build 帮助保护软件供应链,请参阅查看 build 安全数据分析。
使用 gcloud CLI 查看
以下部分介绍了如何检索 VEX 信息以及如何应用过滤条件以根据您的需求限制结果。
查看单个工件的 VEX 信息
如需查看上传的 VEX 信息,您可以查询 API 并列出记事类型为 VULNERABILITY_ASSESSMENT
的记事。
您可以使用以下 API 调用请求指定工件的所有漏洞评估备注:
curl --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_affected
、known_not_affected
、under_investigation
或fixed
。
例如,运行以下命令可过滤出 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 标准。