K8s安全配置:CIS基準(zhǔn)與kube-bench工具
01、概述
K8s集群往往會因為配置不當(dāng)導(dǎo)致存在入侵風(fēng)險,如K8S組件的未授權(quán)訪問、容器逃逸和橫向攻擊等。為了保護K8s集群的安全,我們必須仔細(xì)檢查安全配置。
CIS Kubernetes基準(zhǔn)提供了集群安全配置的最佳實踐,主要聚焦在兩個方面:主節(jié)點安全配置和工作節(jié)點安全配置。主節(jié)點安全配置涵蓋了控制平面節(jié)點配置文件、APIServer、Controller Manager、Scheduler、etcd等關(guān)鍵組件,而工作節(jié)點安全配置則專注于Kubelet和相關(guān)配置文件。通過遵循CIS Kubernetes基準(zhǔn),確保集群安全,降低入侵風(fēng)險,保護敏感數(shù)據(jù)和業(yè)務(wù)連續(xù)性。
CIS Kubernetes基準(zhǔn)包含了一百多個檢查項,手動逐項檢測效率較低,因此我們需要相應(yīng)的工具來簡化這個過程。kube-bench是一個主要用于檢查Kubernetes集群是否符合CIS Kubernetes基準(zhǔn)中列出的安全配置建議的工具。它能夠自動化地進行檢查,幫助我們快速發(fā)現(xiàn)并解決潛在的安全問題,提高集群的安全性和符合性。這樣,我們可以更高效地確保Kubernetes集群的安全可靠。
02、Kube-bench部署使用
(1)安裝部署
Ubuntu下,最簡單的方式就是使用dpkg命令安裝軟件包。
wget https://github.com/aquasecurity/kube-bench/releases/download/v0.6.17/kube-bench_0.6.17_linux_amd64.deb
dpkg -i kube-bench_0.6.17_linux_amd64.deb
(2)安全檢測
檢測master組件:
kube-bench run --targets=master --benchmark=cis-1.24
圖片
03、自定義檢測規(guī)則
(1)kube-bench的規(guī)則文件是用YAML文件配置,提供了自定義檢測規(guī)則的能力。例如,我們可以通過編寫CIS自定義規(guī)則文件,用于檢查集群中是否有容器在特權(quán)模式下運行。
root@master01:/etc/kube-bench/cfg/cis-1.24# vi controlplane.yaml
- id: 3.2.3
text: "Ensure that the container does not use privileged mode (Manual)"
audit: "if test -z $(kubectl get pods --all-namespaces -o jsnotallow='{.items[*].spec.containers[?(@.securityContext.privileged==true)].name}'|sed 's/calico-node//g'|sed 's/kube-proxy//g');then echo ok;else echo err;fi;"
tests:
test_items:
- flag: "ok"
remediation: "If you do not need to use a container in privileged mode, turn off privileged mode"
scored: true
(2)使用特權(quán)模式運行pod,添加privileged參數(shù)為true。
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod1
name: pod1
spec:
containers:
- image: busybox
name: pod1
command: ['/bin/sh','-c','sleep 24h']
securityContext:
privileged: true
(3)使用kube-bench檢測,存在特權(quán)容器,檢測狀態(tài)為FAIL。
圖片
刪除對應(yīng)的特權(quán)容器,再次檢測,檢測狀態(tài)為PASS。