1. 课程导论:SBOM 定义与价值、云原生配置管理面临的挑战、准入策略评审的核心目标

1.1 SBOM 定义与核心价值

软件物料清单(Software Bill of Materials,SBOM) 是一份正式、机器可读的清单,详细列出了构建某个软件制品所包含的所有组件、库、依赖项及其版本信息。在云原生环境中,SBOM 是建立软件供应链透明度的基础构件。

维度 说明
定义核心 嵌套的、机器可读的依赖关系树,包含组件名称、版本、许可证、来源哈希
格式标准 SPDX(ISO/IEC 5962)、CycloneDX(OWASP)、SWID(ISO/IEC 19770-2)
生成时机 构建时(Build-time)、打包时(Package-time)、部署前(Pre-deployment)
核心价值 漏洞溯源、许可证合规、供应链风险管理、零信任准入证据
实践要点: 在云原生 CI/CD 流水线中,SBOM 应在镜像构建完成后立即生成,并签名后存入 OCI 制品仓库或专用元数据服务,确保其不可篡改且可被准入控制器实时拉取。

1.2 云原生配置管理面临的挑战

Kubernetes 及云原生生态的配置管理已从“静态 YAML 管理”演进为“动态、多源、策略驱动的配置治理”。然而,这一演进带来了以下核心挑战:

  1. 配置爆炸与碎片化:微服务数量激增,ConfigMap、Secret、Deployment、Helm Chart、Kustomize Overlay 等配置对象分散在多个 Git 仓库和 OCI 仓库中,缺乏统一的物料视图。
  2. 依赖关系不透明:基础镜像、Sidecar 代理、Operator、CRD 之间的依赖关系缺乏显式声明,导致“隐式供应链风险”难以被准入策略捕获。
  3. 权限边界模糊:RBAC 规则、Pod Security Admission、OPA/Gatekeeper 策略之间的权限边界交叉,容易产生“权限逃逸”或“策略盲区”。
  4. 拉取日志缺失:准入控制器在评审时,往往只检查最终 YAML 的静态合规性,而忽略了“谁、在何时、从哪个仓库、拉取了哪个版本的配置或镜像”这一关键审计链路。
关键风险: 缺乏 SBOM 支撑的准入策略,本质上是在“盲审”——无法确认容器镜像中是否包含已知漏洞的 Log4j 版本,也无法确认 Helm Chart 中引用的子 Chart 是否已被植入恶意代码。

1.3 准入策略评审的核心目标

在引入 SBOM 作为支撑数据后,云原生配置管理的准入策略评审需要达成以下四个核心目标:

  • 目标一:物料可见性(Visibility) —— 在准入评审时,实时获取待部署工作负载的完整 SBOM,包括基础镜像层、应用层、系统库层的所有组件。
  • 目标二:策略可执行性(Enforceability) —— 将 SBOM 中的组件版本、许可证、已知漏洞(CVE)映射为可执行的 OPA/Gatekeeper 或 Kyverno 策略规则。
  • 目标三:权限边界可审计(Auditability) —— 记录准入控制器在拉取 SBOM 和配置元数据时的身份、时间、目标仓库、拉取结果,形成不可抵赖的审计日志。
  • 目标四:供应链风险阻断(Blocking) —— 当 SBOM 检测到禁止使用的许可证、高危 CVE 或未签名的组件时,准入策略应直接拒绝部署,并返回清晰的阻断原因。
SBOM 支撑云原生配置准入策略评审核心架构 配置输入源 Helm Chart / Kustomize OCI 制品 / Git 仓库 SBOM 数据源 镜像 SBOM (CycloneDX) 依赖 SBOM (SPDX) 准入控制器 MutatingWebhook ValidatingWebhook 策略引擎 (OPA/Kyverno) SBOM 拉取 & 解析 准入决策 允许 / 拒绝 / 告警 阻断原因 + 审计日志 审计 & 日志 拉取日志 (Pull Log) 权限边界记录 核心流程说明 1. 准入控制器接收 Pod/Deployment 创建请求 2. 根据镜像地址拉取对应 SBOM,解析组件依赖树 3. 策略引擎比对 SBOM 数据与预定义规则,输出准入决策并记录拉取日志

1.4 权限边界与拉取日志的关联

准入策略评审的“权限边界”不仅指 Kubernetes RBAC 中的 ServiceAccount 权限,更指准入控制器在拉取 SBOM 和配置元数据时,对 OCI 仓库、Git 仓库、对象存储等外部系统的访问权限边界。这一边界必须遵循最小权限原则,且每一次拉取行为都必须被记录为结构化的审计日志。

权限边界类型 描述 拉取日志关键字段
仓库访问边界 准入控制器只能拉取指定命名空间或项目下的镜像/Chart SBOM repo_url, namespace, puller_identity
数据范围边界 只能拉取与待部署工作负载直接相关的 SBOM,禁止遍历全量仓库 image_digest, sbom_digest, pull_timestamp
策略执行边界 拉取到的 SBOM 数据仅用于当前准入评审,不得持久化或二次分发 policy_evaluation_id, decision, reason
课程前置知识: 本课程后续章节将深入讲解如何通过 OPA Gatekeeper 的 ExternalData 能力安全拉取 SBOM、如何设计不可篡改的拉取日志结构、以及如何将权限边界模型化为 OPA 策略规则。请确保您已熟悉 Kubernetes 准入 Webhook 的基本原理。