Docker Scout 镜像分析
当您为仓库激活镜像分析时,Docker Scout 会自动分析您推送到该仓库的新镜像。
镜像分析会提取软件物料清单 (SBOM) 和其他镜像元数据,并根据来自安全公告的漏洞数据对其进行评估。
如果您使用 CLI 或 Docker Desktop 将镜像分析作为一次性任务运行,Docker Scout 不会存储关于您的镜像的任何数据。但是,如果您为您的容器镜像仓库启用 Docker Scout,Docker Scout 会在分析后保存您的镜像的元数据快照。随着新的漏洞数据的出现,Docker Scout 会使用元数据快照重新校准分析,这意味着您的镜像安全状态会实时更新。这种动态评估意味着当公开新的 CVE 信息时,无需重新分析镜像。
Docker Scout 镜像分析默认情况下可用于 Docker Hub 仓库。您还可以集成第三方注册表和其他服务。要了解更多信息,请参阅将 Docker Scout 与其他系统集成。
在仓库上激活 Docker Scout
Docker Scout 的免费层允许您为每个 Docker 组织最多使用 3 个仓库。如果您需要其他仓库,可以更新您的 Docker Scout 计划,请参阅Docker Scout 计费。
在您可以激活第三方注册表中仓库上的镜像分析之前,必须为您的 Docker 组织将注册表与 Docker Scout 集成。Docker Hub 默认集成。有关更多信息,请参阅容器注册表集成
注意
您必须在 Docker 组织中具有编辑者或所有者角色才能在仓库上激活镜像分析。
要激活镜像分析
- 在 Docker Scout 仪表盘中转到仓库设置。
- 选择您要启用的仓库。
- 选择启用镜像分析。
如果您的仓库已包含镜像,Docker Scout 会自动提取并分析最新的镜像。
分析注册表镜像
要触发对注册表中图像的图像分析,请将图像推送到已与 Docker Scout 集成的注册表,以及已激活图像分析的存储库。
注意
Docker Scout 平台上的图像分析对图像文件大小的最大限制为 10 GB,除非图像具有 SBOM 证明。请参阅 最大图像大小。
使用您的 Docker ID 登录,可以使用
docker login
命令或 Docker Desktop 中的**登录**按钮。构建并推送您要分析的图像。
$ docker build --push --tag <org>/<image:tag> --provenance=true --sbom=true .
使用
--provenance=true
和--sbom=true
标记进行构建会将 构建证明 附加到图像。Docker Scout 使用证明来提供更细粒度的分析结果。注意
默认的
docker
驱动程序仅在您使用 containerd 镜像存储 时才支持构建证明。在 Docker Scout 仪表板中访问 图像页面。
将图像推送到注册表后不久,它就会出现在列表中。分析结果可能需要几分钟才能显示。
在本地分析镜像
您可以使用 Docker Desktop 或 Docker CLI 的 docker scout
命令使用 Docker Scout 分析本地图像。
Docker Desktop
注意
Docker Desktop 后台索引支持最大 10 GB 的图像。请参阅 最大图像大小。
要使用 Docker Desktop GUI 在本地分析图像
拉取或构建您要分析的图像。
在 Docker 仪表板中转到**图像**视图。
选择列表中的一个本地图像。
这将打开 图像详细信息视图,显示 Docker Scout 对所选图像进行分析后发现的软件包和漏洞的细分。
CLI
docker scout
CLI 命令提供了一个命令行界面,用于从您的终端使用 Docker Scout。
docker scout quickview
:指定图像的摘要,请参阅 快速查看docker scout cves
:指定图像的本地分析,请参阅 CVEdocker scout compare
:分析并比较两个图像
默认情况下,结果会打印到标准输出。您还可以将结果导出到结构化格式的文件中,例如静态分析结果交换格式 (SARIF)。
快速查看
docker scout quickview
命令提供对给定图像及其基础图像中发现的漏洞的概述。
$ docker scout quickview traefik:latest
✓ SBOM of image already cached, 311 packages indexed
Your image traefik:latest │ 0C 2H 8M 1L
Base image alpine:3 │ 0C 0H 0M 0L
如果您的基础映像已过期,quickview
命令还会显示更新您的基础映像将如何改变您的映像的漏洞风险。
$ docker scout quickview postgres:13.1
✓ Pulled
✓ Image stored for indexing
✓ Indexed 187 packages
Your image postgres:13.1 │ 17C 32H 35M 33L
Base image debian:buster-slim │ 9C 14H 9M 23L
Refreshed base image debian:buster-slim │ 0C 1H 6M 29L
│ -9 -13 -3 +6
Updated base image debian:stable-slim │ 0C 0H 0M 17L
│ -9 -14 -9 -6
CVE
docker scout cves
命令可让您全面了解图像中的所有漏洞。此命令支持多个标志,使您可以更精确地指定您感兴趣的漏洞,例如按严重性或软件包类型。
$ docker scout cves --format only-packages --only-vuln-packages \
--only-severity critical postgres:13.1
✓ SBOM of image already cached, 187 packages indexed
✗ Detected 10 vulnerable packages with a total of 17 vulnerabilities
Name Version Type Vulnerabilities
───────────────────────────────────────────────────────────────────────────
dpkg 1.19.7 deb 1C 0H 0M 0L
glibc 2.28-10 deb 4C 0H 0M 0L
gnutls28 3.6.7-4+deb10u6 deb 2C 0H 0M 0L
libbsd 0.9.1-2 deb 1C 0H 0M 0L
libksba 1.3.5-2 deb 2C 0H 0M 0L
libtasn1-6 4.13-3 deb 1C 0H 0M 0L
lz4 1.8.3-1 deb 1C 0H 0M 0L
openldap 2.4.47+dfsg-3+deb10u5 deb 1C 0H 0M 0L
openssl 1.1.1d-0+deb10u4 deb 3C 0H 0M 0L
zlib 1:1.2.11.dfsg-1 deb 1C 0H 0M 0L
有关这些命令以及如何使用它们的更多信息,请参阅 CLI 参考文档。
漏洞严重性评估
Docker Scout 根据来自 咨询来源 的漏洞数据为漏洞分配严重性等级。根据受漏洞影响的软件包类型对咨询进行排名和优先级排序。例如,如果漏洞影响操作系统软件包,则优先使用发行版维护程序分配的严重性级别。
如果首选咨询来源已为 CVE 分配严重性等级,但未分配 CVSS 分数,则 Docker Scout 将回退到显示来自其他来源的 CVSS 分数。首选咨询的严重性等级和回退咨询的 CVSS 分数将一起显示。这意味着如果首选咨询分配了低
等级但没有 CVSS 分数,而回退咨询分配了 9.8 的 CVSS 分数,则漏洞的严重性等级可以为低
,CVSS 分数为 9.8。
任何来源均未分配 CVSS 分数的漏洞将被归类为**未指定** (U)。
Docker Scout 没有实现专有的漏洞指标系统。所有指标都继承自 Docker Scout 集成的安全咨询。咨询可能使用不同的阈值来对漏洞进行分类,但大多数咨询都遵守 CVSS v3.0 规范,该规范根据下表将 CVSS 分数映射到严重性等级。
CVSS 分数 | 严重性等级 |
---|---|
0.1 – 3.9 | 低 (L) |
4.0 – 6.9 | 中 (M) |
7.0 – 8.9 | 高 (H) |
9.0 – 10.0 | 严重 (C) |
更多信息,请参阅 漏洞指标 (NIST)。
请注意,鉴于前面描述的咨询优先级和回退机制,Docker Scout 中显示的严重性等级可能与该评级系统有所偏差。
最大镜像大小
Docker Scout 平台上的图像分析以及 Docker Desktop 中后台索引触发的分析的图像文件大小限制为 10 GB(未压缩)。要分析更大的图像,您可以:
使用 CLI 在本地分析的图像和具有 SBOM 证明的图像没有最大文件大小限制。