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 Scout 最多 3 个 每个 Docker 组织的存储库。如果满足以下条件,您可以更新您的 Docker Scout 计划 您需要额外的存储库,请参阅 Docker Scout 计费

在第三方注册表中的存储库上激活镜像分析之前, 注册表必须与 Docker 组织的 Docker Scout 集成。 默认情况下,Docker Hub 处于集成状态。有关更多信息,请参阅 请参阅 Container Registry 集成

注意

您必须在 Docker 组织中具有 EditorOwner 角色才能 在存储库上激活 Image Analysis。

要激活镜像分析:

  1. 转到 Docker Scout 控制面板中的 Repository settings (存储库设置)。
  2. 选择要启用的存储库。
  3. 选择 Enable image analysis(启用镜像分析)。

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

分析注册表镜像

要触发注册表中镜像的镜像分析,请将该镜像推送到 注册表中,将镜像 分析已激活。

注意

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

  1. 使用命令或 Docker Desktop 中的 Sign in (登录) 按钮,使用 Docker ID 登录。docker login

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

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

    带有 和 flags 的 Building 会将 build 证明附加到镜像。Docker Scout 使用证明提供更精细的分析结果。--provenance=true--sbom=true

    注意

    如果您使用 containerd 镜像存储,则默认驱动程序仅支持构建证明。docker

  3. 转到 Docker Scout 控制面板中的 Images (镜像) 页面

    该镜像在您将镜像推送到注册表后不久就会显示在列表中。 分析结果可能需要几分钟才能显示。

在本地分析镜像

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

Docker 桌面

注意

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

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

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

  2. 转到 Docker 控制面板中的 Images (镜像) 视图。

  3. 在列表中选择一个本地镜像。

    这将打开 Image details (镜像详细信息) 视图,其中显示一个 Docker Scout 分析发现的软件包和漏洞的细分 对于您选择的镜像。

命令行界面

CLI 命令提供了使用 Docker 的命令行界面 从您的终端侦察。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 根据 来自咨询来源的漏洞数据。 公告的排名和优先级取决于包的类型 受漏洞影响。例如,如果漏洞影响了操作系统 package 中,发行版维护者分配的严重性级别为 优先。

如果首选咨询源已为 CVE 分配了严重性评级,但 而不是 CVSS 分数,Docker Scout 会回退到显示 CVSS 分数 另一个来源。首选公告和 CVSS 的严重性评级 Score 的 Score 一起显示。这意味着 如果 CVSS 评分为 9.8,则漏洞的严重性评级为 9.8 首选公告分配评级,但不分配 CVSS 分数,并分配回退 advisory 分配的 CVSS 分数为 9.8。LOWLOW

未在任何来源中分配 CVSS 分数的漏洞是 分类为 Unspecified (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)。

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

最大镜像大小

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

使用 CLI 在本地分析的镜像和使用 SBOM 证明的镜像 没有最大文件大小。