1. 课程导论与安全背景

1.1 容器镜像安全的重要性

容器镜像已成为现代云原生应用交付的核心单元。然而,镜像并非不可变的安全制品——从构建到运行时的整个生命周期中,镜像都可能引入严重的安全风险。根据行业报告,超过 60% 的生产环境容器运行着包含已知高危漏洞的镜像,而供应链攻击正以每年 300% 的速度增长。

核心观点:镜像安全是容器安全的基石。一个被植入后门的镜像可以绕过所有运行时防护,直接控制宿主机或窃取敏感数据。DevSecOps 的核心目标之一,就是将安全左移,在镜像构建阶段即完成漏洞扫描、合规检查和签名验证。
安全维度 风险描述 影响范围
漏洞风险 基础镜像或应用依赖中存在已知 CVE 容器逃逸、数据泄露、拒绝服务
配置风险 容器以 root 运行、特权模式、敏感端口暴露 权限提升、横向移动
供应链风险 恶意镜像、篡改层、未签名镜像 投毒、后门、合规违规
密钥泄露 镜像层中硬编码密码、、SSH 密钥 账户接管、基础设施入侵

1.2 常见镜像攻击面

攻击者通常从以下五个维度对容器镜像发起攻击。理解这些攻击面,是制定安全策略的前提。

  1. 基础镜像污染:使用官方镜像但未验证签名,或从不可信仓库拉取被篡改的镜像。
  2. 依赖项漏洞:操作系统包(apt/yum)、语言库(pip/npm/maven)中的已知漏洞。
  3. 构建过程注入:Dockerfile 中使用了 ADD 从不可信 URL 下载文件,或构建缓存被投毒。
  4. 镜像层信息泄露:删除敏感文件后,文件仍存在于历史层中,可通过 docker history 恢复。
  5. 运行时配置漂移:镜像本身安全,但运行时挂载了宿主机敏感目录或赋予了额外 Capability。
注意:镜像攻击面具有“叠加效应”。一个低危漏洞配合错误配置,可能组合成高危利用链。例如:镜像中存在一个低危的本地提权漏洞 + 容器以 root 运行 + 挂载了 docker.sock = 宿主机沦陷。
容器镜像攻击面全景图 容器镜像 基础镜像污染 依赖项漏洞 构建过程注入 镜像层信息泄露 运行时配置漂移 攻击面叠加效应 低危漏洞 + root 运行 + docker.sock 挂载 = 宿主机沦陷

1.3 课程目标

完成本课程后,你将具备以下能力:

  • 掌握镜像安全扫描技术:使用 Trivy、Grype、Clair 等工具对镜像进行漏洞、密钥和许可证扫描。
  • 构建自动化安全流水线:在 CI/CD(GitHub Actions、GitLab CI、Jenkins)中集成镜像安全扫描与阻断策略。
  • 实施镜像签名与验证:使用 Cosign 对镜像进行签名,并在部署前强制验证签名有效性。
  • 配置镜像仓库安全策略:在 Harbor、Docker Registry 中启用漏洞扫描、复制策略和保留规则。
  • 实现运行时镜像准入控制:使用 OPA/Gatekeeper、Kyverno 在 Kubernetes 中拦截未授权镜像。
  • 建立镜像安全度量体系:定义 SLSA 级别、生成 SBOM、追踪修复 SLA。
学习建议:本课程包含大量动手实验。建议准备一个 Kubernetes 集群(Minikube 或 Kind 均可)和一个 GitHub 仓库,跟随每章的实践步骤操作。所有示例代码和配置文件均可在课程配套仓库中找到。

1.4 学习路径与章节地图

课程共 30 章,分为五个阶段,循序渐进地从基础概念到生产级自动化部署。

阶段 章节范围 核心内容
基础与工具 第 1-6 章 安全背景、扫描工具选型、Dockerfile 最佳实践、镜像层分析
CI/CD 集成 第 7-14 章 GitHub Actions/GitLab CI/Jenkins 流水线集成、扫描阻断策略
签名与供应链 第 15-20 章 Cosign 签名验证、SBOM 生成、SLSA 框架、仓库安全策略
运行时准入 第 21-26 章 OPA/Gatekeeper、Kyverno 策略、镜像预热与缓存安全
生产级运营 第 27-30 章 安全度量、事件响应、合规审计、全链路自动化案例
课程学习路径与阶段关系 基础与工具 第 1-6 章 CI/CD 集成 第 7-14 章 签名与供应链 第 15-20 章 运行时准入 第 21-26 章 生产级运营 第 27-30 章 学习路径说明 每个阶段均包含理论讲解 + 动手实验 + 课后挑战 建议按顺序学习,前一个阶段的知识是后一个阶段的基础 完成全部 30 章后,你将具备独立搭建镜像安全体系的能力

1.5 前置知识要求

为获得最佳学习体验,建议你具备以下基础:

  • 熟悉 Docker 基本操作(docker build、docker run、docker push)
  • 了解 CI/CD 基本概念(流水线、阶段、作业)
  • 具备 Kubernetes 基础(Pod、Deployment、Namespace)
  • 了解 Linux 命令行和 Shell 脚本
环境准备:请确保你的实验环境中已安装 Docker Engine 20.10+、Kubectl、Helm 3+,并拥有一个可访问的容器镜像仓库(推荐使用 Docker Hub 或 Harbor)。课程第 2 章将提供完整的环境检查清单。