Docker Scout 技术指南:使用 VEX 文档创建安全例外规则

Docker Scout 技术指南:使用 VEX 文档创建安全例外规则

【免费下载链接】docs Source repo for Docker's Documentation 【免费下载链接】docs 项目地址: https://gitcode.com/gh_mirrors/docs3/docs

前言

在现代软件开发中,容器镜像的安全性是至关重要的考量因素。Docker Scout 作为 Docker 生态系统中的安全分析工具,提供了强大的安全扫描和例外管理功能。本文将深入讲解如何利用 VEX(Vulnerability Exploitability eXchange)标准文档来创建安全例外规则。

什么是 VEX?

VEX 是由美国网络安全和基础设施安全局(CISA)工作组定义的标准格式,用于在软件包或产品上下文中记录安全信息。它提供了一种结构化方法来描述安全问题的可利用性状态。

VEX 核心概念

  1. 安全问题状态分类

    • 不受影响(Not affected):无需修复该问题
    • 受影响(Affected):建议采取修复措施
    • 已修复(Fixed):产品版本已包含修复
    • 调查中(Under investigation):尚未确定是否受影响
  2. 关键组件

    • VEX 文档:存储 VEX 声明的安全公告
    • VEX 声明:描述产品中安全问题的声明
    • 理由说明:解释为何产品受影响或不受影响
    • 行动声明:描述修复或缓解措施

准备工作

在开始创建 VEX 例外前,请确保:

  1. 已安装最新版 Docker Desktop 或 Docker Scout CLI 插件
  2. 已安装 vexctl 命令行工具
  3. 已启用 containerd 镜像存储
  4. 拥有镜像存储仓库的写入权限

实战:创建 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
--productDocker 镜像的 PURL 标识pkg:docker/yourcompany/app@v1.2.3
--subcomponents受影响组件的 PURLpkg:npm/express@4.17.1
--vulnCVE 编号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 支持以下标准理由:

  1. component_not_present - 组件不存在
  2. vulnerable_code_not_present - 问题代码不存在
  3. vulnerable_code_not_in_execute_path - 问题代码不在执行路径
  4. vulnerable_code_cannot_be_controlled_by_adversary - 问题代码无法被攻击者控制
  5. inline_mitigations_already_exist - 已有内联缓解措施

验证 VEX 文档

创建文档后,可使用以下命令验证效果:

docker scout cves yourcompany/app:v1.2.3 --vex-location .

验证时需注意:

  1. PURL 格式是否正确
  2. 作者字段是否填写(必填项)
  3. 理由说明是否符合规范
  4. 文档是否符合 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 模式
  • 多阶段构建时需确保文件保留在最终镜像中
  • 一旦构建无法修改

最佳实践建议

  1. 优先使用证明附加:相比嵌入文件系统,证明附加更灵活且可维护
  2. 明确理由说明:选择最准确的安全问题状态理由
  3. 定期审查例外:随着软件更新,重新评估例外规则的有效性
  4. 文档版本控制:对 VEX 文档进行版本管理,便于追踪变更
  5. 团队协作:确保安全团队和开发团队对例外规则达成共识

总结

通过 VEX 文档创建安全例外是 Docker Scout 提供的高级安全功能,它允许团队基于实际情况对安全扫描结果进行精细化管理。掌握这项技术可以帮助团队在保证安全性的同时,减少不必要的问题告警干扰,更专注于真正需要解决的安全问题。

记住,例外规则是一把双刃剑,合理使用能提高效率,滥用则可能带来安全风险。建议建立严格的例外审批流程,并定期复查所有例外规则的适用性。

【免费下载链接】docs Source repo for Docker's Documentation 【免费下载链接】docs 项目地址: https://gitcode.com/gh_mirrors/docs3/docs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值