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 组织中拥有 **编辑者** 或 **所有者** 角色才能在仓库上激活镜像分析。
激活镜像分析
- 转到 Docker Scout Dashboard 中的仓库设置。
- 选择要启用的仓库。
- 选择 **启用镜像分析**。
如果您的仓库已包含镜像,Docker Scout 会自动拉取并分析最新的镜像。
分析注册表镜像
要触发注册表中镜像的镜像分析,请将镜像推送到已与 Docker Scout 集成的注册表,推送到已激活镜像分析的仓库。
注意Docker Scout 平台上的镜像分析最大镜像文件大小限制为 10 GB,除非镜像具有 SBOM 证明。请参阅最大镜像大小。
使用 `docker login` 命令或 Docker Desktop 中的 **登录** 按钮登录您的 Docker ID。
构建并推送您要分析的镜像。
$ docker build --push --tag <org>/<image:tag> --provenance=true --sbom=true .使用 `--provenance=true` 和 `--sbom=true` 标志进行构建会将构建证明附加到镜像中。Docker Scout 使用证明来提供更精细的分析结果。
注意如果使用containerd 镜像存储,默认的 `docker` 驱动程序才支持构建证明。
转到 Docker Scout Dashboard 中的镜像页面。
镜像在推送到注册表后不久就会出现在列表中。分析结果可能需要几分钟才能显示。
本地分析镜像
您可以使用 Docker Desktop 或 Docker CLI 的 `docker scout` 命令,使用 Docker Scout 分析本地镜像。
Docker Desktop
注意Docker Desktop 后台索引支持最大 10 GB 的镜像。请参阅最大镜像大小。
使用 Docker Desktop GUI 本地分析镜像
拉取或构建您要分析的镜像。
在 Docker Dashboard 中转到 **镜像** 视图。
在列表中选择您的一个本地镜像。
这将打开镜像详细信息视图,显示 Docker Scout 对您选择的镜像进行的分析所发现的软件包和漏洞的详细信息。
命令行界面
`docker scout` CLI 命令提供了从终端使用 Docker Scout 的命令行界面。
- `docker scout quickview`:指定镜像的摘要,请参阅快速视图
- `docker scout cves`:指定镜像的本地分析,请参阅CVEs
- `docker 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 根据来自建议来源的漏洞数据为漏洞分配严重性评级。建议根据受漏洞影响的软件包类型进行排名和优先排序。例如,如果漏洞影响 OS 软件包,则优先考虑发行版维护者分配的严重性级别。
如果首选建议来源已为 CVE 分配了严重性评级,但未分配 CVSS 分数,Docker Scout 会回退显示来自另一个来源的 CVSS 分数。首选建议的严重性评级和回退建议的 CVSS 分数会一起显示。这意味着,如果首选建议分配了 `LOW` 评级但没有 CVSS 分数,并且回退建议分配了 9.8 的 CVSS 分数,则漏洞的严重性评级可能为 `LOW`,但 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 证明的镜像没有最大文件大小限制。