KubernetesSRE安全加固RBAC网络策略
场景
某电商平台Kubernetes集群因RBAC配置过于宽松,导致一名开发人员误删关键命名空间中的Deployments,造成线上服务中断30分钟。事后排查发现该开发人员拥有集群管理员权限,且未启用网络策略和Pod安全策略。
症状
- 非管理员用户意外删除生产资源
- 恶意容器逃逸或资源滥用
- 网络流量被拦截或异常访问
诊断
# 检查当前RBAC绑定
kubectl get rolebindings,clusterrolebindings --all-namespaces -o wide
# 检查Pod安全标准违规
kubectl get pod --all-namespaces -o json | jq '.items[] | {name: .metadata.name, ns: .metadata.namespace, securityContext: .spec.containers[].securityContext} | select(.securityContext.privileged == true or .securityContext.runAsUser == 0)'
# 验证NetworkPolicy覆盖率
kubectl get networkpolicies --all-namespaces | grep -v "NAMESPACE" | awk '{print $1}' | sort | uniq -c
安全加固步骤
1. RBAC最小权限原则
# 创建只读角色
kubectl create role read-only --verb=get,list,watch --resource=pods,services --dry-run=client -o yaml > read-only-role.yaml
kubectl apply -f read-only-role.yaml
# 绑定到用户
kubectl create rolebinding dev-readonly --role=read-only --user=dev-user --namespace=default
2. 实施NetworkPolicy
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
3. 启用Pod Security Admission
# 在命名空间标签启用基线策略
kubectl label ns production pod-security.kubernetes.io/enforce=baseline
风险控制
- 变更前快照RBAC和NetworkPolicy:
kubectl get clusterrolebindings -o yaml > backup-rbac.yaml - 使用Canary部署测试网络策略
- 开启审计日志:
kubectl logs kube-apiserver -n kube-system | grep audit
回滚
# 恢复RBAC绑定
kubectl delete rolebinding dev-readonly -n default
kubectl apply -f backup-rbac.yaml
# 删除NetworkPolicy
kubectl delete networkpolicy default-deny -n production
验证
# 测试权限
kubectl auth can-i delete pods --as=dev-user -n production
# 测试网络隔离
kubectl run test-pod --image=busybox --rm -it -- wget -O- http://other-service
何时提交OpsGlobal工单
- 集群遭受攻击或数据泄露
- 安全策略导致大面积服务中断
- 需要专业渗透测试或合规审计
适用场景
适合正在处理 Security、Kubernetes, SRE, 安全加固, RBAC 相关问题的团队,用于快速建立排查路径和交付标准。
问题背景
本文深入探讨Kubernetes集群的安全加固策略,包括RBAC精细化权限管理、网络策略隔离、Pod安全标准实施等关键操作,并提供诊断命令、风险控制及回滚步骤,帮助SRE团队构建生产级安全防线。
排查步骤
先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。
命令示例
示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。
风险说明
生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。
回滚方案
保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。
交付清单
问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。
遇到类似技术问题?
如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。