mcpField
B
benchmarking-kubernetes-with-kube-bench

benchmarking-kubernetes-with-kube-bench

github.com/mukul975安全35.2k131 次安装8 周前更新
代码仓库

关于 benchmarking-kubernetes-with-kube-bench

这是围绕 kube-bench 的 Kubernetes 安全基准检查技能,面向负责集群加固与合规审计的运维和安全人员。它按 CIS Kubernetes Benchmark 检查集群配置,并提供结果格式、修复与复核流程。

主要功能

  1. 01检查控制平面、节点和 etcd
  2. 02按 CIS 基准评估配置
  3. 03输出 PASS、FAIL、WARN、INFO
  4. 04生成 JSON、JUnit 和 ASFF 报告
  5. 05复测修复结果并跟踪趋势

适用场景

  1. 01为新 Kubernetes 集群建立安全基线
  2. 02定期审计控制平面与节点配置
  3. 03在 CI/CD 中加入合规扫描
  4. 04修复后确认检查项通过

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill benchmarking-kubernetes-with-kube-bench

安装后在 Claude Code 中输入/benchmarking-kubernetes-with-kube-bench确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
standards.md
scripts/
agent.py

详细介绍

使用 kube-bench 对 Kubernetes 进行基准测试

概述

kube-bench(由 Aqua Security 开发)是一款开源工具,它通过运行 CIS Kubernetes Benchmark 中记录的检查项,来检测 Kubernetes 集群是否以安全的方式部署。它会检查控制平面组件(API server、controller manager、scheduler、etcd)、kubelet 与工作节点配置,以及集群范围的策略设置,然后将每一项检查报告为 PASS、FAIL、WARN 或 INFO,并附上直接取自 CIS 指南的修复建议。测试由配置驱动的 YAML 文件定义,因此 kube-bench 能够跟进新的 Kubernetes 版本和基准修订,并支持托管发行版(EKS、GKE、AKS、ACK、OpenShift、RKE、k3s)。

按照 CIS Benchmark 加固集群,可直接缩小 T1610(Deploy Container) 的攻击面——在该技术中,攻击者部署容器以执行代码或规避防御,例如滥用特权容器、主机命名空间、匿名 API 访问,或未加固集群所暴露的不安全 kubelet 设置。

kube-bench 可以作为独立二进制文件在节点上运行,也可以在容器内运行,或者——最常见的方式——作为 Kubernetes Job 运行,其 Pod 挂载了主机文件系统,以便读取相关配置文件。输出可采用人类可读文本、JSON、JUnit 或 AWS Security Finding Format(ASFF),并可推送到 PostgreSQL 数据库以进行趋势跟踪。

适用场景

  • 为新 Kubernetes 集群按照 CIS Kubernetes Benchmark 建立安全基线时。
  • 对控制平面和节点加固进行定期合规审计时。
  • 在应用加固变更后验证修复效果时(重新运行以确认检查项现在为 PASS)。
  • 将集群合规扫描集成到 CI/CD 或持续监控流水线中时。
  • 为 SOC 2、PCI DSS 或内部加固合规准备证据时。

前置条件

  • 对集群的访问权限:要么通过 SSH 访问控制平面/工作节点(二进制模式),要么拥有可创建 Job 的 kubectl 权限(集群内模式)。
  • 了解集群的 Kubernetes 版本(kube-bench 会自动检测,也可通过 --version / --benchmark 指定)。
  • 安装 kube-bench(Aqua Security 官方方式):
# Binary release (Linux)
KB_VERSION=0.10.7
curl -L -o kube-bench.tgz \
  "https://github.com/aquasecurity/kube-bench/releases/download/v${KB_VERSION}/kube-bench_${KB_VERSION}_linux_amd64.tar.gz"
tar -xzf kube-bench.tgz
sudo mv kube-bench /usr/local/bin/
sudo cp -R cfg /etc/kube-bench/cfg

# Via Go install
go install github.com/aquasecurity/kube-bench@latest

# Run as a one-off container directly on a node (mounts host config)
docker run --rm --pid=host \
  -v /etc:/etc:ro -v /var:/var:ro \
  -t docker.io/aquasec/kube-bench:latest run --targets node

# Verify
kube-bench version

目标

  • 针对集群 Kubernetes 版本对应的基准运行 kube-bench。
  • 扫描控制平面(master)、节点、etcd、控制平面策略以及托管服务目标。
  • 为流水线和仪表板生成机器可读的 JSON/JUnit 输出。
  • 对 FAIL 和 WARN 结果进行分类,并应用 CIS 修复指南。
  • 重新运行以验证修复项现在为 PASS。

MITRE ATT&CK 映射

