性能优化
在 Kubernetes…
当你需要为 Kubernetes 集群加固安全、实现网络分段、强制 Pod 安全标准或配置最小权限访问时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 Kubernetes 集群中实施纵深通用
解决思路
- 在命名空间级别通过标签实施 Pod Security Standards:用 pod-security.kubernetes.io/enforce/audit/warn 标签分别设置为 privileged、baseline 或 restricted 三档。
- 创建默认拒绝所有流量的 NetworkPolicy:podSelector 设为 {},policyTypes 同时包含 Ingress 和 Egress。
- 按需创建允许特定流量的 NetworkPolicy:例如用 podSelector 匹配 app: backend,在 ingress.from 中用 podSelector 匹配 app: frontend,并指定 ports(如 TCP 8080)。
- 创建允许 DNS 出站的 NetworkPolicy:egress.to 使用 namespaceSelector 匹配 name: kube-system,ports 指定 UDP 53。
- 用 Role 定义命名空间级 RBAC 权限(如对 pods 的 get/watch/list),用 ClusterRole 定义集群级权限(如对 secrets 的 get/watch/list)。
- 用 RoleBinding 将 Role 绑定到 User 或 ServiceAccount 主体,通过 roleRef 引用对应 Role。
- 在 Pod 的 securityContext 中设置 runAsNonRoot: true、runAsUser、fsGroup 和 seccompProfile.type: RuntimeDefault。
- 在容器 securityContext 中设置 allowPrivilegeEscalation: false、readOnlyRootFilesystem: true,并用 capabilities.drop: [ALL] 丢弃所有能力。
- 用 OPA Gatekeeper 的 ConstraintTemplate 定义策略(如 K8sRequiredLabels,用 Rego 校验必需标签),再用 Constraint 指定 match.kinds 和 parameters 来强制执行。
- 用 Istio 的 PeerAuthentication 设置 mtls.mode: STRICT 强制服务间 mTLS。
- 用 Istio 的 AuthorizationPolicy 设置 action: ALLOW,并通过 rules.from.source.principals 指定允许的服务账号身份。
- 遵循最佳实践:命名空间级实施 Pod Security Standards、用 NetworkPolicy 做网络分段、为所有 ServiceAccount 应用最小权限 RBAC、启用准入控制(OPA Gatekeeper/Kyverno)、容器以非 root 运行、使用只读根文件系统、丢弃所有非必要能力、实施资源配额和 LimitRange、启用审计日志、定期扫描镜像。
- 对照合规框架:CIS Kubernetes Benchmark(使用 RBAC 授权、启用审计日志、使用 Pod Security Standards、配置网络策略、启用静态加密、启用节点认证)和 NIST 网络安全框架(纵深防御、网络分段、安全监控、访问控制、日志与监控)。
- 排查 NetworkPolicy 不生效:用 kubectl get nodes -o wide 检查 CNI 是否支持 NetworkPolicy,用 kubectl describe networkpolicy <name> 查看详情。
- 排查 RBAC 权限被拒:用 kubectl auth can-i list pods --as system:serviceaccount:default:my-sa 和 kubectl auth can-i '*' '*' --as system:serviceaccount:default:my-sa 检查实际权限。