
k8sクラスター向けのオープンソースランタイムスキャナーで、CIS Kubernetes Benchmark仕様に基づいてセキュリティ監査チェックを実行します
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 を k8s クラスター内の Pod として実行します。
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 環境でコンパイルする必要があります。