技术 ID名称战术相关性
T1610Deploy ContainerExecution / Defense Evasionkube-bench 强制执行的 CIS Benchmark 加固会限制特权/主机命名空间部署、匿名 API 访问以及不安全的 kubelet 设置,而攻击者在部署恶意容器时会滥用这些配置。

工作流

1. 运行默认扫描(自动检测)

运行所有适用的目标,让 kube-bench 检测 Kubernetes 版本和基准:

sudo kube-bench
2. 作为 Kubernetes Job 运行(集群内)

应用 kube-bench 仓库中提供的 Job 清单,并从 Pod 日志中读取结果:

# General-purpose job
kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml

# Wait, then retrieve results
kubectl get pods -l app=kube-bench
kubectl logs -l app=kube-bench

# Platform-specific jobs are available, e.g. EKS:
kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job-eks.yaml
3. 针对特定组件

使用 run --targets 将扫描范围限定到特定的组件组:

# Control-plane (API server, scheduler, controller manager)
sudo kube-bench run --targets master

# Worker node (kubelet, proxy)
sudo kube-bench run --targets node

# etcd datastore
sudo kube-bench run --targets etcd

# Cluster-wide policies (RBAC, pod security, network policy)
sudo kube-bench run --targets policies

# Combine multiple targets
sudo kube-bench run --targets master,node,etcd,policies
4. 固定特定基准或 Kubernetes 版本

当自动检测有误,或你必须针对特定修订进行审计时,请显式固定基准:

# Pin to a specific CIS benchmark revision
sudo kube-bench run --benchmark cis-1.8

# Or map by Kubernetes version
sudo kube-bench --version 1.27

# Managed/distribution-specific benchmarks
sudo kube-bench run --benchmark eks-1.5.0
sudo kube-bench run --benchmark gke-1.6.0
sudo kube-bench run --benchmark rke2-cis-1.7
5. 运行或跳过单项检查

在修复周期中聚焦或排除特定的检查 ID:

# Run only specific checks
sudo kube-bench run --targets master --check 1.2.1,1.2.2

# Skip noisy/known-accepted checks
sudo kube-bench run --targets node --skip 4.2.6
6. 生成机器可读输出

输出 JSON 或 JUnit 以便注入流水线、SIEM 或仪表板,并写入文件:

# JSON to a file
sudo kube-bench run --targets master,node --json --outputfile kube-bench-report.json

# JUnit (for CI test reporting)
sudo kube-bench --junit --outputfile kube-bench-junit.xml

# AWS Security Finding Format (for Security Hub)
sudo kube-bench run --targets node --asff
7. 对 FAIL/WARN 发现进行分诊并修复

每项失败的检查都会输出修复建议。在节点/清单上应用 CIS 推荐的修复方式,例如收紧静态 Pod 清单中的 API 服务器标志:

# Example remediation for a common control-plane FAIL:
# CIS 1.2.x — ensure anonymous-auth is disabled on the API server.
# Edit the static pod manifest and set the flag:
sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
#   - --anonymous-auth=false
# The kubelet restarts the static pod automatically.

# Example node remediation — kubelet config file permissions (CIS 4.1.x):
sudo chmod 600 /etc/kubernetes/kubelet/kubelet-config.json
sudo chown root:root /etc/kubernetes/kubelet/kubelet-config.json
8. 修复后重新验证

重新运行相关目标,确认先前失败的检查现已 PASS,然后持续跟踪分数变化:

sudo kube-bench run --targets master --check 1.2.1 --json --outputfile recheck.json

# Optional: persist results to PostgreSQL for trend tracking
sudo kube-bench run --targets master,node --pgsql

工具与资源

工具 / 资源用途链接
kube-benchCIS Kubernetes Benchmark 检查器https://github.com/aquasecurity/kube-bench
kube-bench docs运行 / 平台 / 标志https://aquasecurity.github.io/kube-bench/
CIS Kubernetes Benchmark加固标准来源https://www.cisecurity.org/benchmark/kubernetes
Trivy Operator持续集群内合规 + 漏洞扫描https://github.com/aquasecurity/trivy-operator
kube-hunter补充性渗透测试工具https://github.com/aquasecurity/kube-hunter

验证标准

  • 已安装 kube-bench(kube-bench version)或将其作为 Job 运行。
  • 已针对集群 Kubernetes 版本对应的正确基准运行扫描。
  • 已分别扫描 master、node、etcd 和 policies 目标。
  • 已生成 JSON/JUnit 输出,供流水线/仪表盘摄取。
  • 已对 FAIL 和 WARN 发现进行分诊并排定优先级。
  • 已将 CIS 修复应用到控制平面清单和节点配置。
  • 重新运行后确认先前失败的检查现已 PASS。
  • 已持续跟踪结果(文件归档或 PostgreSQL)。

评论

支持 Markdown