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 Personal 附带 1 个支持 Scout 的仓库。如果您需要额外的仓库,可以升级您的 Docker 订阅。请参阅 订阅和功能 了解每个订阅层级附带多少个支持 Scout 的仓库。
在您可以在第三方注册表中的存储库上激活图像分析之前,该注册表必须与您的Docker组织的Docker Scout集成。Docker Hub默认已集成。有关更多信息,请参见 容器注册表集成
注意
您必须在Docker组织中拥有Editor或Owner角色才能在存储库上激活镜像分析。
激活图像分析:
- 前往 仓库设置 在 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 Desktop
注意
Docker Desktop 后台索引支持最大 10 GB 大小的镜像。 请参阅 最大镜像大小。
要使用Docker Desktop GUI在本地分析图像:
拉取或构建您想要分析的镜像。
转到 Docker 仪表板中的 Images 视图。
在列表中选择您的一个本地图像。
这将打开 镜像详情视图,显示 Docker Scout 分析为您选择的镜像发现的包和漏洞的详细情况。
CLI
docker scout CLI 命令提供了一个命令行界面,用于从您的终端使用 Docker Scout。
docker scout quickview: 指定镜像的摘要,请参阅 快速查看docker scout cves: 对指定镜像进行本地分析,参见 CVEsdocker 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
CVEs
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评分会一起显示。这意味着如果首选咨询分配了LOW评级但没有CVSS评分,而回退咨询分配了9.8的CVSS评分,那么漏洞可能会有一个LOW的严重性评级和9.8的CVSS评分。
在任何来源中未被分配CVSS分数的漏洞被分类为未指定 (U)。
Docker Scout 没有实现专有的漏洞度量系统。所有度量都是从 Docker Scout 集成的安全公告中继承的。公告可能使用不同的阈值来分类漏洞,但大多数都遵循 CVSS v3.0 规范,该规范根据下表将 CVSS 分数映射到严重性评级:
| CVSS score | Severity rating |
|---|---|
| 0.1 – 3.9 | Low (L) |
| 4.0 – 6.9 | Medium (M) |
| 7.0 – 8.9 | High (H) |
| 9.0 – 10.0 | Critical (C) |
欲了解更多信息,请参阅 漏洞指标 (NIST).
请注意,鉴于前面描述的咨询优先级和回退机制,Docker Scout 中显示的严重性评级可能会与此评级系统有所不同。
最大图像尺寸
在Docker Scout平台上进行镜像分析,以及由Docker Desktop后台索引触发的分析,有一个镜像文件大小限制为10 GB(未压缩)。要分析大于此大小的镜像,您可以:
使用CLI本地分析的图像和带有SBOM证明的图像没有最大文件大小限制。