Docker Scout 快速入门
Docker Scout 分析镜像内容并生成详细的软件包报告 以及它检测到的漏洞。它可以为您提供 有关如何修复 Image Analysis 发现的问题的建议。
本指南采用易受攻击的容器镜像,并向您展示如何使用 Docker 侦察 以识别和修复漏洞,比较一段时间内的镜像版本, 并与您的团队分享结果。
第 1 步:设置
此示例项目包含 一个易受攻击的 Node.js 应用程序,您可以使用它来跟踪。
克隆其存储库:
$ git clone https://github.com/docker/scout-demo-service.git
移动到目录中:
$ cd scout-demo-service
确保您已登录到 Docker 帐户, 通过运行命令或使用 Docker Desktop 登录。
docker login
构建镜像并将其推送到 、 其中 是您推送到的 Docker Hub 命名空间。
<ORG_NAME>/scout-demo:v1
<ORG_NAME>
$ docker build --push -t <ORG_NAME>/scout-demo:v1 .
第 2 步:启用 Docker Scout
默认情况下,Docker Scout 会分析所有本地镜像。要分析镜像,请在 remote repositories 中,您需要先启用它。 您可以从 Docker Hub、Docker Scout Dashboard 和 CLI 执行此操作。在概述指南中了解如何操作。
使用命令登录到 Docker 帐户,或使用 Docker Desktop 中的 Sign in (登录) 按钮。
docker login
接下来,使用命令向 Docker Scout 注册您的组织。
docker scout enroll
$ docker scout enroll <ORG_NAME> ✓ Successfully enrolled organization <ORG_NAME> with Docker Scout Free
使用命令为您的镜像存储库启用 Docker Scout。
docker scout repo enable
$ docker scout repo enable --org <ORG_NAME> <ORG_NAME>/scout-demo
步骤 3:分析镜像漏洞
构建后,使用 CLI 命令查看漏洞
由 Docker Scout 检测到。docker scout
本指南的示例应用程序使用易受攻击的 Express 版本。 以下命令显示了您刚刚镜像中影响 Express 的所有 CVE 建立:
$ docker scout cves --only-package express
默认情况下,Docker Scout 会分析您最近构建的镜像, 因此,在这种情况下,无需指定镜像的名称。
在 CLI 参考文档中
了解有关该命令的更多信息。docker scout cves
步骤 4:修复应用程序漏洞
Docker Scout 建议的解决方法是更新 底层易受攻击的 Express 版本升级到 4.17.3 或更高版本。
使用新的包版本更新文件。
package.json
"dependencies": { - "express": "4.17.1" + "express": "4.17.3" }
使用新标签重新构建镜像并将其推送到 Docker Hub 存储库:
$ docker build --push -t <ORG_NAME>/scout-demo:v2 .
现在,在 Docker Desktop 中查看镜像的最新标记,即 Docker Scout Dashboard 或 CLI 中,您可以看到您已修复漏洞。
$ docker scout cves --only-package express
✓ Provenance obtained from attestation
✓ Image stored for indexing
✓ Indexed 79 packages
✓ No vulnerable package detected
## Overview
│ Analyzed Image
────────────────────┼───────────────────────────────────────────────────
Target │ mobywhale/scout-demo:v2
digest │ ef68417b2866
platform │ linux/arm64
provenance │ https://github.com/docker/scout-demo-service.git
│ 7c3a06793fc8f97961b4a40c73e0f7ed85501857
vulnerabilities │ 0C 0H 0M 0L
size │ 19 MB
packages │ 1
## Packages and Vulnerabilities
No vulnerable packages detected
第 5 步:评估策略合规性
虽然基于特定软件包检查漏洞可能很有用, 这不是改善供应链行为的最有效方法。
Docker Scout 还支持策略评估、 用于检测和修复镜像中问题的更高级别概念。 策略是一组可自定义的规则,可让组织跟踪 图片符合其供应链要求。
由于策略规则特定于每个组织,因此
您必须指定要评估的组织策略。
使用命令配置您的 Docker 组织。docker scout config
$ docker scout config organization <ORG_NAME>
✓ Successfully set organization to <ORG_NAME>
现在,您可以运行命令以获取概述
的合规性状态。
根据默认策略配置评估镜像。quickview
$ docker scout quickview
...
Policy status FAILED (2/6 policies met, 2 missing data)
Status │ Policy │ Results
─────────┼──────────────────────────────────────────────┼──────────────────────────────
✓ │ No copyleft licenses │ 0 packages
! │ Default non-root user │
! │ No fixable critical or high vulnerabilities │ 2C 16H 0M 0L
✓ │ No high-profile vulnerabilities │ 0C 0H 0M 0L
? │ No outdated base images │ No data
? │ Supply chain attestations │ No data
状态列中的感叹号表示违反了策略。 问号表示没有足够的元数据来完成评估。 复选标记表示合规性。
第 6 步:提高合规性
该命令的输出显示还有改进的空间。
某些策略无法成功评估 ()
因为镜像缺乏出处和 SBOM 证明。
该镜像还未通过一些评估的检查。quickview
No data
策略评估不仅仅是检查漏洞。
以策略为例。
此策略通过确保
默认情况下,images 未设置为以超级用户身份运行。Default non-root user
root
要解决此策略冲突问题,请通过添加说明并指定非 root 用户来编辑 Dockerfile:USER
CMD ["node","/app/app.js"]
EXPOSE 3000
+ USER appuser
此外,为了获得更完整的策略评估结果, 您的镜像应附有 SBOM 和出处证明。 Docker Scout 使用来源证明来确定镜像的状况 构建,以便它可以提供更好的评估结果。
在构建具有证明的镜像之前,
您必须启用 containerd 镜像存储(或使用驱动程序创建自定义构建器)。
经典镜像存储不支持清单列表、
这就是将出处证明附加到镜像的方式。docker-container
在 Docker Desktop 中打开 Settings。在 General (常规) 部分下,确保 选中 Use containerd for pull and storage images 选项。 请注意,更改镜像存储会暂时隐藏 inactive image store (非活动镜像存储),直到您切换回来。
启用 containerd 镜像存储后,使用新标签重新构建镜像。
这一次,添加 and 标志。v3
--provenance=true
--sbom=true
$ docker build --provenance=true --sbom=true --push -t <ORG_NAME>/scout-demo:v3 .
第 7 步:在 Dashboard 中查看
使用证明推送更新的镜像后,可以查看 通过不同的视角获得结果:Docker Scout 仪表板。
- 打开 Docker Scout 仪表板。
- 使用您的 Docker 帐户登录。
- 选择 Images 在左侧导航栏中。
images (镜像) 页面列出了启用了 Scout 的存储库。 在列表中选择镜像以打开 Image details (镜像详细信息) 侧边栏。 边栏显示存储库的最后一个推送标签的合规性概述。
注意
如果策略结果尚未显示,请尝试刷新页面。 如果这是您的 首次使用 Docker Scout Dashboard。
检查 Up-to-date Base Images 策略。
此策略检查您使用的基础镜像是否是最新的。
它当前处于 non-compliant 状态,
因为示例镜像使用旧版本作为基础镜像。alpine
选择策略名称旁边的 View fix (查看修复) 按钮,了解有关违规的详细信息。 以及如何解决这一问题的建议。 在这种情况下,建议的操作是启用 Docker Scout 的 GitHub 集成, 这有助于使您的基础镜像自动保持最新状态。
提示
您无法为本指南中使用的演示应用程序启用此集成。 随意将代码推送到您拥有的 GitHub 存储库, 并在那里尝试集成!
总结
本快速入门指南仅涉及某些方面的一些 Docker Scout 可以支持软件供应链管理:
- 如何为您的存储库启用 Docker Scout
- 分析镜像中的漏洞
- 策略和合规性
- 修复漏洞并提高合规性
下一步是什么?
还有更多内容等你去发现,从第三方集成、 到策略自定义和实时运行时环境监控。
请查看以下部分: