1. 课程导论:Harbor镜像签名与准入控制的重要性、课程目标与学习路径
1.1 为什么需要镜像签名与准入控制?
在云原生生产环境中,容器镜像从构建到部署的供应链面临多重安全威胁:镜像被篡改、引入恶意软件、使用未经审批的基础镜像、或从非可信仓库拉取。仅依赖镜像扫描(静态漏洞检测)无法解决镜像来源可信与部署一致性的问题。
镜像签名(Image Signing)通过非对称加密为镜像内容生成数字签名,确保镜像在构建后未被篡改,且签名者身份可验证。准入控制(Admission Control)在Kubernetes Pod创建请求到达API Server时,拦截并校验镜像签名,只有通过验证的镜像才能被调度运行。两者结合形成“构建时签名 + 部署时验证”的闭环安全防线。
核心价值: 防止未经签名的镜像、被篡改的镜像、来自非可信仓库的镜像进入生产集群;满足金融、医疗、政务等行业的供应链安全合规要求(如SLSA、NIST SP 800-190)。
1.2 镜像签名与准入控制的关键能力对比
| 能力维度 | 镜像签名(Harbor + Cosign/Notation) | 准入控制(Kubernetes + OPA/Kyverno) |
|---|---|---|
| 作用阶段 | 镜像推送至Harbor时(构建/CI阶段) | Pod创建/更新时(部署阶段) |
| 核心机制 | 私钥签名,公钥验证;签名存储在Harbor或OCI Registry | Webhook拦截请求,校验签名策略、仓库白名单、标签规则 |
| 安全目标 | 保证镜像来源可信、内容完整性 | 保证只有合规镜像才能运行 |
| 工具生态 | Cosign(Sigstore)、Notation(Notary v2)、Harbor内置签名 | Kyverno、OPA Gatekeeper、Harbor Webhook |
| 依赖关系 | 准入控制的前置条件 | 依赖签名元数据的存在与有效性 |
1.3 课程目标
完成本课程后,你将能够:
- 理解镜像签名与准入控制的核心原理、非对称加密模型及Kubernetes准入控制架构。
- 部署Harbor企业级镜像仓库,并启用Notation/Cosign签名功能。
- 实施镜像签名策略:生成签名密钥、对镜像进行签名、验证签名有效性。
- 配置Kubernetes准入控制器(Kyverno/OPA),实现基于签名的镜像部署策略。
- 集成CI/CD流水线(Jenkins/GitLab CI),实现自动化签名与部署阻断。
- 排障常见签名验证失败、Webhook通信异常、策略冲突等问题。
1.4 学习路径与章节结构
课程共30章,按“基础 → 实践 → 进阶 → 生产”四阶段组织:
- 基础篇(第1-5章): 镜像签名原理、Harbor架构、Kubernetes准入控制模型、工具链安装。
- 实践篇(第6-15章): Harbor部署与配置、Notation/Cosign签名操作、Kyverno/OPA策略编写、签名验证测试。
- 进阶篇(第16-25章): 多仓库签名策略、密钥管理(KMS/HashiCorp Vault)、CI/CD集成、审计日志、故障排查。
- 生产篇(第26-30章): 高可用部署、性能调优、合规审计、灾难恢复、综合实战案例。
建议: 如果你已有Harbor和Kubernetes基础,可直接从第6章开始;但建议至少阅读第1-5章的概念部分,确保对签名模型和准入控制流程有统一理解。
1.5 镜像签名与准入控制整体架构
下图展示了从镜像构建、签名、推送,到Kubernetes准入校验的完整数据流:
1.6 课程前置知识
| 知识领域 | 要求 | 说明 |
|---|---|---|
| Docker / 容器基础 | 熟练 | 镜像构建、推送、拉取;Dockerfile编写 |
| Kubernetes 基础 | 熟练 | Pod、Deployment、Service、kubectl常用命令 |
| Harbor 基础 | 了解 | Harbor项目、仓库、用户、复制策略基本概念 |
| 非对称加密 | 了解 | 公钥/私钥、数字签名、验证流程 |
| CI/CD 基础 | 了解 | Jenkins/GitLab CI 流水线基本概念 |
注意: 本课程不从头讲解Docker或Kubernetes基础。如果你对上述前置知识不熟悉,建议先完成相关基础课程再开始本课程的学习。
1.7 课程环境与工具链
课程实验环境基于以下版本(推荐保持一致,避免兼容性问题):
- Harbor: v2.10.x 及以上(支持Notation v2签名)
- Kubernetes: v1.28.x 及以上(准入Webhook GA)
- 签名工具: Cosign v2.x / Notation v1.x
- 准入控制器: Kyverno v1.12.x / OPA Gatekeeper v3.16.x
- 操作系统: Ubuntu 22.04 / CentOS 9 / macOS 14+
所有实验均可在单节点Kubernetes(如Minikube、Kind)或轻量级集群中完成,无需生产级硬件。