Kubernetes安全防护红宝书
Kubernetes安全防护红宝书:从青铜到王者的9层防御体系
作为每天和黑客斗智斗勇的K8S运维老兵,今天给大家分享一套经过金融级生产环境验证的安全方案。这套体系曾帮我们挡住过勒索病毒、挖矿脚本和APT攻击,建议直接抄作业!
第1层防御:API Server防护(城堡大门)
# 生产环境必备配置
apiServer:
enable-admission-plugins: "NodeRestriction,PodSecurity"
audit-log-path: /var/log/k8s-audit.log
audit-log-maxage: "30"
authorization-mode: "RBAC,Node"
encryption-provider-config: /etc/kubernetes/enc/conf.yaml
✅ 必做清单:
第2层防御:RBAC权限管制(内部门禁)

血泪教训:某厂运维误操作删除生产环境namespace,损失千万级订单。解决方案:
# 创建最小权限角色
kubectl create role developer \
--verb=get,list \
--resource=pods,services \
-n dev-env
# 绑定服务账号
kubectl create rolebinding dev-binding \
--role=developer \
--serviceaccount=dev-team:default \
-n dev-env
第3层防御:容器镜像安全(货物安检)
| 工具 | 检测能力 | 集成方案 |
|---|---|---|
| Trivy | CVE漏洞 | CI/CD流水线阻断 |
| Clair | 深度层扫描 | 与Harbor集成 |
| Cosign | 镜像签名验证 | 准入控制器拦截未签名镜像 |
镜像签名实战:
# 使用Cosign签名镜像
cosign generate-key-pair
cosign sign -key cosign.key myregistry.com/app:v1
# 验证签名(集群侧自动执行)
cosign verify -key cosign.pub myregistry.com/app:v1
第4层防御:网络隔离(护城河)
Calico网络策略示例:
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: db-isolation
spec:
selector: role == 'db'
ingress:
- action: Allow
protocol: TCP
source:
selector: role == 'app'
destination:
ports: [5432]
egress:
- action: Deny
🚨 常见错误:
- 开放所有namespace流量(默认拒绝才是王道)
- 忽略Pod到节点的流量控制
- 未限制外部出口流量(挖矿程序最爱)
第5层防御:运行时防护(巡逻卫兵)
Falco检测规则示例:
- rule: Unexpected privileged container
desc: Detect privileged containers
condition: container and privileged=true
output: "Privileged container running (user=%user.name command=%proc.cmdline)"
priority: CRITICAL
集成方案:
- 实时告警推送Slack/钉钉
- 联动Kubernetes审计日志
- 自动生成CIS合规报告
第6层防御:密钥管理(保险箱)
Vault注入Secrets实战:
annotations:
vault.hashicorp.com/agent-inject: 'true'
vault.hashicorp.com/role: 'app-role'
vault.hashicorp.com/agent-inject-secret-db-creds: 'database/creds/app'
⚠️ 高危操作黑名单:
- 在镜像中硬编码密码
- 使用默认Service Account
- 将Secret提交到Git仓库
第7层防御:节点加固(城墙加固)
CIS基准检查项:
# 使用kube-bench检测
docker run --rm --pid=host -v /etc:/etc:ro \
-v /var:/var:ro -t aquasec/kube-bench:latest \
--version 1.25
必须修复项:
- 禁用Swap分区
- 限制Kubelet匿名访问
- 启用AppArmor/SELinux
- 定期更新内核补丁
第8层防御:审计与溯源(监控天眼)
审计日志分析架构:
Fluentd → Elasticsearch → Kibana
↑
k8s审计日志 → 告警规则 → 企业微信通知
关键审计事件:
- configmaps更新
- rolebinding变更
- persistentvolumeclaims删除
- pods/exec连接
第9层防御:灾备恢复(逃生密道)
全集群备份方案:
velero backup create prod-backup \
--include-namespaces=production \
--snapshot-volumes \
--ttl 72h
恢复演练清单:
- 模拟节点故障(Chaos Mesh注入)
- 定期测试备份恢复(每年至少2次)
- 多区域备份验证
安全加固检查表(每月执行)
最后说句大实话:安全没有银弹!再好的方案也抵不过日常运维的细心。建议把安全防护做成肌肉记忆,就像每天锁门一样自然。毕竟在云原生时代,安全才是最大的生产力!
浙公网安备 33010602011771号