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 集群的请求链路中,对函数部署进行实时策略评估。

Kyverno 在 Serverless 集群中的策略执行流程 Kyverno 策略引擎在 Serverless 集群中的工作流程 用户/CI 提交 YAML K8s API Server Kyverno Admission Webhook 校验 / 变更 / 生成策略 通过 拒绝 创建 Serverless Pod 返回策略违规错误 说明:Kyverno 在 API Server 的 Admission 阶段拦截请求,确保只有符合策略的 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)会更有帮助。