Kube-Beacon 是一个开源审计扫描器,它对已部署的 Kubernetes 集群执行审计检查,并输出安全报告。
审计测试完全实现了 CIS Kubernetes 基准规范
新增!!审计结果现在可以通过用户插件(使用 Go 插件)作为 webhook 使用

git clone https://github.com/chen-keinan/kube-beacon
cd kube-beacon
make build
执行 kube-beacon 不带任何标志,执行所有测试
./kube-beacon
执行 kube-beacon 带标志,按需执行测试
Usage: kube-Beacon [--version] [--help] <command> [<args>]
Available commands are:
-r , --report : 运行审计测试并生成失败报告
-i , --include: 仅执行特定审计测试,例如 -i=1.2.3,1.4.5
-e , --exclude: 忽略特定审计测试,例如 -e=1.2.3,1.4.5
-n , --node: 在特定节点上执行审计测试,例如 -n=master,-n=worker
-s , --spec: 执行特定审计测试规范,例如 -s=gke,默认=k8s
-v , --version: 执行特定审计测试规范版本,例如 -v=1.1.0,默认=1.6.0
执行测试并生成失败测试报告
./kube-beacon -r
将 kube-beacon 作为 Pod 在 K8s 集群中执行
添加集群角色绑定,角色为 cluster-admin
kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=default:default
cd jobs
kubectl apply -f k8s.yaml
kubectl apply -f gke.yaml
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default kube-beacon-sc8g9 0/1 Completed 0 111s
kube-system event-exporter-gke-8489df9489-skcvv 2/2 Running 0 7m24s
kube-system fluentd-gke-7d5sl 2/2 Running 0 7m6s
kube-system fluentd-gke-f6q5d 2/2 Running 0 6m59s
kubectl logs kube-beacon-sc8g9
kubectl delete clusterrolebinding default-admin
kubectl delete -f k8s.yaml
Kube-Beacon 为用户插件暴露钩子 示例:
go build -buildmode=plugin -o=~/<plugin folder>/bench_plugin.so /<plugin folder>/bench_plugin.go
cp /<plugin folder>/bench_plugin.so ~/.beacon/plugins/compile/bench_plugin.so
注意:插件和二进制文件必须在相同的 Linux 环境下编译