预约咨询 提交工单

Kubernetes SRE平台安全加固实用指南

本文通过一个真实场景,展示如何诊断并加固Kubernetes集群中的安全漏洞,涵盖RBAC、网络策略和Pod安全标准。

Kubernetes SRE平台安全加固实用指南
Security 6min 46 浏览 2026-06-25
KubernetesSRE安全加固

场景

某SRE团队在Kubernetes集群监控中发现异常:出现未知Pod,且网络出站流量激增。初步怀疑集群存在安全漏洞。

症状

  • 非预期的Pod在命名空间中运行
  • 网络出站流量异常增加
  • kube-system命名空间中出现可疑的ClusterRole绑定

诊断

  1. 检查RBAC权限:
kubectl get clusterrolebindings --all-namespaces
kubectl describe clusterrolebinding <可疑名称>
  1. 检查网络策略:
kubectl get networkpolicies --all-namespaces

若没有网络策略,默认允许所有流量。 3. 检查Pod安全标准:

kubectl get podsecuritypolicies

若未定义,则无限制。

加固命令

RBAC最小权限

  • 删除不必要的ClusterRoleBinding:
kubectl delete clusterrolebinding <可疑名称>
  • 创建严格Role并绑定:
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:
- kind: User
  name: jane
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io
EOF

网络策略

  • 拒绝所有入站出站流量:
cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
EOF
  • 允许必要流量(例如允许kube-dns):
cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-dns
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: myapp
  policyTypes:
  - Egress
  egress:
  - to:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: kube-system
    ports:
    - protocol: UDP
      port: 53
EOF

Pod安全标准(使用Pod Security Admission)

  • 启用Pod安全准入控制器:
kubectl label ns default pod-security.kubernetes.io/enforce=restricted

注意:此操作可能影响现有Pod,需先测试。

风险控制

  • 所有变更前备份当前配置:
kubectl get clusterrolebindings -o yaml > backup-rbac.yaml
  • 在生产集群上逐步实施,先应用于测试命名空间。
  • 启用审计日志以监控异常访问。

回滚

  • 如果策略导致服务中断,使用备份恢复:
kubectl apply -f backup-rbac.yaml
  • 对于网络策略,删除策略即可:
kubectl delete networkpolicy default-deny-all

验证

  • 检查RBAC:
kubectl auth can-i get pods --as=jane
  • 检查网络策略:
kubectl describe networkpolicy default-deny-all
  • 检查Pod安全:
kubectl run test --image=busybox -- sleep 1

应被拒绝。

何时提交OpsGlobal工单

  • 如果集群遭受攻击且需要紧急响应。
  • 若需要合规性审计专家协助。
  • 当内部团队缺乏Kubernetes安全经验时。

适用场景

适合正在处理 Security、Kubernetes, SRE, 安全加固 相关问题的团队,用于快速建立排查路径和交付标准。

问题背景

本文通过一个真实场景,展示如何诊断并加固Kubernetes集群中的安全漏洞,涵盖RBAC、网络策略和Pod安全标准。

排查步骤

先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。

命令示例

示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。

风险说明

生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。

回滚方案

保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。

交付清单

问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。

!

遇到类似技术问题?

如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。

工单 WhatsApp 联系 咨询