你的 K8s 運行時環境安全嗎?--KubeXray 幫你保護 K8s 環境及應用



引言


大多數安全措施都是爲了防止漏洞逃跑而設計的, 在此之前,我們也分享了一些第三方安全掃描的文章(請移步到歷史文章中查看),儘早識別應用程序的風險意味着您可以防止或限制它部署到您的系統中(安全左移策略)。有了這些知識或工具,容器中任何可能造成損壞的漏洞都可以安全地留在由您的安全策略圍欄後面。

 

但是,當這些漏洞已經逃跑時,我們能做什麼呢? 如何確保已經在 Kubernetes pods 中運行的容器和應用程序符合您當前的風險和策略?




背景(運行時安全管控)


由於大多數應用程序嚴重依賴於包管理器和開源存儲庫,因此它們很容易受到來自這些源的惡意或不安全代碼的***。想象我們交付的軟件 Application 是一張餅,我們自己開發的代碼僅佔其中很小一部分。



最近,當 Javascript 社區得知 npm module 中流行的事件流包被一個針對比特幣錢包平臺的惡意包更新時,他們非常憤怒。在被發現和報道之前的三個月裏,這個包被下載了近800萬次。


雖然來自社區包管理器的此類事件並不常見,但並不少見。一年前,npm 發現並刪除了39個惡意包。所以很多包在我們安全策略發現之前可能已經進入到了生產環境。



解決方案


在介紹如何對運行時進行安全控制之前,先回顧一下常見漏洞掃描工具的原理:這裏以 JFrog Xray  爲例:


通用二進制分析工具和策略引擎 JFrog Xray,會實時掃描 Artifactory 製品庫中的容器鏡像,war 包,以及 Npm module 等二進制製品,執行深度遞歸掃描,逐層檢查應用程序的所有組件,並與多個漏洞數據源(已知漏洞數據庫)進行一一對比,從而判斷是否存在已知漏洞 或 License 許可證策略問題,同時爲被掃描文件(Docker 鏡像,Npm Module)添加相關元數據。


Xray 漏洞掃描平臺分析


DevOps 管理員可以根據 Xray 掃描平臺所發現的風險級別,配置策略來限制或阻止 Kubernetes 部署這些 Docker 鏡像。但是可以發現僅僅使用 Xray,只能將漏洞限制在運行時之前。

 

爲了解決這個問題,JFrog 提供了 KubeXray 組件,這是一個開源軟件項目,它將通用二進制安全分析工具 Xray 的安全性擴展到 Kubernetes pods 運行時。使用 Xray 掃描容器映像生成的元數據,KubeXray 可以對已經部署的內容(容器鏡像等)進行安全策略管控。


KubeXray 監控所有活動 Kubernetes Pod 資源,以幫助您:

  • 捕捉當前在所有 Kubernetes 吊艙中運行的應用程序中最新報告的風險或漏洞。

  • 對正在運行的應用程序強制執行當前策略,即使您已經更改了這些策略。

  • 對未被 Xray 掃描且風險未知的正在運行的應用程序執行策略。

 

通過這種方式,KubeXray 可以幫助您將逃逸的漏洞進行安全的控制。



KubeXray 是什麼?


在 Kubernetes 將容器鏡像部署到 pods 之前,Xray 檢測風險並將策略應用於容器鏡像,KubeXray 檢測風險並將策略應用於已經運行或即將運行的 Kubernetes pod。


KubeXray 監視來自 Kubernetes 服務器和 Xray 的安全事件,併爲 Kubernetes 運行的所有 pods 執行當前的安全策略。KubeXray 監聽這些事件流:

  • 部署新服務(Pod)

  • 升級現有服務

  • 新的許可證策略,例如某個 License 許可證類型不允許在運行時使用

  • 一個新的安全問題


當檢測到問題時,KubeXray 會根據您設置的當前策略進行響應。您可以選擇以下可能的操作之一:

  • Scaledown 爲直到0。所需的服務狀態更新爲0,使其在仍然可以查詢時處於非活動狀態

  • 刪除漏洞容器鏡像的相應 Kubernetes 資源

  • 忽略它,讓 pod 繼續運行


