今日覚えて帰ること
kube-benchコマンド
kube-bench run
対象となるコンポーネントをスキャンするコマンド。
サブコマンドは多分これだけ覚えておけばOK。
後はいくつかオプションを覚える。
kube-bench run –target <target name>
どっかのディレクトリにあるcfg/<version>配下にあるmaster.yamlとかetcd.yamlの拡張子を除外したものを<target name>として指定すれば、そのリソースだけを選んで実行できる。
このオプションを使わない場合は対象となるすべてのリソースで実行する。
kube-bench run –check <chechItem name>
CIS ベンチマークドキュメントに記載されているチェック項目の中から、特定の項目だけを選んで実行できる。
複数実行したい場合はコンマで区切る。
Apiserver should be more conform to CIS
Use
kube-bench
to ensure 1.2.20 has status PASS.
「tan1°は有理数か」を彷彿とさせるほどシンプルな問題文。
Kube-benchを使って1.2.20というチェック項目を通せ、と言っています。
そもそもKube-benchが何かあまりわからないので調べてみます。
kube-bench
クラスター内のセキュリティリスクや設定問題を特定して修復方法を教えてくれるオープンソースツール。
何をやっとるのかというと、CIS Benchmarkに記載されているチェックを実行してくれるとのこと。
AquaSecurity社が開発しているらしい。
下の記事にも書いてるように、AWSのSecurityHubとも連携できるみたい。
便利そう。
CIS Benchmarkもよくわからんので調べてみる。
CIS Benchmark
CIS Benchmarks は、セキュリティ担当者がサイバーセキュリティ防御を実装および管理するのに役立つ、世界的に認められたコンセンサス主導の一連のベストプラクティスです。
CIS(Center of Internet Security)はインターネット・セキュリティ標準化に取り組む目的で2000年に設立された米国の団体のこと。
だから CIS Benchmarks は標準化団体が作ったセキュリティの指針って感じみたいやね。
ちらっと見たけどCSPとかLinuxディストリビューションとかそれぞれ個別に項目作ってて、その中の1つにKubernetesもあった。
kube-benchはそれを利用してるってことなんやろうな。
じゃあやってみよう。
1.2.20だけ対象にする。
controlplane $ kube-bench run --check 1.2.20
[INFO] 1 Master Node Security Configuration
[INFO] 1.2 API Server
[FAIL] 1.2.20 Ensure that the --profiling argument is set to false (Automated)
== Remediations master ==
1.2.20 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the master node and set the below parameter.
--profiling=false
== Summary master ==
0 checks PASS
1 checks FAIL
0 checks WARN
0 checks INFO
[INFO] 2 Etcd Node Configuration
== Summary etcd ==
0 checks PASS
0 checks FAIL
0 checks WARN
0 checks INFO
[INFO] 3 Control Plane Configuration
== Summary controlplane ==
0 checks PASS
0 checks FAIL
0 checks WARN
0 checks INFO
[INFO] 4 Worker Node Security Configuration
== Summary node ==
0 checks PASS
0 checks FAIL
0 checks WARN
0 checks INFO
[INFO] 5 Kubernetes Policies
== Summary policies ==
0 checks PASS
0 checks FAIL
0 checks WARN
0 checks INFO
== Summary total ==
0 checks PASS
1 checks FAIL
0 checks WARN
0 checks INFO
controlplane $
masterNodeでチェックが通っていないと上のあたりに書いています。
controlplane $ kube-bench run --check 1.2.20
[INFO] 1 Master Node Security Configuration
[INFO] 1.2 API Server
[FAIL] 1.2.20 Ensure that the --profiling argument is set to false (Automated)
== Remediations master ==
1.2.20 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the master node and set the below parameter.
--profiling=false
Remediations (修復手順) まで丁寧に書いてくれています。
この通りにやればOKです。