将 Scout 用于不同类型的制品
一些 Docker Scout CLI 命令支持使用前缀来指定要分析的制品的位置或类型。
默认情况下,docker scout cves
命令的镜像分析目标是 Docker Engine 的本地镜像存储中的镜像。如果本地镜像存在,以下命令始终使用本地镜像:
$ docker scout cves <image>
如果本地不存在该镜像,Docker 会在运行分析之前拉取该镜像。默认情况下,再次分析同一个镜像将使用相同的本地版本,即使注册表中的标签已经发生变化。
通过在镜像引用前添加 registry://
前缀,可以强制 Docker Scout 分析注册表中的镜像版本:
$ docker scout cves registry://<image>
支持的前缀
支持的前缀有:
前缀 | 描述 |
---|---|
image:// (默认) | 使用本地镜像,或回退到注册表查找 |
local:// | 使用 Docker Engine 的本地镜像存储中的镜像 (不进行注册表查找) |
registry:// | 使用注册表中的镜像 (不使用本地镜像) |
oci-dir:// | 使用 OCI 布局目录 |
archive:// | 使用由 docker save 创建的 tarball 归档文件 |
fs:// | 使用本地目录或文件 |
你可以将前缀与以下命令一起使用:
docker scout compare
docker scout cves
docker scout quickview
docker scout recommendations
docker scout sbom
示例
本节包含一些示例,展示了如何使用前缀为 docker scout
命令指定制品。
分析本地项目
fs://
前缀允许直接分析本地源代码,而无需将其构建成容器镜像。以下 docker scout quickview
命令可快速查看当前工作目录中源代码的漏洞摘要:
$ docker scout quickview fs://.
要查看本地源代码中发现的漏洞详情,可以使用 docker scout cves --details fs://.
命令。可以将其与其他标志结合使用,以将结果范围缩小到您感兴趣的软件包和漏洞。
$ docker scout cves --details --only-severity high fs://.
✓ File system read
✓ Indexed 323 packages
✗ Detected 1 vulnerable package with 1 vulnerability
## Overview
│ Analyzed path
────────────────────┼──────────────────────────────
Path │ /Users/david/demo/scoutfs
vulnerabilities │ 0C 1H 0M 0L
## Packages and Vulnerabilities
0C 1H 0M 0L fastify 3.29.0
pkg:npm/fastify@3.29.0
✗ HIGH CVE-2022-39288 [OWASP Top Ten 2017 Category A9 - Using Components with Known Vulnerabilities]
https://scout.docker.com/v/CVE-2022-39288
fastify is a fast and low overhead web framework, for Node.js. Affected versions of
fastify are subject to a denial of service via malicious use of the Content-Type
header. An attacker can send an invalid Content-Type header that can cause the
application to crash. This issue has been addressed in commit fbb07e8d and will be
included in release version 4.8.1. Users are advised to upgrade. Users unable to
upgrade may manually filter out http content with malicious Content-Type headers.
Affected range : <4.8.1
Fixed version : 4.8.1
CVSS Score : 7.5
CVSS Vector : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
1 vulnerability found in 1 package
LOW 0
MEDIUM 0
HIGH 1
CRITICAL 0
将本地项目与镜像进行比较
使用 docker scout compare
,可以将本地文件系统上的源代码分析与容器镜像分析进行比较。以下示例比较了本地源代码 (fs://.
) 与注册表镜像 registry://docker/scout-cli:latest
。在本例中,比较的基线和目标都使用了前缀。
$ docker scout compare fs://. --to registry://docker/scout-cli:latest --ignore-unchanged
WARN 'docker scout compare' is experimental and its behaviour might change in the future
✓ File system read
✓ Indexed 268 packages
✓ SBOM of image already cached, 234 packages indexed
## Overview
│ Analyzed File System │ Comparison Image
─────────────────────────┼────────────────────────────────────────────────┼─────────────────────────────────────────────
Path / Image reference │ /Users/david/src/docker/scout-cli-plugin │ docker/scout-cli:latest
│ │ bb0b01303584
platform │ │ linux/arm64
provenance │ https://github.com/dvdksn/scout-cli-plugin.git │ https://github.com/docker/scout-cli-plugin
│ 6ea3f7369dbdfec101ac7c0fa9d78ef05ffa6315 │ 67cb4ef78bd69545af0e223ba5fb577b27094505
vulnerabilities │ 0C 0H 1M 1L │ 0C 0H 1M 1L
│ │
size │ 7.4 MB (-14 MB) │ 21 MB
packages │ 268 (+34) │ 234
│ │
## Packages and Vulnerabilities
+ 55 packages added
- 21 packages removed
213 packages unchanged
上面的示例已截断,以示简洁。
查看镜像 tarball 的 SBOM
以下示例展示了如何使用 archive://
前缀获取使用 docker save
创建的镜像 tarball 的 SBOM。本例中的镜像是 docker/scout-cli:latest
,SBOM 以 SPDX 格式导出到文件 sbom.spdx.json
。
$ docker pull docker/scout-cli:latest
latest: Pulling from docker/scout-cli
257973a141f5: Download complete
1f2083724dd1: Download complete
5c8125a73507: Download complete
Digest: sha256:13318bb059b0f8b0b87b35ac7050782462b5d0ac3f96f9f23d165d8ed68d0894
$ docker save docker/scout-cli:latest -o scout-cli.tar
$ docker scout sbom --format spdx -o sbom.spdx.json archive://scout-cli.tar
了解更多
请参阅 CLI 参考文档,了解命令和支持的标志。