预约咨询 提交工单

DevOps安全加固:运维/SRE平台生产级实践

本文通过真实场景,演示Kubernetes集群安全加固的完整流程,包括RBAC最小权限、网络策略、Pod安全标准及Secrets管理,并提供回滚与验证步骤。

DevOps安全加固:运维/SRE平台生产级实践
Security 6min 7 浏览 2026-06-19
Kubernetes安全加固SRERBAC网络策略

场景

某金融科技公司SRE团队发现生产Kubernetes集群中一个低权限Pod通过挂载的ServiceAccount令牌访问了敏感命名空间中的Secret。该Pod本应仅限日志收集,但默认RBAC配置允许跨命名空间访问。

症状

  • 安全审计日志显示异常kubectl get secrets调用。
  • 监控告警:非预期命名空间的API请求量上升。
  • 某服务错误日志中意外出现其他服务的数据库密码明文。

诊断

  1. 检查Pod的ServiceAccount绑定: bash kubectl get pod <pod-name> -n <namespace> -o json | jq '.spec.serviceAccountName'
  2. 查看该ServiceAccount的RoleBinding: bash kubectl get rolebinding,clusterrolebinding -n <namespace> | grep <serviceaccount>
  3. 确认默认的ClusterRole通常包含get secrets权限。

命令执行:安全加固

1. 创建最小权限ServiceAccount

kubectl create serviceaccount log-collector -n logging

2. 定义只读日志访问Role

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: logging
  name: log-reader
rules:
- apiGroups: [""]
  resources: ["pods/log", "pods"]
  verbs: ["get", "list", "watch"]

3. 绑定Role

kubectl create rolebinding log-reader-binding --role=log-reader --serviceaccount=logging:log-collector -n logging

4. 更新Pod使用新ServiceAccount

编辑Pod spec,添加serviceAccountName: log-collector,删除旧Secret挂载。

5. 启用网络策略

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-other-namespaces
  namespace: logging
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: logging

6. 应用Pod安全标准(Restricted)

kubectl label ns logging pod-security.kubernetes.io/enforce=restricted

风险控制

  • 先在非生产环境测试RBAC变更。
  • 网络策略可能阻断合法流量,提前规划白名单。
  • Pod安全标准可能导致现有Pod无法启动,需逐个适配。

回滚方案

kubectl delete rolebinding log-reader-binding -n logging
kubectl delete role log-reader -n logging
kubectl delete networkpolicy deny-other-namespaces -n logging
kubectl label ns logging pod-security.kubernetes.io/enforce- # 删除标签

验证

  1. 确认Pod无法访问其他命名空间: bash kubectl exec -it <pod> -n logging -- curl -k -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" https://kubernetes.default.svc/api/v1/namespaces/default/secrets 应返回403。
  2. 确认日志收集功能正常。

何时提交OpsGlobal工单

当您遇到以下情况时,请立即提交工单: - 内部发现恶意访问但缺乏Kubernetes安全专业知识。 - 需要大规模集群安全审计与策略迁移。 - 对Pod安全标准兼容性评估或自定义策略编写。

OpsGlobal的SRE专家将提供7x24小时远程支持,快速诊断并执行加固。

适用场景

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

问题背景

本文通过真实场景,演示Kubernetes集群安全加固的完整流程,包括RBAC最小权限、网络策略、Pod安全标准及Secrets管理,并提供回滚与验证步骤。

排查步骤

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

命令示例

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

风险说明

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

回滚方案

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

交付清单

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

!

遇到类似技术问题?

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

工单 WhatsApp 联系 咨询