1. 课程导论:Serverless架构安全挑战与Kyverno策略引擎概述
1.1 Serverless 架构的安全新范式
Serverless 架构将基础设施管理抽象给云厂商,用户只需关注业务代码。这种“无服务器”模式在带来弹性、低成本优势的同时,也重塑了安全责任边界。传统基于主机的安全控制点(如操作系统补丁、网络边界防火墙)在 Serverless 环境中变得模糊甚至消失,安全重心从“基础设施防护”转向“代码与配置合规”。
核心转变: 在 Serverless 集群中,安全不再是“加固机器”,而是“治理行为”。每一次函数调用、每一个资源声明、每一项网络策略,都必须通过策略引擎进行实时校验。
1.2 Serverless 集群面临的四大安全挑战
在 Kubernetes 上运行 Serverless 工作负载(如 Knative、OpenFaaS、AWS Lambda on EKS)时,安全挑战主要集中在以下四个维度:
| 挑战维度 | 具体风险 | 典型场景 |
|---|---|---|
| 1. 镜像与供应链 | 基础镜像含高危漏洞、未签名镜像被篡改、依赖库引入恶意代码 | 函数使用过时的 Node.js 镜像,包含 CVE-2024-XXXX |
| 2. 配置与权限 | 函数容器以 root 运行、挂载宿主机敏感路径、RBAC 权限过度 | Serverless Pod 设置 securityContext.runAsUser: 0 |
| 3. 网络与数据 | 函数可访问公网、未加密的敏感环境变量、跨命名空间非授权调用 | 函数通过 ClusterIP 直接访问数据库,无网络策略隔离 |
| 4. 运行时与合规 | 函数执行时产生异常进程、违反 PCI-DSS/GDPR 数据驻留要求 | 函数在运行时动态挂载了宿主机 /var/log 目录 |
注意: 传统安全扫描工具(如静态漏洞扫描)无法覆盖“运行时配置漂移”和“策略即代码”的合规需求。Serverless 集群需要一种能够拦截、审计并自动修正资源声明(YAML)的机制。
1.3 Kyverno 策略引擎:云原生策略的“守门员”
Kyverno 是一个为 Kubernetes 设计的策略引擎,它原生支持 Kubernetes 资源模型,无需学习新的策略语言(如 Rego)。它通过 Kubernetes 自定义资源(CRD)定义策略,以 Admission Webhook 的形式在资源创建、更新时进行校验、变更或生成。
- 策略即代码: 使用 YAML 定义策略,与 GitOps 工作流无缝集成。
- 三种策略类型:
validate(校验)、mutate(变更)、generate(生成)。 - 无需 Sidecar: 作为集群内组件运行,不侵入用户 Pod。
- 支持 Serverless 场景: 可针对
Pod、Deployment、KnativeService等资源实施策略。
为什么选择 Kyverno? 对于 Serverless 集群,Kyverno 能够直接拦截函数 Pod 的创建请求,在调度前强制注入安全上下文、添加网络策略标签或拒绝不符合基线镜像的部署,实现“安全左移”。
1.4 Kyverno 在 Serverless 集群中的工作流程
下图展示了 Kyverno 如何作为 Admission Controller 嵌入 Serverless 集群的请求链路中,对函数部署进行实时策略评估。
1.5 策略引擎与 Serverless 安全基线的映射
Kyverno 策略可以直接映射到 Serverless 集群的安全基线要求。以下是一个典型的策略分类与对应 Serverless 安全目标的对照表:
| 策略类别 | Kyverno 策略示例 | Serverless 安全目标 |
|---|---|---|
| 镜像来源 | 校验镜像仓库地址必须来自私有 Registry | 防止使用未审核的公共镜像 |
| 容器安全 | 强制 readOnlyRootFilesystem: true |
限制函数运行时文件系统写入 |
| 网络隔离 | 自动注入 NetworkPolicy 标签 |
确保函数只能访问指定服务 |
| 资源限制 | 校验 resources.limits.memory 不超过 512Mi |
防止单个函数耗尽集群资源 |
| 合规标签 | 强制添加 compliance: pci-dss 标签 |
满足审计与合规追溯要求 |
1.6 课程学习路径与预期收益
本课程将围绕“策略定义 → 策略部署 → 策略审计 → 策略运维”四个阶段展开,帮助学员掌握以下核心能力:
- 策略编写: 使用 Kyverno YAML 语法编写针对 Serverless 工作负载的校验、变更和生成策略。
- 集群集成: 在 Knative / OpenFaaS 等 Serverless 平台上部署并调试 Kyverno。
- 合规自动化: 结合 CI/CD 流水线实现策略的自动化测试与门禁。
- 故障排查: 分析策略冲突、Webhook 超时、策略生效范围等常见问题。
前置要求: 建议学员具备基本的 Kubernetes 操作经验(kubectl、Pod、Deployment、Service),了解 Serverless 概念(如 Knative Service)会更有帮助。