云原生安全

云原生安全与传统安全的最大区别,不是「用什么技术」,而是「威胁模型完全不同」。容器共享宿主机内核,Pod IP 动态变化,etcd 存储着所有密钥和配置——这些特性带来的攻击面,在传统虚拟机环境中根本不存在。

本专题覆盖云原生安全的完整知识体系:从容器镜像的安全扫描与签名,到 Kubernetes 的 RBAC、网络策略、Secret 管理,再到 Falco 运行时安全、OPA Gatekeeper 策略控制,以及供应链安全、SBOM 等前沿实践。

核心内容

安全责任

镜像安全

Kubernetes 安全

运行时安全

策略即代码

服务网格安全

云安全平台

评估工具

供应链安全

工具链

攻击路径

flowchart TB
    A[攻击入口] --> B{侦察阶段}
    B --> C[未授权 API 访问]
    B --> D[容器镜像漏洞]
    B --> E[Kubectl 配置泄露]
    C --> F[RBAC 提权]
    D --> G[容器逃逸]
    E --> G
    F --> H[横向移动]
    G --> H
    H --> I[访问 ETCD]
    H --> J[攻击其他 Pod]
    I --> K[数据窃取]
    J --> L[挖矿/DoS]

思考题

问题 1:在 Kubernetes 环境中,为什么「容器逃逸」是比「容器内提权」更严重的安全问题?防御方应该如何防止容器逃逸?

参考答案

容器逃逸指攻击者从容器内突破到宿主机,一旦逃逸成功,攻击者可以访问宿主机上的所有容器、所有密钥(如果宿主机上运行了 kubelet)、甚至通过 kubelet 凭证访问整个集群。容器内提权只是容器内权限扩大,逃逸是跨越了容器边界。防止容器逃逸的关键措施:禁止使用特权容器、只读根文件系统、删除不必要的 Linux Capabilities(如 CAP_SYS_ADMIN)、使用 Seccomp 配置文件禁止危险的系统调用、AppArmor/SELinux 强制访问控制、避免使用 HostPath 挂载敏感目录。

问题 2:Sigstore 的 Cosign 和传统 Docker Content Trust 在镜像签名方面有什么核心区别?为什么说 Sigstore 更适合云原生环境?

参考答案

Docker Content Trust(DCT)使用传统的 PKI 模型,需要预先建立和管理的根 CA 证书体系,证书管理复杂且难以自动化。Cosign 使用 Sigstore 项目,通过 Fuggid 匿名机制和Transparency Log(Rekor)实现了无需预先注册即可签名的能力——开发者只需持有私钥(可以是 GitHub Actions 的 OIDC Token 临时密钥),无需管理证书。Cosign 的签名自动记录在公开的 Transparency Log 中,任何人都可以验证签名的有效性,防止恶意签名。这使得镜像签名从「证书管理负担」变成「开箱即用的开发者体验」,更适合云原生的自动化 CI/CD 环境。