對于任何成功的Kubernetes策略來說,集群安全是至關(guān)重要的部分。近期,一份由AimPoint發(fā)布的調(diào)查報(bào)告顯示,44%的受訪者表示由于Kubernetes容器的安全問題,推遲了應(yīng)用程序進(jìn)入生產(chǎn)環(huán)境。
然而,Kubernetes安全是一臺復(fù)雜的機(jī)器,其中包含許多活動部件、集成件以及旋鈕和杠桿。這會使本來就充滿挑戰(zhàn)的安全工作變得更加困難。
業(yè)界應(yīng)用最為廣泛的Kubernetes管理平臺創(chuàng)建者Rancher Labs一直在為用戶尋找各種高效的方式,因此我們十分高興在Rancher 2.4中推出了CIS安全掃描功能。這項(xiàng)Rancher托管集群的新功能可以讓你針對互聯(lián)網(wǎng)安全中心發(fā)布的100多個(gè)CIS基準(zhǔn)運(yùn)行RKE集群的ad-hoc安全掃描以及定期的掃描。使用CIS安全掃描,你可以創(chuàng)建自定義測試配置并生成包含通過/失敗信息的報(bào)告。根據(jù)報(bào)告內(nèi)容,你可以采取各種措施以確保你的集群滿足所有安全要求。
CIS基準(zhǔn)已經(jīng)被廣泛接受為保障Kubernetes集群安全的事實(shí)標(biāo)準(zhǔn)。它提供了行業(yè)認(rèn)可的指標(biāo),該指標(biāo)可以用來衡量Kubernetes集群的安全狀況。它將信息安全社區(qū)領(lǐng)域的知識與Kubernetes中的API、交互和總體控制路徑的深刻理解相結(jié)合。當(dāng)工程師試圖了解他們保護(hù)集群所需的所有位置時(shí),他們可以從基準(zhǔn)中了解到數(shù)十種攻擊的可能性以及如何緩解它們。
為什么IT Ops需要CIS安全掃描?
根據(jù)CIS基準(zhǔn)手動評估集群是一個(gè)十分耗時(shí)且容易失敗的過程。而現(xiàn)實(shí)中,我們的系統(tǒng)不斷變化,因此我們需要經(jīng)常進(jìn)行重新評估。這就是kube-bench大展身手之處。這是Aqua創(chuàng)建的一種開源工具,用于根據(jù)CIS Benchmark自動評估集群。
Rancher 2.4使用kube-bench作為安全引擎,并且對其進(jìn)行了一些補(bǔ)充。借助Rancher 2.4中的CIS安全掃描,你可以一鍵編排集群掃描。Rancher負(fù)責(zé)獲取kube-bench工具并將其連接到集群。然后,Rancher將從所有節(jié)點(diǎn)的結(jié)果中總結(jié)出一個(gè)易于閱讀的報(bào)告,該報(bào)告會展示集群通過或失敗的區(qū)域。此外,Rancher還能讓你在集群級別安排周期掃描。該設(shè)置可以在集群模板級別啟用,并在默認(rèn)情況下,允許管理員為計(jì)劃的掃描配置模板,以便針對Rancher設(shè)置中任何用戶創(chuàng)建的每個(gè)新集群運(yùn)行掃描。最后,Rancher為CIS安全掃描提供自定義告警和通知,以通知安全管理員配置漂移或集群掃描失敗。
在Rancher 2.4中動手實(shí)踐CIS集群
讓我們啟動一個(gè)Rancher RKE集群。
前期準(zhǔn)備:centos VM(至少2核),并安裝好Docker
Step1:運(yùn)行Rancher Server
[root@rancher-rke ~]# sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.4.0-rc3
Unable to find image 'rancher/rancher:v2.4.0-rc3' locally
Trying to pull repository docker.io/rancher/rancher ...
v2.4.0-rc3: Pulling from docker.io/rancher/rancher
423ae2b273f4: Pull complete
de83a2304fa1: Pull complete
f9a83bce3af0: Pull complete
b6b53be908de: Pull complete
b365c90117f7: Pull complete
c939267bea55: Pull complete
7669306d1ae0: Pull complete
25e0f5e123a3: Pull complete
d6664495480f: Pull complete
99f55ceed479: Pull complete
edd7d0bc05aa: Pull complete
77e4b172baa4: Pull complete
48f474afa2cd: Pull complete
2270fe22f735: Pull complete
44c4786f7637: Pull complete
45e3db8be413: Pull complete
6be735114771: Pull complete
dfa5473bfef3: Pull complete
Digest: sha256:496bd1d204744099d70f191e86d6a35a5827f86501322b55f11c686206010b51
Status: Downloaded newer image for docker.io/rancher/rancher:v2.4.0-rc3
a145d93e8fa66a6a08b4f0e936dafc4b9717a93c59013e78118a4c5af8209a53
[root@rancher-rke ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a145d93e8fa6 rancher/rancher:v2.4.0-rc3 "entrypoint.sh" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp distracted_albattani
Step2:訪問Rancher URL并安裝RKEhttp://{hostIP}
設(shè)置密碼和URL
設(shè)置Rancher密碼和URL作為host IP
添加一個(gè)新集群并選擇From existing nodes (Custom)(從現(xiàn)有節(jié)點(diǎn)添加)
選擇默認(rèn)選項(xiàng)并選擇etcd、控制平面和worker,因?yàn)槲覀儗⒃谝粋€(gè)VM上安裝這一切。
復(fù)制以上命令并運(yùn)行在VM實(shí)例上
[root@rancher-rke ~]# **sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.4.0-rc3 --server https://185.136.233.195 --token** hwpf4kpjf49gk9wq5xvw7gdjxtj257j8wmnn5rj6lb98csz2zmkcgq --ca-checksum 3f9640ab12533287fd5e0ad1663cccf354a4ce2a76243cd6735abcfb085bdbf2 --etcd --controlplane --worker
Unable to find image 'rancher/rancher-agent:v2.4.0-rc3' locally
Trying to pull repository docker.io/rancher/rancher-agent ...
v2.4.0-rc3: Pulling from docker.io/rancher/rancher-agent
423ae2b273f4: Already exists
de83a2304fa1: Already exists
f9a83bce3af0: Already exists
b6b53be908de: Already exists
931af2228ddf: Pull complete
94b51e50d654: Pull complete
7e7961efe32b: Pull complete
85725dc92c8d: Pull complete
5a82c6e509a6: Pull complete
3b675e73aee3: Pull complete
Digest: sha256:89017bd846a8cc597186f41eb17cfe1520aa0f7e6d86b48d8c32a5490c588f1e
Status: Downloaded newer image for docker.io/rancher/rancher-agent:v2.4.0-rc3
5aaa9fab48db4557c84b7ce0c61816384075570ed3e593446795bf8443610b64
在Rancher UI中導(dǎo)入集群,我們可以看到集群的狀態(tài)為active:
現(xiàn)在點(diǎn)擊集群,并從【工具】菜單欄中,選擇CIS安全掃描。
當(dāng)前CIS安全掃描僅針對RKE集群,有兩個(gè)掃描配置文件:寬松(Permissive)和嚴(yán)格(Hardened)。
- Permissive(寬松):該配置文件具有一組將被跳過的測試,因?yàn)樗鼈儗τ趧傞_始使用Kubernetes的用戶來說沒有必要。
- Hardened(嚴(yán)格):此配置文件不會跳過任何測試。該配置針對高階用戶以及安全專家。
對于每種配置類型,其中一些測試會被標(biāo)記為不適用,因?yàn)樗鼈儾贿m用于RKE集群。
現(xiàn)在我們選擇“寬松”配置文件并運(yùn)行掃描。結(jié)果是所有標(biāo)準(zhǔn)RKE集群都通過。
為了看到更多關(guān)于測試執(zhí)行的細(xì)節(jié),點(diǎn)擊該測試,然后就能顯示整個(gè)測試列表,包含失敗/跳過/通過的信息。
現(xiàn)在,我們使用“嚴(yán)格”配置文件來執(zhí)行相同的測試,我們將會看到上次跳過的測試失敗。
如你所見,根據(jù)CIS基準(zhǔn)測試,失敗的結(jié)果提供了描述以及補(bǔ)救步驟。這十分有效,因?yàn)槟悴粌H可以根據(jù)CIS基準(zhǔn)了解集群中哪些東西會崩潰,而且還可以根據(jù)建議來修復(fù)集群。
加強(qiáng)集群安全性的后續(xù)步驟
盡管一鍵單擊就能運(yùn)行CIS安全掃描,但是能夠自動化執(zhí)行則更好。也可以在Rancher中進(jìn)行配置。定期進(jìn)行安全掃描可以讓你高枕無憂,也是團(tuán)隊(duì)的一針定心劑。如果集群中的確出現(xiàn)了某些不合規(guī)的情況,你也能夠更快找到它。
現(xiàn)在,如果集群中出現(xiàn)某些不合規(guī)的情況怎么辦?解決方案很簡單:查看Rancher安全加固指南(https://rancher2.docs.rancher.cn/docs/security/hardening-2.3.5/_index)。本指南提供了特定于Rancher的步驟,以使你的集群符合每個(gè)CIS檢查的要求。Rancher世界一流的支持團(tuán)隊(duì)也精通于解決此類問題,十分歡迎你購買我們的訂閱服務(wù),詳情請?zhí)砑有≈郑ㄎ⑿盘枺簉ancher3)咨詢。