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. 基础篇(第1-5章): 镜像签名原理、Harbor架构、Kubernetes准入控制模型、工具链安装。
  2. 实践篇(第6-15章): Harbor部署与配置、Notation/Cosign签名操作、Kyverno/OPA策略编写、签名验证测试。
  3. 进阶篇(第16-25章): 多仓库签名策略、密钥管理(KMS/HashiCorp Vault)、CI/CD集成、审计日志、故障排查。
  4. 生产篇(第26-30章): 高可用部署、性能调优、合规审计、灾难恢复、综合实战案例。
建议: 如果你已有Harbor和Kubernetes基础,可直接从第6章开始;但建议至少阅读第1-5章的概念部分,确保对签名模型和准入控制流程有统一理解。

1.5 镜像签名与准入控制整体架构

下图展示了从镜像构建、签名、推送,到Kubernetes准入校验的完整数据流:

Harbor镜像签名与Kubernetes准入控制架构 CI/CD 流水线 构建镜像 使用 Cosign/Notation 签名 推送至 Harbor Harbor 镜像仓库 存储镜像 + 签名元数据 签名验证(可选) 复制/分发策略 Kubernetes 集群 API Server 准入 Webhook Pod 创建/更新 推送镜像+签名 拉取镜像+签名 准入控制详细流程(Kyverno / OPA Gatekeeper) 1. 用户提交 Pod kubectl apply 2. API Server 拦截 MutatingWebhook 3. 校验签名策略 检查签名是否存在 4. 允许/拒绝 返回准入结果 关键组件说明 • Cosign/Notation: 镜像签名工具,生成数字签名并附加到镜像元数据 • Harbor: 企业级镜像仓库,支持签名存储、验证、复制策略 • Kyverno/OPA Gatekeeper: Kubernetes 准入控制器,执行签名校验策略 • 公钥分发: 签名验证依赖公钥,可通过 ConfigMap、OIDC、KMS 等方式分发

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)或轻量级集群中完成,无需生产级硬件。