云原生安全扫描:使用 kube-bench 检查 K8s 集群 CIS 合规性

1. 核心概念说明
  • CIS 基准:由互联网安全中心制定的 Kubernetes 安全配置标准,涵盖控制平面、工作节点等组件的安全最佳实践
  • kube-bench:开源工具,自动化检测集群配置是否符合 CIS Kubernetes Benchmark 要求
  • 工作原理:通过执行预定义的检测规则(如配置文件权限、API Server 参数等)生成合规性报告
2. 操作步骤
(1) 安装 kube-bench
# 使用容器化部署(推荐)
docker run --rm -v $(pwd):/host aquasec/kube-bench:latest

# 二进制安装
curl -L https://github.com/aquasecurity/kube-bench/releases/download/v0.6.15/kube-bench_0.6.15_linux_amd64.tar.gz | tar -xz
sudo mv kube-bench /usr/local/bin

(2) 执行扫描
# 完整集群扫描(需kubectl权限)
kube-bench run --targets=master,node,etcd,policies

# 指定组件扫描
kube-bench master --config-dir /path/to/cfg

(3) 解析报告

报告采用分级结构:

[PASS] 1.1.1 确保API Server的--anonymous-auth参数设置为false
[WARN] 2.1.6 控制器管理器--profiling未禁用
[FAIL] 4.2.1 Kubelet授权模式未配置Webhook

3. 关键检测项示例
检测类别典型项目安全影响
控制平面API Server 认证配置防止未授权访问
工作节点Kubelet TLS 证书设置避免中间人攻击
etcd 配置客户端证书认证启用保障数据存储安全
策略执行Pod Security Policies 启用状态控制容器权限提升风险
4. 结果处理建议
  1. 立即修复项(标记为 FAIL):

    • 修改 kube-apiserver 配置文件
    • 调整 kubelet 启动参数
    • 更新 RBAC 权限设置
  2. 优化项(标记为 WARN):

    # 示例:禁用控制器性能分析
    sed -i 's/--profiling=true/--profiling=false/' /etc/kubernetes/manifests/kube-controller-manager.yaml
    

  3. 持续监控

    • 集成到 CI/CD 流水线
    • 定期执行扫描(建议每周)
    • 使用 JSON 输出对接监控系统:
      kube-bench json > audit.json
      

5. 注意事项
  • 权限要求:需使用具有 cluster-admin 权限的 kubeconfig
  • 版本兼容:确保 kube-bench 版本与 Kubernetes 版本匹配
  • 误报处理:对特殊场景(如托管服务)需人工复核 FAIL 项
  • 补救参考:依据 CIS Kubernetes Benchmark 官方文档实施修复

最佳实践:将扫描结果与 K8s 准入控制器结合,自动拦截不符合安全基准的部署请求,实现"安全左移"。

更多推荐