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

激活镜像分析

  1. 转到 Docker Scout Dashboard 中的仓库设置
  2. 选择要启用的仓库。
  3. 选择 **启用镜像分析**。

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

分析注册表镜像

要触发注册表中镜像的镜像分析,请将镜像推送到已与 Docker Scout 集成的注册表,推送到已激活镜像分析的仓库。

注意

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

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

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

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

    使用 `--provenance=true` 和 `--sbom=true` 标志进行构建会将构建证明附加到镜像中。Docker Scout 使用证明来提供更精细的分析结果。

    注意

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

  3. 转到 Docker Scout Dashboard 中的镜像页面

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

本地分析镜像

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

Docker Desktop

注意

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

使用 Docker Desktop GUI 本地分析镜像

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

  2. 在 Docker Dashboard 中转到 **镜像** 视图。

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

    这将打开镜像详细信息视图,显示 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 证明的镜像没有最大文件大小限制。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.