上一篇【第58篇】Pod Security Standards——Pod安全的“三条红线“PSP已死PSS当立下一篇【第60篇】API Server深度解析——K8s的总控制器是怎么工作的摘要前面六篇把K8s安全的各个组件都讲透了——认证、授权、SA、SecurityContext、NetworkPolicy、Secret、PSS。但安全不是配置完就高枕无忧。配置会漂移、版本会升级、新人会手滑。所以需要定期审计——对照业界公认的安全基线CIS Kubernetes Benchmark用自动化工具扫描发现那些我以为配了但其实没配的坑。这篇文章梳理CIS Benchmark的核心检查项介绍三大扫描工具kube-bench/kube-hunter/Trivy最后给你一份能直接用的生产安全Checklist。一、CIS Kubernetes Benchmark1.1 它是什么【CIS Benchmark——K8s安全的考试大纲】 CIS (Center for Internet Security) 发布的 业界公认K8s安全配置基线 覆盖组件 • 控制平面节点 (Master) ├── API Server ├── etcd ├── Controller Manager └── Scheduler • 工作节点 (Worker) ├── kubelet └── 配置文件权限 • 策略 (Policies) ├── RBAC / PSA └── NetworkPolicy 每条检查项分: • [PASS] 通过 • [FAIL] 不通过 (要修) • [WARN] 需人工确认1.2 核心检查项举例组件典型检查项风险API Server关闭匿名认证--anonymous-authfalse防匿名访问API Server启用RBAC--authorization-modeRBAC防无鉴权API Server启用TLS引导--tls-cert-file防明文etcd启用客户端TLS--cert-file/--key-file防窃听etcd启用peer通信TLS防集群内窃听Controller Mgr启用服务账号私钥防token伪造Scheduler配置文件权限644/属主root防篡改kubelet启用鉴权--authorization-modeWebhook防越权kubelet禁用匿名--anonymous-authfalse防未授权要点CIS检查项本质就是把前面几篇讲的最佳实践落成可勾选的清单。比如API Server匿名认证要关、“etcd要加密”、“kubelet要Webhook鉴权”——这些我们在第052/054/057篇都讲过。CIS的价值是把它们标准化、可自动化核对。二、三大扫描工具2.1 kube-bench对照CIS打分# 在集群里跑kube-bench (用官方job)kubectl apply-fhttps://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml kubectl logs job/kube-bench# 输出示例# [INFO] 1 Control Plane Security Configuration# [INFO] 1.1 API Server# [PASS] 1.1.1 Ensure that the --anonymous-auth argument is set to false# [FAIL] 1.1.2 Ensure that the --token-auth-file parameter is not set# [WARN] 1.1.3 Ensure that the --kubelet-certificate-authority ...## 一堆[FAIL]就是你要修的2.2 kube-hunter模拟攻击者视角【kube-hunter——以攻促防】 kube-hunter 模拟黑客的视角扫描你的集群 • 被动模式: 监听网络里的K8s流量 • 主动模式: 主动探测漏洞(谨慎用可能触发告警) 能发现 • 暴露的API Server (无鉴权!) • 开放的不安全端口(8080) • 有漏洞的组件版本 • 可被利用的配置# 在集群外跑(扫描指定IP)dockerrun-it--rmaquasec/kube-hunter--remote1.2.3.42.3 Trivy镜像漏洞扫描# 扫镜像里的CVE漏洞trivy image nginx:1.20# 输出# nginx:1.20 (debian 11)# Total: 23 (CRITICAL: 2, HIGH: 11, MEDIUM: 10)# ┌─────────┬────────┬────────┬──────────────────┐# │ Library │ Vuln │ Severity│ Installed Version │# ├─────────┼────────┼────────┼──────────────────┤# │ openssl │ CVE... │ CRITICAL│ 1.1.1n │# └─────────┴────────┴────────┴──────────────────┘# 还能扫IaC(你的YAML有没有写特权容器)trivy config ./manifests/工具扫什么场景kube-bench集群配置 vs CIS定期审计kube-hunter运行时攻击面红蓝对抗Trivy镜像CVE IaC配置CI流水线三、生产安全Checklist3.1 一份能直接用的清单【生产K8s安全 CheckList】 【认证与授权】 ☐ API Server匿名认证已关闭 ☐ 授权模式为RBAC ☐ 没有账号用cluster-admin(除了必要运维) ☐ ServiceAccount自动挂载按需关闭 ☐ 使用Bound ServiceAccount Token (v1.22) 【Pod安全】 ☐ PSA在业务ns强制baseline/restricted ☐ 业务容器runAsNonRoottrue ☐ 没有特权容器(privileged:true) ☐ 根文件系统只读 ☐ seccompRuntimeDefault 【网络安全】 ☐ 关键ns有NetworkPolicy(默认拒绝) ☐ 跨ns流量受控 ☐ 用Calico/Cilium等支持策略的CNI 【数据安全】 ☐ etcd静态加密已开启 ☐ Secret不用原生裸Secret(用Vault/Sealed/External) ☐ 不用latest镜像标签 【供应链】 ☐ 镜像进CI先过Trivy扫描 ☐ 用admission webhook挡latest/未签名镜像 ☐ 定期kube-bench审计 【可观测】 ☐ API Server审计日志开启 ☐ 关键操作有告警要点这份清单就是把前面所有安全文章压缩成可勾选的条目。建议你把它纳入CI/CD和定期巡检——每次集群变更后跑一遍kube-bench每次发镜像跑一遍Trivy。安全是持续过程不是一次性配置。四、把审计做成自动化# 用CronJob定期跑kube-bench结果发到监控apiVersion:batch/v1kind:CronJobmetadata:name:kube-bench-scannamespace:securityspec:schedule:0 3 * * 0# 每周日凌晨3点jobTemplate:spec:template:spec:containers:-name:kube-benchimage:aquasec/kube-bench:latestcommand:[kube-bench,run,--targets,master,node,etcd,policies]restartPolicy:Never本篇小结安全配置会漂移必须定期审计。CIS Kubernetes Benchmark是业界公认基线kube-bench对照它自动打分、kube-hunter从攻击者视角找弱点、Trivy扫镜像CVE和IaC配置。把审计做成自动化——CronJob定期跑kube-benchCI里跑Trivy挡漏洞镜像。配合本文的生产安全Checklist认证/RBAC、Pod安全/PSA、网络/NetworkPolicy、数据/加密、供应链/扫描你的集群才算真正体检合格。安全模块到此通关下一篇进入核心原理——API Server深度解析。上一篇【第58篇】Pod Security Standards——Pod安全的“三条红线“PSP已死PSS当立下一篇【第60篇】API Server深度解析——K8s的总控制器是怎么工作的