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