本文档介绍了如何创建漏洞可利用性交流 (VEX) 语句。
对于推送到 Artifact Registry 的每个容器映像,Artifact Analysis 都可以存储关联的 VEX 语句。VEX 是一种安全建议,用于指明产品是否受到已知漏洞的影响。
每条语句都提供以下信息:
- VEX 声明的发布商
- 为其编写语句的工件
- 任何已知漏洞的漏洞评估 (VEX 状态)
软件发布商可以创建 VEX 语句来描述应用的安全状况。VEX 声明会记录在特定工件中发现的任何漏洞,并提供有关这些漏洞对客户或监管机构的影响的背景信息。
安全和政策强制执行者可以使用 VEX 状态来分类软件供应链中的风险,并使用 VEX 语句来证明工件的组成,以帮助组织满足监管要求。
VEX 状态
VEX 状态指示工件是否受到已知漏洞的影响。
状态可以是以下任一状态:
- 不受影响:无需对此漏洞采取修复措施。
- 受影响:建议采取修复措施。
- 已修复:在此版本的产品中,已采取修复措施来修复此漏洞。
- 正在调查:此商品的状态尚未确定。 发布方将在后续版本中提供更新后的状态。
准备工作
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Container Analysis, Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Container Analysis, Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 将容器映像存储在 Artifact Registry 代码库中,或创建代码库并推送映像。
所需的角色
如需获得上传 VEX 评估和查看漏洞的 VEX 状态所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
如需创建和更新备注,请使用 Container Analysis Notes Editor (
roles/containeranalysis.notes.editor
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建 VEX 语句
Artifact Analysis 支持 JSON 中的 Common Security Advisory Format (CSAF) 2.0 标准。如需生成新的 VEX 语句,请使用 CSAF 架构。
以下是 Artifact Registry 中某个映像的 VEX 语句示例,其中包含一个 cve
分支,用于表示存在已知漏洞。
您必须为每个 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
。
对于您要在 VEX 语句中列出的每个漏洞,您都必须创建一个 cve
分支并定义 product_status
的值。
product_tree.branches.name
中的 name
字段的值是图片 URI。添加此值可将 VEX 语句与特定 Docker 映像相关联。