1. 云原生安全概述

1.1 云原生安全挑战

云原生架构在带来弹性、敏捷性和可移植性的同时,也引入了传统安全模型难以应对的新威胁面。核心挑战可归纳为以下四个维度:

挑战维度 具体表现 传统安全失效原因
基础设施动态性 Pod 频繁创建/销毁、IP 地址不固定、节点弹性扩缩 基于固定 IP 和边界的防火墙策略无法生效
镜像供应链风险 基础镜像漏洞、恶意镜像注入、依赖库投毒 传统主机扫描无法覆盖容器镜像构建阶段
多租户隔离 共享内核、命名空间隔离不足、特权容器逃逸 虚拟机级别的强隔离假设在容器中不成立
配置与策略碎片化 RBAC、NetworkPolicy、PodSecurityPolicy 分散管理 缺少统一策略引擎,人工审核易遗漏
关键洞察: 云原生安全的核心矛盾在于“动态工作负载”与“静态安全边界”之间的不匹配。传统基于网络边界的安全模型(城堡-护城河模型)在 Kubernetes 环境中基本失效。

1.2 安全基线概念

安全基线(Security Baseline)是指为保障系统最低安全要求而设定的一组最小化、可度量的配置规则集合。在云原生场景下,安全基线通常包含以下层次:

  • 基础设施基线: 节点操作系统加固、容器运行时 seccomp/AppArmor 配置、etcd 加密。
  • Kubernetes 集群基线: API Server 审计日志启用、RBAC 最小权限、Secret 加密存储。
  • 工作负载基线: 禁止特权容器、只读根文件系统、禁止 hostNetwork/hostPID、资源限制。
  • 镜像基线: 基础镜像版本锁定、非 root 用户运行、漏洞扫描通过阈值。

业界常见的基线参考框架包括 CIS Kubernetes Benchmark、NSA/CISA Kubernetes 加固指南 以及 NIST SP 800-190。这些框架为策略引擎(如 Kyverno)提供了规则编写的直接依据。

实践建议: 安全基线不是一次性产物。建议将基线规则版本化(如 baseline-v1.0、baseline-v1.1),并与 CI/CD 流水线集成,实现“构建时扫描、部署时拦截、运行时审计”的闭环。

1.3 Kubernetes 安全威胁模型

理解 Kubernetes 的威胁模型是设计策略架构的前提。以下从攻击者的视角,按攻击路径梳理主要威胁:

Kubernetes 安全威胁模型 — 攻击路径全景 外部攻击者 内部攻击者 恶意 Pod / 容器 API Server (认证/授权/RBAC) kubelet / 节点 (容器逃逸/权限提升) etcd / Secret (数据泄露/篡改) 数据泄露 (敏感信息/凭据) 服务中断 (DoS/资源耗尽) 横向移动 (集群内渗透) 说明:攻击者从外部/内部/恶意 Pod 出发,通过 API Server、kubelet、etcd 等组件,最终达成数据泄露、服务中断或横向移动。 策略防线(Kyverno 可覆盖范围) • 准入控制:拦截特权容器、hostPath、不安全 sysctl • 变异策略:自动注入 sidecar、只读根文件系统、资源限制 • 审计与报告:基线违规告警、合规评分
注意: 容器逃逸(Container Escape)是 Kubernetes 环境中风险最高的攻击类型之一。一旦攻击者突破容器隔离,即可获得节点操作系统权限,进而威胁整个集群。策略引擎应重点拦截 privileged: true、CAP_SYS_ADMIN、hostPID: true 等高危配置。

1.4 零信任安全原则

零信任(Zero Trust)的核心思想是“永不信任,始终验证”。在 Kubernetes 环境中,零信任原则的具体落地包括:

  1. 显式验证: 所有请求(无论来源)都必须经过身份认证、授权和策略校验。Kubernetes 的 Admission Controller 是实现显式验证的关键环节。
  2. 最小权限: 每个 ServiceAccount、Pod、用户只被授予完成其功能所需的最小权限。Kyverno 可以通过变异策略自动移除不必要的权限。
  3. 假设受损: 默认认为网络已被攻破,所有流量都应加密(mTLS),所有工作负载都应受到策略约束。
  4. 持续评估: 安全状态不是静态的。策略引擎需要持续审计集群状态,发现漂移(Drift)并触发告警或自动修复。

零信任在 Kubernetes 中的技术映射关系如下:

零信任原则 Kubernetes 实现机制 Kyverno 策略示例
显式验证 Admission Webhook + OIDC 验证所有 Pod 必须包含 app.kubernetes.io/name 标签
最小权限 RBAC + Pod Security Standards 拒绝 privileged: true,自动设置 runAsNonRoot: true
假设受损 NetworkPolicy + mTLS (Istio/Linkerd) 强制所有命名空间启用默认拒绝 NetworkPolicy
持续评估 Kyverno Background Scan + Reports 定期扫描集群中违反基线策略的资源并生成报告
架构启示: 零信任不是单一产品,而是一套设计原则。Kyverno 作为 Kubernetes 原生的策略引擎,天然适合作为零信任策略的“执行点”(Policy Enforcement Point),在资源创建、更新和运行阶段持续施加安全约束。

1.5 本章小结