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 组织中具有编辑者所有者角色才能在仓库上激活镜像分析。

要激活镜像分析

  1. 在 Docker Scout 仪表盘中转到仓库设置
  2. 选择您要启用的仓库。
  3. 选择启用镜像分析

如果您的仓库已包含镜像,Docker Scout 会自动提取并分析最新的镜像。

分析注册表镜像

要触发对注册表中图像的图像分析,请将图像推送到已与 Docker Scout 集成的注册表,以及已激活图像分析的存储库。

注意

Docker Scout 平台上的图像分析对图像文件大小的最大限制为 10 GB,除非图像具有 SBOM 证明。请参阅 最大图像大小

  1. 使用您的 Docker ID 登录,可以使用 docker login 命令或 Docker Desktop 中的**登录**按钮。

  2. 构建并推送您要分析的图像。

    $ docker build --push --tag <org>/<image:tag> --provenance=true --sbom=true .
    

    使用 --provenance=true--sbom=true 标记进行构建会将 构建证明 附加到图像。Docker Scout 使用证明来提供更细粒度的分析结果。

    注意

    默认的 docker 驱动程序仅在您使用 containerd 镜像存储 时才支持构建证明。

  3. 在 Docker Scout 仪表板中访问 图像页面

    将图像推送到注册表后不久,它就会出现在列表中。分析结果可能需要几分钟才能显示。

在本地分析镜像

您可以使用 Docker Desktop 或 Docker CLI 的 docker scout 命令使用 Docker Scout 分析本地图像。

Docker Desktop

注意

Docker Desktop 后台索引支持最大 10 GB 的图像。请参阅 最大图像大小

要使用 Docker Desktop GUI 在本地分析图像

  1. 拉取或构建您要分析的图像。

  2. 在 Docker 仪表板中转到**图像**视图。

  3. 选择列表中的一个本地图像。

    这将打开 图像详细信息视图,显示 Docker Scout 对所选图像进行分析后发现的软件包和漏洞的细分。

CLI

docker scout CLI 命令提供了一个命令行界面,用于从您的终端使用 Docker Scout。

  • docker scout quickview:指定图像的摘要,请参阅 快速查看
  • docker scout cves:指定图像的本地分析,请参阅 CVE
  • 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 根据来自 咨询来源 的漏洞数据为漏洞分配严重性等级。根据受漏洞影响的软件包类型对咨询进行排名和优先级排序。例如,如果漏洞影响操作系统软件包,则优先使用发行版维护程序分配的严重性级别。

如果首选咨询来源已为 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 证明的图像没有最大文件大小限制。