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 组织使用 Docker Scout 访问最多 3 个存储库。如果你需要更多存储库,可以更新你的 Docker Scout 计划,请参见 Docker Scout 计费。
在你可以激活第三方注册表中存储库上的镜像分析之前,该注册表必须与你的 Docker 组织的 Docker Scout 集成。Docker Hub 默认情况下已集成。有关更多信息,请参见 容器注册表集成
注意
你必须在 Docker 组织中具有 **编辑者** 或 **所有者** 角色才能在存储库上激活镜像分析。
要激活镜像分析
- 转到 Docker Scout 仪表盘中的 存储库设置。
- 选择你想要启用的存储库。
- 选择 **启用镜像分析**。
如果你的存储库已经包含镜像,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 使用证明提供更细粒度的分析结果。注意
默认的
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 根据来自 公告源 的漏洞数据为漏洞分配严重程度等级。公告根据受漏洞影响的软件包类型进行排名和优先排序。例如,如果漏洞影响 OS 软件包,则优先考虑分发维护者分配的严重程度级别。
如果首选公告源已为 CVE 分配严重程度等级,但没有分配 CVSS 评分,则 Docker Scout 会回退到显示来自其他源的 CVSS 评分。首选公告的严重程度等级和回退公告的 CVSS 评分将一起显示。这意味着漏洞可以具有 LOW
的严重程度等级,CVSS 评分为 9.8,如果首选公告分配 LOW
等级但没有分配 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 证明的图像没有最大文件大小限制。