Pod 安全与网络策略
隔离工作负载。
Pod 安全与网络策略 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
隔离工作负载
两项控制措施可以限制遭入侵的 Pod 所能执行的操作:Pod 安全限制 Pod 的权限,网络策略限制哪些 Pod 可以相互通信。两者结合可以控制影响范围。
- Pod 安全阻止向节点逃逸。
- 网络策略阻止在 Pod 之间横向移动。
危险的 Pod 设置
如果允许使用 Pod 规范中的某些字段,风险范围会显著扩大。
privileged: true授予近似主机级别的访问权限。hostPID、hostNetwork、hostIPC会破坏命名空间隔离。hostPath卷会挂载节点目录。- 添加类似
SYS_ADMIN的能力后,可能实现逃逸。 - 以 root 用户运行(
runAsUser: 0)。
Pod 安全准入
Pod 安全准入(PSA)取代了 PodSecurityPolicy。它会在每个命名空间中强制执行三种内置标准。
- 特权:不受限制(应避免用于工作负载)。
- 基线:阻止已知的权限提升方式。
- 受限:强化的最佳实践(非 root、无特权、删除能力)。
# Enforce the restricted standard on a namespace
kubectl label namespace prod \
pod-security.kubernetes.io/enforce=restricted强化的 securityContext
使用 securityContext 在 Pod 和容器级别定义最小权限。
- 以非 root 用户运行,并使用只读根文件系统。
- 删除所有 Linux 能力,然后只添加必要的能力。
- 禁止权限提升。
# securityContext fields (YAML)
# runAsNonRoot: true
# readOnlyRootFilesystem: true
# allowPrivilegeEscalation: false
# capabilities: drop: [ALL]
kubectl apply -f hardened-deploy.yaml超越标准:策略引擎
如果需要比 PSA 更丰富的规则,可以通过准入控制器强制执行自定义策略。
- OPA Gatekeeper会评估 Rego 约束。
- Kyverno使用 YAML 策略,既可以修改,也可以验证。
这些工具可以禁止 hostPath、要求镜像经过签名,或在整个集群范围内强制使用标签。
# Apply a Kyverno policy that disallows privileged pods
kubectl apply -f disallow-privileged.yaml默认开放的网络
默认情况下,所有命名空间中的 Pod 都可以访问其他所有 Pod。在添加网络策略之前,不存在任何网络分段。正因为网络是扁平的,单个遭入侵的 Pod 才能扫描并攻击整个集群。
# From a pod, the flat network lets you reach any service
curl http://internal-db.prod.svc.cluster.local:5432网络策略基础
网络策略是作用域限定在命名空间内的规则,用于选择 Pod 并允许特定的入站或出站流量。网络策略具有叠加性:对 Pod 应用任何策略后,该 Pod 在所涵盖的方向上就会切换为默认拒绝。
- 选择器根据标签匹配 Pod。
- 规则允许来自或发往特定 Pod、命名空间或 CIDR 网段的流量。
- 必须使用支持策略的 CNI(Calico、Cilium)。
先默认拒绝,再显式允许
推荐的模式是为每个命名空间设置默认拒绝基线,然后针对必需的流量明确编写允许规则。
# Default-deny all ingress in a namespace (YAML)
# kind: NetworkPolicy spec: podSelector: {} policyTypes: [Ingress]
kubectl apply -f default-deny.yaml
# Then allow only frontend -> backend
kubectl apply -f allow-frontend.yaml出站流量与元数据阻断
出站策略与入站策略同样重要。
- 限制 Pod 可以访问哪些外部端点(限制数据外泄和 C2 通信)。
- 阻止 Pod 访问云元数据 IP
169.254.169.254,以防止窃取节点凭据。 - 限制 DNS 和内部东西向流量。
运行时防御
静态策略需要由运行时检测加以补充。
- Falco会针对可疑的系统调用发出警报(例如在容器中启动命令解释器、挂载敏感目录)。
- seccomp 配置文件会限制容器可以执行的系统调用。
- AppArmor/SELinux 会在节点上增加强制访问控制。
# Apply the runtime/default seccomp profile (securityContext)
# seccompProfile: type: RuntimeDefault
kubectl apply -f seccomp-deploy.yaml测试隔离效果
验证隔离效果时,应从测试 Pod 尝试跨 Pod 连接和逃逸原语,确认策略能够阻止这些操作。请在受控的命名空间中执行,并在完成后删除测试 Pod。
报告任何以特权模式运行的 Pod,或任何缺少默认拒绝策略的命名空间,并提供准确的清单修复方案。
快速检查
确认您对隔离的了解。
回顾
您已经学会了如何隔离工作负载。
- Pod 安全准入(受限模式)和 securityContext 可以阻止逃逸。
- Gatekeeper/Kyverno 可以强制执行自定义准入策略。
- 网络默认开放;请先应用默认拒绝策略,再添加明确的允许规则。
- 出站规则、元数据阻断和 Falco 可以进一步增强防护。
下一步:保护软件供应链和密钥。
用 AI 导师学习 Cyber Security Academy — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 76
- 课程
- 303
常见问题解答
「Pod 安全与网络策略」课时是免费的吗?
是的 — 「Pod 安全与网络策略」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「Pod 安全与网络策略」这节课中我会学到什么?
隔离工作负载。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「Pod 安全与网络策略」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Kubernetes 威胁模型
- RBAC 与服务账户
- Pod 安全与网络策略
- 保护供应链与机密信息