KubeXray 還了解不同 Kubernetes 資源(狀態集和部署)之間的差異,並允許對每種資源應用不同的策略操作。

 

雖然 KubeXray 主要是將 Xray 的深度掃描安全性擴展到運行 Kubernetes pods,但它也爲未被 Xray 掃描的 pods 提供了一些策略控制,例如從存儲庫(而不是Artifactory)部署的容器映像。對於沒有經過 x 射線掃描的 pod,因此其風險是未知的,您可以指定要採取的單獨策略操作。



KubeXray 工作原理


KubeXray 監聽 Kubernetes 集羣中運行的每個 pod,並使用 Xray 元數據(何時可用以及是否可用)來確定安全策略控制。


  • 對於 Kubernetes 上的每個 pod(運行或計劃運行),KubeXray 檢查 Xray 元數據中的漏洞或 License 許可證策略問題。如果發現任何風險,KubeXray 將採取相應的控制操作。

 

  • 如果 Kubernetes pod 中的任何容器鏡像(正在運行或計劃運行)沒有被 Xray 識別——因爲它沒有被掃描,或者因爲它沒有從 Artifactory 下載——那麼 KubeXray將以未知風險來應用當前的策略集。

 

每當在 Xray 上添加或更新新策略,或報告新漏洞時,KubeXray 都會檢測到此更改,並檢查現有 pod 是否存在問題。如果發現任何風險,KubeXray 將立即根據當前安全策略進行安全控制。 

 

如下圖所式: 顯示對漏洞 pod 的每個策略操作過程(忽略/刪除/縮容)。



上面提到:KubeXray 根據發現的風險和 DevOps 管理員配置的策略應用策略操作。


策略操作是在一個 values.yaml 文件中設置。您可以爲以下條件配置策略操作(縮容、刪除或忽略):

  •  未掃描——未被 Xray 掃描 deployments,您還可以指定命名空間的白名單;使用這些命名空間的 deployments 將不應用安全策略操作。

  • 安全性——由於漏洞而存在安全問題的 deployments。

  • License 許可證——許可證不符合策略的 deployments。

 

上述每種條件都爲 Deployments 和 StatefulSets 提供了單獨的策略操作設置。



KubeXray安裝使用


KubeXray 工具是一個開源軟件項目,可以在 Github 存儲庫中找到並安裝它(https://github.com/jfrog/kubexray)。


要使用 KubeXray,您必須具備:

  • 一個已獲授權及正在運行 Artifactory 服務

  • 一個已獲授權及正在運行 Xray 服務

  • 一個正在運行的 Kubernetes 集羣

  • 客戶端 Kubectl

  • Helm 客戶端以及 Helm 服務端配置(Tiler) 


快速安裝 KubeXray:

JFrog Helm 倉庫中提供的一個 Helm Chart,可以快速安裝或升級 JFrog KubeXray 到正在運行的 Kubernetes 集羣。要自定義 KubeXray 的配置,請參閱 Github Readme 文檔。

 

安裝 KubeXray 後,可以在 values.yaml 中設置前文提到的策略操作。讓 JFrog KubeXray 監視您的 Kubernetes pod,控制 Kubernetes 集羣運行時存在的安全漏洞或 License 許可證問題。



總結


常見的第三方漏洞安全監管工具一般只在控制運行時之前進行安全控制,在運行時未能做到相應的監管控制,KubeXray 可以幫助我們快速對運行時資源進行安全管控,並且其作爲一個開源軟件項目,我們期待着繼續增強 KubeXray 以獲得更健壯的操作和特性,並歡迎開發人員在社區提出改進意見和提交代碼。

 



擴展閱讀

  • JFrog Xray 第三方安全管家(歷史文章)

  • JFrog Artifactory 試用地址:http://www.jfrogchina.com/artifactory/free-trial/

  • JFrog Xray 試用地址:http://www.jfrogchina.com/artifactory/free-trial/





文章作者:劉永強


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章