场景
您的 SRE 平台运行着一个 Kubernetes 集群,包含大量微服务、CI/CD 管道和监控堆栈。最近,安全审计标记了一些可疑活动:未知用户拥有 cluster-admin 权限,Pod 以 root 身份运行,并且审计日志缺失。您怀疑默认设置和高权限角色已被遗留。
症状
- 来自意外 IP 的异常 API 调用。
kubectl命令在某些命名空间中无需认证即可执行。- Pod 以
privileged: true和hostNetwork: true运行。 kube-system中没有可用的审计日志。- Secret 以明文环境变量的形式存储。
诊断
首先,从当前安全态势的梳理开始。使用 kubectl 枚举角色和绑定,检查 Pod 规格,并验证审计配置。运行 kube-bench 与 CIS 基准进行比较。同时,检查 kubeconfig 文件和服务账号。
命令
kubectl get clusterroles -o wide– 列出所有集群角色。kubectl get clusterrolebindings -o json | jq '...'– 检查绑定详情。kubectl auth can-i --list --namespace default– 检查当前权限。kubectl get pods -A -o json | jq '.items[] | {name: .metadata.name, privileged: .spec.containers[].securityContext.privileged}'– 找出特权 Pod。kube-bench run --targets master,node– 运行 CIS 合规性检查。kubectl get events -A– 查看策略违规事件。
风险控制
- 启用 RBAC 并禁用 ABAC。
- 使用 Roles 和 ClusterRoles 遵循最小权限原则。
- 使用验证准入控制器(如 OPA Gatekeeper 或 KubeAdvisor)实施 Pod 安全标准(Baseline 或 Restricted)。
- 使用网络策略限制东西向流量。
- 使用 HashiCorp Vault 或 External Secrets Operator 等工具集中管理 Secret。
- 将 Kubernetes 审计日志启用并存放到安全位置。
回滚
- 对于 RBAC 更改,保留原始 YAML 备份并重新应用。
- 对于准入控制器,通过移除 webhook 配置将其禁用。
- 对于网络策略,删除策略或从备份恢复。
- 对于 Secret 管理更改,切换回之前的信任源。
验证
- 重新运行
kube-bench以确认通过率有所提高。 - 检查审计日志中是否存在未授权访问尝试。
- 对受限用户执行
kubectl auth can-i测试。 - 确认特权 Pod 不再运行。
何时提交 OpsGlobal 工单
如果您缺乏内部专业知识来实施 OPA 策略,需要帮助分析 Kubernetes 审计日志,或者需要进行超越 CIS 基准的全面安全审查,请提交工单。OpsGlobal 可以提供即时远程支持和修复。
适用场景
适合正在处理 Security、Kubernetes, SRE, 安全加固 相关问题的团队,用于快速建立排查路径和交付标准。
问题背景
了解如何通过具体命令、风险控制和回滚策略,识别并修复基于 Kubernetes 的 SRE 平台中的常见安全漏洞。
排查步骤
先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。
命令示例
示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。
风险说明
生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。
回滚方案
保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。
交付清单
问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。
遇到类似技术问题?
如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。