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组织中拥有EditorOwner角色才能在存储库上激活镜像分析。

激活图像分析:

  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 Desktop

注意

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

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

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

  2. 转到 Docker 仪表板中的 Images 视图。

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

    这将打开 镜像详情视图,显示 Docker Scout 分析为您选择的镜像发现的包和漏洞的详细情况。

CLI

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

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 scoreSeverity rating
0.1 – 3.9Low (L)
4.0 – 6.9Medium (M)
7.0 – 8.9High (H)
9.0 – 10.0Critical (C)

欲了解更多信息,请参阅 漏洞指标 (NIST).

请注意,鉴于前面描述的咨询优先级和回退机制,Docker Scout 中显示的严重性评级可能会与此评级系统有所不同。

最大图像尺寸

在Docker Scout平台上进行镜像分析,以及由Docker Desktop后台索引触发的分析,有一个镜像文件大小限制为10 GB(未压缩)。要分析大于此大小的镜像,您可以:

使用CLI本地分析的图像和带有SBOM证明的图像没有最大文件大小限制。