引言
大多數安全措施都是爲了防止漏洞逃跑而設計的, 在此之前,我們也分享了一些第三方安全掃描的文章(請移步到歷史文章中查看),儘早識別應用程序的風險意味着您可以防止或限制它部署到您的系統中(安全左移策略)。有了這些知識或工具,容器中任何可能造成損壞的漏洞都可以安全地留在由您的安全策略圍欄後面。
但是,當這些漏洞已經逃跑時,我們能做什麼呢? 如何確保已經在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傑蛙DevOps
也可以添加官方微信號:JFrogjiewachina
更多技術分享可以關注2月13日在線課堂:《容器持續交付流水線最佳實踐》
課程介紹
作爲運維、工程效能、sre
你是否對開發人員代碼質量參差不齊而感到憤恨?
你是否對開發人員使用的不同開發語言而眼花繚亂?
你是否對不同技術棧的質量度量標準無從下手?
你是否曾經因爲開發一句“環境問題,和代碼無關”而莫名背鍋?
聽完這節課,教你如何度量開發人員的代碼質量
課程內容
SonarQube 是一代碼質量管理的工具,它主要用於度量源代碼的質量。可以支持多種開發語言,比如 java,C, C#, go,C++, Python, Groovy 等。幫助你發現代碼的漏洞,Bug,壞味道以及技術債務等信息。
本節課會基於SonarQube,講解運維、工程效能、Sre團隊如何自動化度量開發人員代碼質量,如何在DevOps體系中集成代碼質量掃描,提供最佳實踐及平臺建設思路,課程中也會提供實操演示環節。
本期話題
-
SonarQube介紹
-
SonarQube使用詳解
-
SonarQube最佳實踐
- 運維人員如何評估業務代碼質量
課堂活動
本期課堂講師會在結束前進行抽獎活動
第一名:小愛藍牙耳機
第二名:JFrog新版T恤
第三名:JFrog新版T恤