配置安全上下文、启用Pod安全准入、集成Falco监控及审计日志溯源,是防范容器逃逸与越权的核心防线。需显式声明SecurityContext、强制PSA策略、启用eBPF版Falco规则,并关联K8s审计日志与镜像扫描结果实现闭环防御。

配置系统服务运行安全上下文并实施审计,是防范容器逃逸与越权的核心防线。关键不在于堆砌工具,而在于让每个 Pod、每个容器进程从启动那一刻起,就处在可观察、可限制、可验证的约束中。
明确安全上下文(SecurityContext)的强制边界
SecurityContext 是 Kubernetes 中控制容器运行时权限的最小单元,必须在 Pod 或 Container 级别显式声明,不能依赖默认值。
- 禁止以 root 用户运行:设置 runAsNonRoot: true,并配合 runAsUser 指定非零 UID(如 1001),避免容器内进程拥有 UID 0 权限
- 禁用特权模式:privileged: false(默认为 false,但务必显式设为 false,防止模板继承误配)
- 限制能力集:capabilities.drop 列出所有非必要 Capabilities,至少应 drop CAP_SYS_ADMIN、CAP_NET_ADMIN、CAP_DAC_OVERRIDE
- 启用只读根文件系统:readOnlyRootFilesystem: true,阻止攻击者写入恶意二进制或修改配置
- 禁止挂载特权文件系统:allowPrivilegeEscalation: false,这是阻断 setuid/setgid 提权的关键开关
启用 Pod 安全准入(Pod Security Admission)策略
PSA 是 Kubernetes 1.25+ 原生替代 PSP 的强制性策略机制,通过命名空间标签自动执行安全等级校验。
- 为命名空间打标:
kubectl label ns default pod-security.kubernetes.io/enforce=restricted - 三个等级含义清晰:restricted(禁用 privileged、hostPath、root 用户等)、baseline(允许部分宽松配置)、privileged(仅用于系统组件)
- 搭配 enforce、warn、audit 三重模式:enforce 拦截违规 Pod;audit 将违规行为写入事件日志供审计回溯
- 审计日志可通过
kubectl get events -n <ns> --field-selector reason=FailedCreate查看被拒绝的创建请求及原因
集成 Falco 实时监控逃逸行为
Falco 不依赖应用层日志,而是直接捕获内核系统调用,对逃逸动作具备毫秒级响应能力。
- 部署时启用 eBPF 探针(比内核模块更轻量、兼容性更好):
helm install falco falcosecurity/falco --set ebpf.enabled=true - 重点启用以下规则(来自官方规则集 v3.10+):
– Mount of sensitive host path(检测挂载 /proc、/sys、/dev、/host 等)
– Privileged container started
– Write to release_agent file
– Set SUID bit on binary
– Process spawned with CAP_SYS_ADMIN - 告警输出对接企业 SIEM(如 ELK、Splunk)或直接发 Slack/钉钉,确保异常行为“有人看见、能追溯、可联动”
审计与溯源:打通从事件到上下文的完整链路
单点告警价值有限,真正有效的是把逃逸尝试和原始配置、镜像、用户操作串联起来。
- 开启 Kubernetes 审计日志(
--audit-log-path),重点关注:
– create pod(含 securityContext 字段原始值)
– update namespace(如修改 PSA 标签)
– patch clusterrolebinding(RBAC 越权操作) - KubeSphere 用户可直接访问 平台 → 平台管理 → 审计日志,筛选 action=CREATE、resource=pods、verb=create,并关联 user.name 和 sourceIP
- 结合镜像扫描结果(Trivy 扫描报告中的 CVE ID)与运行时 Falco 告警时间戳,判断是否为已知漏洞利用行为

















