信任边界模型:软件供应链安全层次、信任边界在K8s中的映射、信任降级与攻击面
在云原生环境中,镜像供应链的信任并非一个二元状态(可信/不可信),而是一个逐层递减、逐级传递的模型。理解信任边界在 Kubernetes 中的具体映射位置,以及信任如何因操作失误或攻击行为而降级,是构建有效观测标签体系的理论基础。
2.1 软件供应链安全的四个层次
从代码提交到容器运行,信任边界经历了四个关键层次。每一层都定义了不同的信任假设和验证责任。
| 层次 | 信任主体 | 核心信任凭证 | K8s 中的映射对象 |
|---|---|---|---|
| L1:开发与代码层 | 开发者、代码仓库 | GPG 签名、Commit 签名 | Git 仓库、CI 触发器 |
| L2:构建与制品层 | CI/CD 系统、镜像仓库 | 镜像签名(Notation/Cosign)、SBOM | 镜像仓库(Harbor/ECR)、ImagePullSecret |
| L3:部署与策略层 | 集群管理员、策略引擎 | 策略签名、准入 Webhook 配置 | Admission Controller、OPA/Gatekeeper、Kyverno |
| L4:运行时与数据层 | 容器运行时、节点内核 | 运行时安全策略、Seccomp/AppArmor 配置 | Pod Security Standards、RuntimeClass、eBPF 监控 |
关键认知: 信任是单向传递的。L1 的信任漏洞会穿透到 L4;但 L4 的运行时监控无法修复 L1 的恶意代码注入。观测标签体系必须在每一层都设立独立的信任度量指标。
2.2 信任边界在 Kubernetes 中的映射
Kubernetes 的 API 对象模型天然形成了多个信任边界。每个边界都是一个潜在的信任检查点,也是攻击者试图跨越的障碍。
上图中,每个矩形代表一个独立的信任域。跨越边界时,Kubernetes 会执行以下验证:
- 外部 → API Server: TLS 双向认证、ServiceAccount 验证、RBAC 授权检查。
- API Server → etcd: 只有 API Server 有直接读写 etcd 的权限,其他组件必须通过 API Server。
- API Server → Kubelet: Kubelet 通过 TLS 证书向 API Server 注册,并定期上报节点状态。
- Kubelet → 容器运行时: 通过 CRI(Container Runtime Interface)调用,运行时负责镜像拉取、解包和进程隔离。
2.3 信任降级与攻击面分析
信任降级(Trust Degradation)是指原本被认为安全的信任边界,因某个环节的失效或绕过,导致整个供应链的安全水位下降。以下是镜像供应链中常见的信任降级场景及其对应的攻击面。
2.3.1 信任降级的三种模式
| 降级模式 | 触发条件 | 典型攻击面 | 观测指标 |
|---|---|---|---|
| 凭证泄露 | CI/CD 或镜像拉取 Secret 被窃取 | 恶意镜像推送、未授权拉取 | Secret 异常访问、非预期镜像仓库操作 |
| 策略绕过 | Admission Controller 配置错误或未启用 | 未签名镜像直接部署、特权容器创建 | 准入 Webhook 调用失败率、策略违反事件 |
| 依赖投毒 | 基础镜像或第三方依赖被篡改 | 供应链上游攻击(如 Dependency Confusion) | 镜像层哈希变更、SBOM 差异告警 |
⚠️ 信任降级的连锁反应: 一次凭证泄露可能导致整个集群的镜像供应链信任链断裂。例如,攻击者通过泄露的 CI 向镜像仓库推送恶意镜像,该镜像随后被部署到生产集群,进而通过容器逃逸获取节点权限,最终控制整个集群。观测标签体系必须能够实时检测信任降级事件,并触发自动阻断。
2.3.2 攻击面分类与观测优先级
根据攻击发生的阶段和影响范围,我们将攻击面分为三类,并给出观测标签的优先级建议:
- P0(紧急): 运行时攻击面。包括容器逃逸、恶意进程执行、敏感文件访问。需要实时告警和自动隔离。
- P1(高优): 部署时攻击面。包括未签名镜像部署、特权容器创建、HostPath 挂载。需要在准入阶段阻断。
- P2(中优): 构建时攻击面。包括基础镜像漏洞、依赖投毒、SBOM 不一致。需要在 CI 阶段扫描和修复。
实践建议: 在构建观测标签体系时,建议为每个信任边界分配一个信任等级标签(trust-level: verified | degraded | revoked)。当检测到信任降级事件时,自动将受影响的工作负载的 trust-level 标签降级,并触发对应的安全策略(如网络隔离、日志审计增强)。