Docker Scout 技术指南:使用 VEX 文档创建安全例外规则
【免费下载链接】docs Source repo for Docker's Documentation 项目地址: https://gitcode.com/gh_mirrors/docs3/docs
前言
在现代软件开发中,容器镜像的安全性是至关重要的考量因素。Docker Scout 作为 Docker 生态系统中的安全分析工具,提供了强大的安全扫描和例外管理功能。本文将深入讲解如何利用 VEX(Vulnerability Exploitability eXchange)标准文档来创建安全例外规则。
什么是 VEX?
VEX 是由美国网络安全和基础设施安全局(CISA)工作组定义的标准格式,用于在软件包或产品上下文中记录安全信息。它提供了一种结构化方法来描述安全问题的可利用性状态。
VEX 核心概念
-
安全问题状态分类:
- 不受影响(Not affected):无需修复该问题
- 受影响(Affected):建议采取修复措施
- 已修复(Fixed):产品版本已包含修复
- 调查中(Under investigation):尚未确定是否受影响
-
关键组件:
- VEX 文档:存储 VEX 声明的安全公告
- VEX 声明:描述产品中安全问题的声明
- 理由说明:解释为何产品受影响或不受影响
- 行动声明:描述修复或缓解措施
准备工作
在开始创建 VEX 例外前,请确保:
- 已安装最新版 Docker Desktop 或 Docker Scout CLI 插件
- 已安装
vexctl命令行工具 - 已启用 containerd 镜像存储
- 拥有镜像存储仓库的写入权限
实战:创建 VEX 文档
基础示例
以下命令创建一个 VEX 文档,声明:
vexctl create \
--author="security@yourcompany.com" \
--product="pkg:docker/yourcompany/app@v1.2.3" \
--subcomponents="pkg:npm/express@4.17.1" \
--vuln="CVE-2022-24999" \
--status="not_affected" \
--justification="vulnerable_code_not_in_execute_path" \
--file="CVE-2022-24999.vex.json"
参数详解
| 参数 | 说明 | 示例 |
|---|---|---|
--author | 文档作者邮箱 | security@yourcompany.com |
--product | Docker 镜像的 PURL 标识 | pkg:docker/yourcompany/app@v1.2.3 |
--subcomponents | 受影响组件的 PURL | pkg:npm/express@4.17.1 |
--vuln | CVE 编号 | CVE-2022-24999 |
--status | 安全问题状态 | not_affected |
--justification | 状态理由 | vulnerable_code_not_in_execute_path |
PURL 格式说明
Docker 镜像的 PURL(Package URL)格式为:
pkg:docker/<仓库路径>@<版本>
注意版本前使用 @ 而非 :,例如:
- 镜像标签:
yourcompany/app:v1.2.3 - 对应 PURL:
pkg:docker/yourcompany/app@v1.2.3
状态理由选项
OpenVEX 支持以下标准理由:
component_not_present- 组件不存在vulnerable_code_not_present- 问题代码不存在vulnerable_code_not_in_execute_path- 问题代码不在执行路径vulnerable_code_cannot_be_controlled_by_adversary- 问题代码无法被攻击者控制inline_mitigations_already_exist- 已有内联缓解措施
验证 VEX 文档
创建文档后,可使用以下命令验证效果:
docker scout cves yourcompany/app:v1.2.3 --vex-location .
验证时需注意:
- PURL 格式是否正确
- 作者字段是否填写(必填项)
- 理由说明是否符合规范
- 文档是否符合 OpenVEX 规范
附加 VEX 文档到镜像
有两种主要方式将 VEX 文档与镜像关联:
1. 作为证明附加(推荐)
# 首先构建并推送镜像
docker build --provenance=true --sbom=true --tag yourcompany/app:v1.2.3 --push .
# 附加VEX证明
docker scout attestation add \
--file CVE-2022-24999.vex.json \
--predicate-type https://openvex.dev/ns/v0.2.0 \
yourcompany/app:v1.2.3
优点:
- 无需重新构建镜像
- 可随时更新
- 便于消费者从仓库直接查看
2. 嵌入镜像文件系统
在 Dockerfile 中添加:
FROM alpine
COPY *.vex.json /var/lib/vex/
注意事项:
- 文件必须匹配
*.vex.json模式 - 多阶段构建时需确保文件保留在最终镜像中
- 一旦构建无法修改
最佳实践建议
- 优先使用证明附加:相比嵌入文件系统,证明附加更灵活且可维护
- 明确理由说明:选择最准确的安全问题状态理由
- 定期审查例外:随着软件更新,重新评估例外规则的有效性
- 文档版本控制:对 VEX 文档进行版本管理,便于追踪变更
- 团队协作:确保安全团队和开发团队对例外规则达成共识
总结
通过 VEX 文档创建安全例外是 Docker Scout 提供的高级安全功能,它允许团队基于实际情况对安全扫描结果进行精细化管理。掌握这项技术可以帮助团队在保证安全性的同时,减少不必要的问题告警干扰,更专注于真正需要解决的安全问题。
记住,例外规则是一把双刃剑,合理使用能提高效率,滥用则可能带来安全风险。建议建立严格的例外审批流程,并定期复查所有例外规则的适用性。
【免费下载链接】docs Source repo for Docker's Documentation 项目地址: https://gitcode.com/gh_mirrors/docs3/docs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



