静态漏洞扫描
注意
此页面介绍了 Docker Hub 的传统静态漏洞扫描功能。还有 Docker Scout,它提供更详细且始终最新的结果、改进安全态势的引导修复步骤等等。
Docker Hub 静态扫描需要 Docker Pro、Team 或 Business 订阅。
Docker Hub 静态漏洞扫描允许您在 Docker 镜像上自动运行针对漏洞的特定时间点扫描。
在开启静态扫描后将镜像推送到 Docker Hub 仓库时,Docker Hub 会自动扫描镜像以识别漏洞。扫描结果显示在运行扫描时镜像的安全状态。
扫描结果包括
- 漏洞来源,例如操作系统 (OS) 包和库
- 引入漏洞的版本
- 如果可用,用于修复发现的漏洞的建议修复版本。
Docker Hub 静态扫描的更改
从 2023 年 2 月 27 日起,Docker 改变了支持 Docker Hub 静态扫描功能的技术。静态扫描现在由 Docker 本身提供支持,而不是第三方。
由于此更改,扫描现在可以比以前更细粒度地检测漏洞。反过来,这意味着漏洞报告可能会显示更多漏洞。如果您在 2023 年 2 月 27 日之前使用过漏洞扫描,您可能会发现新的漏洞报告列出了更多漏洞,这是由于更彻底的分析导致的。
您无需进行任何操作。扫描将照常运行,不会中断或更改定价。历史数据仍然可用。
使用静态漏洞扫描扫描镜像
Docker Pro、Team 或 Business 等级仓库的所有者和管理员可以启用和禁用静态漏洞扫描。当仓库上启用了扫描时,任何具有推送访问权限的用户都可以通过将镜像推送到 Docker Hub 来触发扫描。
此外,Docker Pro 订阅的仓库所有者以及 Team 或 Business 订阅的团队成员可以查看详细的扫描报告。
注意
静态漏洞扫描支持扫描 AMD64 架构、Linux 操作系统且大小不超过 10 GB 的镜像。
开启静态漏洞扫描
仓库所有者和管理员可以在仓库上启用静态漏洞扫描。如果您是 Team 或 Business 订阅的成员,请确保您要启用扫描的仓库是 Team 或 Business 等级的部分。
要启用静态漏洞扫描
- 登录您的 Docker Hub 账户。
- 选择 **仓库**,然后选择一个仓库。
- 转到 **设置** 选项卡。
- 在 **镜像安全洞察设置** 下,选择 **静态扫描**。
- 选择 **保存**。
扫描镜像
要扫描镜像以查找漏洞,请将镜像推送到 Docker Hub,推送到您已开启扫描的仓库。
确保您已在本地安装 Docker。请参阅 获取 Docker,以在本地机器上下载和安装 Docker。
使用命令行登录您的 Docker 账户。请参阅
docker login
以获取更多信息。标记要扫描的镜像。例如,要标记 Redis 镜像,请运行
$ docker tag redis <your-Docker-ID>/<your-repo-name>:latest
将镜像推送到 Docker Hub 以触发对镜像的静态漏洞扫描
$ docker push <your-Docker-ID>/<your-repo-name>:latest
查看漏洞报告
要查看漏洞报告
转到 Docker Hub 并打开仓库页面以查看静态漏洞扫描报告的摘要。
漏洞报告可能需要几分钟才会出现在您的仓库中。
选择 **标签** 选项卡,然后选择 **摘要**,再选择 **漏洞** 以查看详细的扫描报告。
扫描报告显示扫描识别的漏洞,按严重程度排序,最严重的漏洞列在最上面。它显示有关包含漏洞的包、引入漏洞的版本以及漏洞是否在更高版本中修复的信息。
有关此视图的更多信息,请参阅 镜像详细信息视图。
检查漏洞
漏洞报告根据漏洞的严重程度对漏洞进行排序。它显示有关包含漏洞的包、引入漏洞的版本以及漏洞是否已在更高版本中修复的信息。
漏洞扫描报告还允许开发团队和安全负责人比较不同标签的漏洞数量,以查看漏洞数量是否随时间推移而减少或增加。
修复漏洞
识别出漏洞列表后,您可以采取以下几种措施来修复这些漏洞。例如,您可以
- 在 Dockerfile 中指定更新的基础镜像,检查您的应用程序级依赖项,重新构建 Docker 镜像,然后将新镜像推送到 Docker Hub。
- 重新构建 Docker 镜像,在 OS 包上运行更新命令,并将更新版本的镜像推送到 Docker Hub。
- 编辑 Dockerfile 以手动删除或更新包含漏洞的特定库,重新构建镜像,并将新镜像推送到 Docker Hub
Docker Scout 可以为您提供用于改进镜像安全的具体且有上下文的修复步骤。有关更多信息,请参阅 Docker Scout。
关闭静态漏洞扫描
仓库所有者和管理员可以在仓库上禁用静态漏洞扫描。要禁用扫描
- 登录您的 Docker Hub 账户。
- 转到 **仓库**,然后从列表中选择一个仓库。
- 转到 **设置** 选项卡。
- 在 **镜像安全洞察设置** 下,选择 **无**。
- 选择 **保存**。