本文档介绍如何创建 漏洞可利用性交流 (VEX) 声明。
对于推送到 Artifact Registry 的每个容器映像,Artifact Analysis 都可以存储关联的 VEX 声明。VEX 是一种安全建议,用于指明产品是否受到已知漏洞的影响。
每项陈述都提供以下信息:
- VEX 声明的发布商
- 声明所针对的制品
- 针对任何已知漏洞的漏洞评估(VEX 状态)
软件发布者可以创建 VEX 声明来描述应用的安全状况。VEX 声明会记录在特定制品中发现的任何漏洞,并提供有关这些漏洞对客户或监管机构的影响的背景信息。
安全和政策执行者可以使用 VEX 状态来对软件供应链中的风险进行分类,并使用 VEX 声明来证明其制品的组成,以帮助组织满足监管要求。
VEX 状态
VEX 状态指示制品是否受到已知漏洞的影响。
状态可以是以下之一:
- 不受影响:无需对此漏洞采取修复措施。
- 受影响:建议采取修复措施。
- 已修复:在此版本的产品中,已采取修复措施来解决此漏洞。
- 正在调查:此产品的状态尚未确定。 发布方将在后续版本中提供更新后的状态。
准备工作
-
登录您的 Google 账号。
如果您还没有 Google 账号,请 注册新账号。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Container Analysis, Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Container Analysis, Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init - 将容器映像存储在 Artifact Registry 代码库中,或者创建代码库并推送映像。
所需的角色
如需获得上传 VEX 评估和检查漏洞的 VEX 状态所需的权限,请让您的管理员向您授予项目的以下 IAM 角色:
-
如需创建和更新备注,请使用:Container Analysis Notes Editor (
roles/containeranalysis.notes.editor)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。
创建 VEX 声明
Artifact Analysis 支持 JSON 格式的 通用安全建议格式 (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 映像相关联。