饮墨

子安饮墨馀三斗,留与卿儿作赋来

Kubescape:Kubernetes 安全合规扫描与运行时防护生产实战

痛点

Kubernetes 集群的安全合规是运维绑定度最高的"隐形炸弹"之一。CIS Benchmark、NSA-CISA 指南、MITRE ATT&CK 容器矩阵——标准一堆,但落地时面临三大困境:

  1. 扫描工具碎片化:镜像漏洞用 Trivy,运行时用 Falco,配置合规用 kube-bench,RBAC 审计又要单独脚本,工具链臃肿且告警分散。
  2. CI/CD 集成难度大:多数工具只支持事后扫描,无法在部署前拦截不合规的 workload。
  3. 缺乏风险优先级:扫描结果动辄上百条 finding,运维团队无法判断哪些是真正可被利用的攻击路径。

Kubescape 是 CNCF 旗下的开源 Kubernetes 安全平台(2024 年进入 Sandbox),一个工具覆盖配置扫描、镜像漏洞、RBAC 分析和运行时检测,且内置攻击路径评分,直接解决上述问题。

方案概览

Kubescape 的核心架构:

组件 功能
kubescape CLI 本地/CI 扫描,支持 CIS、NSA、MITRE 等框架
Kubescape Operator 集群内持续扫描,定时 CronJob
Kubescape Storage 扫描结果持久化(基于 etcd 或 S3)
Node Agent (eBPF) 运行时行为监控,异常进程/网络检测

一条命令覆盖:配置合规 + 镜像漏洞 + RBAC 风险 + 运行时防护。

实操步骤

第 1 步:安装 CLI 并执行首次集群扫描

# 安装(Linux/macOS)
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash

# 全量扫描 — 同时检测 CIS + NSA + MITRE 框架
kubescape scan --enable-host-scan --format pretty

# 指定单个框架扫描
kubescape scan framework cis-v1.23-t1.0.1

# 扫描单个命名空间
kubescape scan --include-namespaces production

输出示例:

┌──────────────────────────────────────┬────────┬─────────┐
│ Control                              │ Status │ Score   │
├──────────────────────────────────────┼────────┼─────────┤
│ C-0034 - Automatic mapping of SA     │ Failed │ 78/100  │
│ C-0017 - Immutable container FS      │ Failed │ 65/100  │
│ C-0057 - Privileged container        │ Passed │ 100/100 │
└──────────────────────────────────────┴────────┴─────────┘
Controls: 53 Passed, 12 Failed, 3 Skipped
Risk Score: 32% (Medium)

第 2 步:集成到 CI/CD Pipeline(GitLab CI 示例)

# .gitlab-ci.yml
security-scan:
  stage: test
  image: quay.io/kubescape/kubescape:latest
  script:
    - kubescape scan ${CI_PROJECT_DIR}/k8s-manifests/
      --format junit
      --output results.xml
      --severity-threshold critical
      --compliance-threshold 75
  artifacts:
    reports:
      junit: results.xml
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

关键参数说明: - --severity-threshold critical:仅当存在 Critical 级别问题时 pipeline 失败 - --compliance-threshold 75:合规分低于 75% 时阻断部署 - 输出 JUnit 格式可直接在 MR 中展示结果

GitHub Actions 版本:

- name: Kubescape Scan
  uses: kubescape/github-action@main
  with:
    files: "k8s/"
    frameworks: "nsa,mitre"
    severityThreshold: "critical"
    complianceThreshold: "75"

第 3 步:部署 Operator 实现集群持续监控

# Helm 安装 Kubescape Operator
helm repo add kubescape https://kubescape.github.io/helm-charts/
helm repo update

helm install kubescape kubescape/kubescape-operator \
  -n kubescape --create-namespace \
  --set capabilities.continuousScan=enable \
  --set capabilities.nodeScan=enable \
  --set capabilities.runtimeDetection=enable \
  --set nodeAgent.config.maxLearningTime=2h \
  --set server.volumeSize=10Gi

