容器镜像安全扫描
将镜像扫描工具集成到 CI/CD pipeline 中,以识别 Docker 镜像中的漏洞。
容器镜像安全扫描 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
为什么要扫描容器镜像?
容器镜像是现代应用程序的基础。与任何软件一样,它们可能包含隐藏的安全缺陷。镜像扫描是一项重要实践,可以在部署应用程序之前发现这些缺陷。
它有助于确保您运行的软件安全,并且不存在已知漏洞。

镜像中的隐藏风险
容器镜像中可能隐藏哪些漏洞?
- 过时的基础镜像:使用存在已知安全漏洞的旧版操作系统(例如 Ubuntu 或 Alpine)。
- 存在漏洞的库:您安装到镜像中的任何其他软件包或依赖项都可能存在安全缺陷(CVE)。
- 配置错误:虽然扫描主要针对已知 CVE,但不当设置同样可能带来风险。
镜像 Scanner 的工作原理
容器镜像 Scanner 的工作方式包括:
- 分析层:检查 Docker 镜像的每一层。
- 提取组件:识别所有已安装的软件包、库和依赖项(例如 OS 软件包、Python 库和 Node.js 模块)。
- 与数据库比对:将这些组件与内容丰富且定期更新的漏洞数据库进行交叉比对(例如 CVE 数据库)。
- 生成报告:提供已识别漏洞的详细列表、严重性以及通常包含的修复建议。
常用工具
目前有多种功能强大的容器镜像扫描工具可供选择,包括开源工具和商业工具:
- Trivy:一款广受欢迎的开源 Scanner,以易于使用和覆盖全面而著称。
- Clair:另一款可靠的开源工具,通常集成到更大型的容器注册表中。
- Docker Scout(通过
docker scan):内置于 Docker Desktop 中,利用 Snyk 的漏洞数据库提供快速的本地扫描。
在本地扫描镜像
让我们使用内置的 docker scan 命令,快速扫描一个常见的 Docker 镜像。此命令使用 Docker Scout(由 Snyk 提供支持)来检查漏洞。
请尝试运行以下示例:
docker scan nginx:latest了解结果
运行扫描后,您会得到一份报告。以下是需要关注的内容:
- CVE ID:漏洞的唯一标识符(例如 CVE-2023-1234)。
- 严重性:漏洞的危险程度(例如“严重”“高”“中”“低”)。
- 软件包:包含缺陷的具体软件组件或库。
- 修复版本:报告通常会建议一个能够修复问题的软件包版本或基础镜像版本。
在工作流中扫描
镜像扫描的真正价值在于将其集成到您的开发工作流中。将扫描添加到您的持续集成(CI)流水线后,您可以:
- 及早发现问题:在新代码提交或镜像构建后立即识别漏洞。
- 自动执行安全检查:让安全检查成为构建流程中标准且自动化的一环。
- 阻止部署:将 CI 流水线配置为在检测到严重漏洞时使构建失败,从而阻止不安全的镜像进入生产环境。
使用 CI 自动执行扫描
下面是一个概念性代码片段,展示如何将 Trivy 扫描集成到 GitHub Actions 工作流中。这样可以确保每个构建的镜像都会被自动扫描。
# .github/workflows/scan.yml
name: Image Scan
on:
push:
branches: [ main ]
jobs:
build-and-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker Image
run: docker build -t my-app:latest .
- name: Run Trivy Scan
uses: aquasecurity/trivy-action@master
with:
image-ref: 'my-app:latest'
format: 'table'
exit-code: '1' # Fail build on critical issues修复发现的问题
发现漏洞只是问题的一半,修复漏洞才是另一半!以下是常见的修复策略:
- 更新基础镜像:始终使用所选基础镜像的最新修补版本。
- 减少依赖:只安装应用运行所绝对必需的软件包。
- 多阶段构建:使用多阶段 Dockerfile 减小最终镜像的大小,并移除运行时不需要的构建工具。
- 应用补丁:如果存在针对易受攻击组件的特定安全补丁,请应用这些补丁。
扫描检查
镜像扫描是安全容器开发的重要组成部分。让我们测试一下您对本主题的理解。
要点回顾
您已经了解了容器镜像安全扫描的重要作用:
- 它可以识别基础镜像和依赖项中的已知漏洞(CVE)。
- Trivy、Clair 和 Docker Scout 等工具可以帮助自动执行此过程。
- 将扫描集成到 CI/CD 流水线中,可以确保及早发现问题,并防止部署不安全的镜像。
- 定期更新镜像并减少依赖项,可以缩小攻击面。
请持续扫描您的镜像,以保持良好的安全状态!
常见问题解答
「容器镜像安全扫描」课时是免费的吗?
是的 — 「容器镜像安全扫描」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「容器镜像安全扫描」这节课中我会学到什么?
将镜像扫描工具集成到 CI/CD pipeline 中,以识别 Docker 镜像中的漏洞。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「容器镜像安全扫描」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 容器镜像安全扫描
- 容器运行时安全
- 密钥管理与 RBAC
- 网络策略与最小权限网络