Cyber Security Academy · 课时

Pod 安全与网络策略

隔离工作负载。

第 3 / 4 课13 个步骤

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Kubernetes 威胁模型
  2. RBAC 与服务账户
  3. Pod 安全与网络策略
  4. 保护供应链与机密信息
← 返回 Cyber Security Academy