安装后自动执行: - 每 24h 全量配置合规扫描 - 每天镜像漏洞库更新 + 扫描 - Node Agent 通过 eBPF 建立应用行为基线,学习期后自动检测异常

查看扫描结果:

# 查看配置扫描摘要
kubectl get configurationscansummaries -n kubescape

# 查看特定 workload 的漏洞报告
kubectl get vulnerabilitymanifestsummaries -n kubescape \
  -l kubescape.io/workload-name=nginx-deployment

# 查看运行时告警
kubectl get runtimealerts -n kubescape --sort-by='.metadata.creationTimestamp'

第 4 步:RBAC 可视化与攻击路径分析

# 导出 RBAC 风险评估
kubescape scan control C-0035,C-0036,C-0037,C-0038 \
  --format json --output rbac-report.json

# 攻击路径分析 — 找出从 internet-facing Pod 到集群管理权限的路径
kubescape scan --attack-tracks \
  --include-namespaces default,production

输出会标注每条攻击路径的可利用性评分(基于实际配置而非理论风险),帮助运维优先修复真正危险的组合漏洞。

避坑指南

1. Node Agent 内存占用过高

eBPF 运行时检测默认学习所有 Pod 行为。大规模集群(500+ Pod)初始学习期内存可达 2GB/节点。

解决方案: 限定监控范围 + 调整学习时间:

# values.yaml
nodeAgent:
  resources:
    limits:
      memory: 1Gi
  config:
    maxLearningTime: 1h  # 缩短学习期
    # 仅监控特定命名空间
    includeNamespaces:
      - production
      - staging

2. 扫描结果误报导致 CI 频繁失败

部分 Control(如 C-0034 ServiceAccount Token 自动挂载)在系统组件中是预期行为。

解决方案: 使用例外配置:

# .kubescape/exceptions.json
[
  {
    "name": "system-sa-exception",
    "policyType": "postureExceptionPolicy",
    "actions": ["alertOnly"],
    "resources": [
      {
        "designatorType": "Attributes",
        "attributes": {
          "namespace": "kube-system"
        }
      }
    ],
    "posturePolicies": [
      {"controlID": "C-0034"},
      {"controlID": "C-0065"}
    ]
  }
]

扫描时加载:kubescape scan --exceptions .kubescape/exceptions.json

3. Operator CRD 升级后旧数据不兼容

Kubescape 版本迭代较快,CRD schema 变更可能导致旧扫描数据无法读取。

解决方案: 升级前清理历史数据:

# 升级前备份并清理
kubectl delete configurationscansummaries --all -n kubescape
kubectl delete vulnerabilitymanifests --all -n kubescape
helm upgrade kubescape kubescape/kubescape-operator -n kubescape

与同类工具对比

维度 Kubescape Trivy Operator kube-bench + Falco
配置合规 ✅ CIS/NSA/MITRE ✅ CIS(基础) ✅ kube-bench
镜像漏洞 ✅ 内置 ✅ 核心能力 ❌ 需额外工具
RBAC 分析 ✅ 攻击路径
运行时检测 ✅ eBPF ✅ Falco
CI/CD 集成 ✅ CLI + Action ✅ CLI ⚠️ 需组合
统一面板

Kubescape 的核心优势是一个工具覆盖全链路,降低了工具链维护成本。

总结

核心结论: Kubescape 是目前 Kubernetes 安全合规领域"性价比"最高的开源方案,适合中小团队用一个工具替代 kube-bench + Trivy + RBAC 审计脚本的组合。

推荐部署策略: 1. CI/CD 阶段:CLI 扫描 manifest,Critical 问题阻断部署 2. 集群内:Operator 持续扫描,结果对接 Prometheus + AlertManager 3. 运行时:Node Agent 监控生产命名空间,异常行为自动告警

适用场景: 需要通过 SOC2、ISO 27001 合规审计的团队,或者想用单一工具统一 Kubernetes 安全扫描能力的运维组织。

不适用场景: 已有成熟 Falco + Trivy + OPA 体系且运行稳定的大型团队——迁移成本可能大于收益。

您还没有登录,请登录后发表评论。