用途:为 Kubernetes 集群实施纵深防御安全策略,适用于保护 Pod、限制网络流量、配置基于角色的访问控制,以及在集群中执行合规控制。
主要能力:在命名空间级别应用 Pod Security Standards(privileged、baseline、restricted,通过 pod-security.kubernetes.io/enforce、audit、warn 标签生效);先建立 default-deny-all 的 NetworkPolicy,再逐层添加允许规则(如 frontend→backend 8080、DNS 出站 53);配置最小权限 RBAC(命名空间级 Role、ClusterRole、RoleBinding);加固 Pod securityContext(runAsNonRoot、runAsUser、allowPrivilegeEscalation: false、readOnlyRootFilesystem、capabilities.drop: [ALL]、seccompProfile);用 OPA Gatekeeper 的 ConstraintTemplate 与 Constraint 做准入控制;用 Istio PeerAuthentication 的 STRICT mTLS 与 AuthorizationPolicy 限制服务间访问。
使用方式:需运行中的 Kubernetes 集群(建议 v1.25+)、已配置集群管理员权限的 kubectl、支持 NetworkPolicy 的 CNI(Calico、Cilium、Weave Net 等);Gatekeeper 与 Istio 需各自控制器已安装。策略以 YAML 定义后用 kubectl apply -f <file>.yaml 应用;PowerShell 下 kubectl 命令一致,多行 YAML 先存文件再应用。可用 kubectl get namespace --show-labels、kubectl auth can-i、kubectl get networkpolicy 等验证。
适用场景:命名空间或层级间网络分段、多租户集群、Pod 安全上下文加固、CIS Benchmark 与 NIST CSF 合规。
限制:NetworkPolicy 是否生效取决于 CNI,Flannel 单独不支持;default-deny 出站会阻断 DNS,需同时放行 DNS;PodSecurityPolicy 已在 v1.25 移除;enforce 模式不驱逐已有不合规 Pod,但会阻止更新与新建;Gatekeeper 约束不回溯检查已有资源;Istio STRICT mTLS 会拒绝非网格客户端,迁移期可用 PERMISSIVE。输出不能替代环境特定验证、测试或专家评审。