1. 程式人生 > >你的 K8s 執行時環境安全嗎?--KubeXray 幫你保護 K8s 環境及應用

你的 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/





文章作者:劉永強