確保Kubernetes在大規(guī)模環(huán)境下安全的3個(gè)要點(diǎn)
譯文【51CTO.com快譯】Kubernetes容器在多云環(huán)境中非常流行,廣泛部署于諸多行業(yè)。Sumo Logic產(chǎn)品營(yíng)銷副總裁Kalyan Ramanathan去年寫道,這種開源容器操作系統(tǒng)“徹底重塑了現(xiàn)代應(yīng)用堆棧的未來。”
但采用范圍擴(kuò)大后帶來了安全隱患,2019年爆出的一系列安全漏洞就是佐證。第一個(gè)漏洞發(fā)現(xiàn)于2018年底,該權(quán)限提升漏洞使任何用戶都可以通過Kubernetes應(yīng)用編程接口服務(wù)器與后端服務(wù)器建立連接。
Platform9的產(chǎn)品營(yíng)銷負(fù)責(zé)人Kamesh Pemmaraju說,使用的集群和節(jié)點(diǎn)的數(shù)量在增加;一些受訪者告訴Platform9,他們公司在一兩個(gè)集群上運(yùn)行數(shù)百個(gè)節(jié)點(diǎn)。許多公司在本地和公共云基礎(chǔ)設(shè)施上都運(yùn)行Kubernetes。
NeuVector的首席技術(shù)官Gary Duan和Platform9的聯(lián)合創(chuàng)始人兼首席技術(shù)官Roopak Parikh談到了大規(guī)模利用Kubernetes安全功能的三種方法。
Duan說:“Kubernetes有一些基本的安全功能,主要針對(duì)其自身基礎(chǔ)架構(gòu)的安全,這包括基于角色的訪問控制(RBAC)、秘密管理以及pod安全策略(更側(cè)重于資源管理)。”
“然而,Kubernetes不應(yīng)部署在關(guān)鍵業(yè)務(wù)環(huán)境中,也不能為沒有專用容器安全工具的情況下管理敏感數(shù)據(jù)的應(yīng)用程序而部署。Kubernetes系統(tǒng)的容器本身(比如關(guān)鍵的API服務(wù)器)可能存在漏洞,使攻擊者能夠危及編排基礎(chǔ)架構(gòu)本身。”
1. 基于角色的訪問控制
生產(chǎn)級(jí)應(yīng)用軟件比去年多得多,部署在Kubernetes上的數(shù)據(jù)或其他應(yīng)用程序也多得多。公司應(yīng)將Kubernetes視為復(fù)雜的分布式系統(tǒng),由多個(gè)組件組成,部署到生產(chǎn)環(huán)境后需要對(duì)每層加以保護(hù)。
在應(yīng)用程序?qū)?,?qiáng)烈建議實(shí)施網(wǎng)絡(luò)策略,并將Kubernetes集群連接到企業(yè)內(nèi)部的驗(yàn)證提供者。你往往可以保護(hù)所有系統(tǒng)的安全,但保護(hù)密鑰也很重要,并使用多因子驗(yàn)證和證書,確保別人無法通過那些很容易的途徑潛入。
Kubernetes操作人員應(yīng)確保用戶有正確的角色,并將用戶分配到不同的空間,以便特定用戶與特定應(yīng)用關(guān)聯(lián)起來。系統(tǒng)部署和升級(jí)時(shí),那些角色還具有可擴(kuò)展性。
集群中的每個(gè)應(yīng)用程序應(yīng)隔離或分隔,以便負(fù)責(zé)人可以決定哪些用戶能看到系統(tǒng)的不同部分。
分層安全方法最適合深度防御。應(yīng)該部署云原生安全工具以保護(hù)從CI/CD管道到運(yùn)行時(shí)環(huán)境的整個(gè)生命周期,因?yàn)閭鹘y(tǒng)的安全工具在Kubernetes環(huán)境中不管用。
這始于構(gòu)建過程中的漏洞掃描,然后持續(xù)進(jìn)入到生產(chǎn)環(huán)節(jié)。若沒有深度網(wǎng)絡(luò)可見性和保護(hù),比如第7層容器防火墻,就無法實(shí)現(xiàn)真正的深度防御。這種關(guān)注容器的防火墻能夠使用容器微分段技術(shù)檢測(cè)和防止基于網(wǎng)絡(luò)的攻擊、探測(cè)、掃描、分流以及容器之間的橫向移動(dòng)。公司擴(kuò)大部署規(guī)模后,面臨管理和保護(hù)數(shù)十個(gè)乃至數(shù)百個(gè)Kubernetes集群(一些橫跨公共云和私有云)的管理難題。
采用集中執(zhí)行的聯(lián)合全局安全策略的全局多集群管理成了一個(gè)關(guān)鍵問題。
在Kubernetes之上添加Istio或Linkerd之類的服務(wù)網(wǎng)格還可以通過加密pod到pod通信來提高安全性。服務(wù)網(wǎng)格還有DevOps團(tuán)隊(duì)喜歡的其他好處。但這為基礎(chǔ)架構(gòu)帶來了額外的攻擊途徑,必須確保安全。
2. 不安全的代碼檢查
監(jiān)控代碼對(duì)于大規(guī)模確保Kubernetes的安全至關(guān)重要。如果貴公司在運(yùn)行第三方應(yīng)用程序甚至內(nèi)部應(yīng)用程序,如何知道其中的代碼是否安全?系統(tǒng)操作員應(yīng)問自己在運(yùn)行哪個(gè)版本、存在哪種類型的安全漏洞。
需要進(jìn)行掃描,以查明是否存在不安全的代碼,或者是否在使用舊版本的Python庫。外頭一些工具可以幫助你找到那些細(xì)節(jié),并出具報(bào)告。你可以在此基礎(chǔ)上拒絕或允許運(yùn)行那些應(yīng)用程序。
許多公司能夠?qū)踩呗月暶鳛榇a,所部署的新服務(wù)的應(yīng)用程序行為記錄在標(biāo)準(zhǔn)的yaml文件中,由Kubernetes直接部署為自定義資源定義。安全團(tuán)隊(duì)還要確保所有補(bǔ)丁都是最新的。
對(duì)于你在運(yùn)行的服務(wù)器和操作系統(tǒng),要確保已打上補(bǔ)丁,不存在與操作系統(tǒng)本身有關(guān)的任何漏洞。你可以使用App Armor等技術(shù),或者確保為在Kubernetes內(nèi)外運(yùn)行的組件賦予最低權(quán)限。
3. 檢查敞開的端口
這點(diǎn)很重要:在整條管道中明確定義應(yīng)自動(dòng)確保安全的所有集成點(diǎn),然后為完整的安全自動(dòng)化制定路線圖。最初,幾個(gè)步驟可以自動(dòng)化,比如觸發(fā)漏洞掃描、就可疑網(wǎng)絡(luò)活動(dòng)發(fā)出警報(bào)。
安全團(tuán)隊(duì)需要保護(hù)可以使用負(fù)載均衡器連接至外界的應(yīng)用程序,或可能在你的Kubernetes集群上打開的端口。團(tuán)隊(duì)需要檢查它們配置是否正確、是否敞開端口。
對(duì)于面向外界的API服務(wù)器而言,這尤為重要。
有人發(fā)現(xiàn)某個(gè)系統(tǒng)被其他公司暴露在互聯(lián)網(wǎng)面前,我們?cè)谌罩局袝?huì)看到一些人試圖探測(cè)服務(wù)器,以查明那些端口是不是打開的。Kubernetes本身有一個(gè)API服務(wù)器,過去我們見過敞開的端口。
你是否在保護(hù)主機(jī)策略,以確保正確的防火墻在運(yùn)行?如果你在公共云中運(yùn)行,要確保使用合適的安全組,只允許執(zhí)行你需要執(zhí)行的實(shí)際操作。還要確保Kubernetes組件有合適類型的驗(yàn)證或授權(quán)機(jī)制,以便只有部分用戶能夠登錄。
原文標(biāo)題:3 tips to keep Kubernetes safe at scale,作者:Jonathan Greig
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】