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