ChartCenter ——為您的K8s之旅保駕護航

JFrog傑蛙科技發表於2020-09-11

一、背景

Kubernetes(k8s)是一個基於容器技術的分散式架構領先方案,為容器化應用提供部署執行、資源排程、服務發現和動態伸縮等一系列完整功能,提高了大規模容器叢集管理的便捷性。近些年來,Kubernetes迅速成為了容器編排的事實上的開源標準,能夠實現應用程式部署流程的標準化和重用,提高了開發人員的生產力,並加快了雲原生應用程式的採用。

當然,隨著Kubernetes應用的複雜度越來越高,大家也需要新的工具來支援快速可靠的容器應用叢集的配置、部署與管理工作。Helm就是這樣的工具,也是CNCF官方推薦的專案,它為開發人員提供了將應用程式打包為Helm Chart的能力。透過一個命令或單擊幾下滑鼠,使用者就可以基於Helm Chart為開發測試或生產環境安裝Kubernetes應用程式。大多數流行的CI/CD工具集都可以透過Helm Chart獲得。

在我們之前的文章《重大福利,JFrog釋出面向社群的免費安全的HelmChart中央儲存庫ChartCenter》中,我們介紹了JFrog釋出的ChartCenter(),這是一個面向社群以及開發人員的免費的公共 Helm Charts中央儲存庫。 除了提供Helm Charts的公共服務之外,ChartCenter還能夠向使用者展示每個Helm Chart部署的容器映象中存在哪些已知的安全漏洞,從而揭示這些公共Chart中隱藏的風險,並提供減輕這些風險的建議。

二、 Kubernetes 應用中的安全漏洞

K8s應用作為一個整體,對外提供統一的服務,而Helm Chart為容器化叢集提供了一個整體的封裝,包含了其所有的容器映象、部署配置等等內容。通常,K8s應用的Helm Chart都引用了多個Docker映象,即包括應用本身,也可以是應用執行所需的init容器和sidecar容器。而每一個映象,其包含的映象層或依賴映象,都可能引入安全風險。如下圖所示:

在美國國家漏洞資料庫(NVD)中,透過公共常見漏洞和暴露(CVE)列表展示了很多容器映象中發現的安全漏洞。隨著容器和K8s的廣泛引用,我們發現,容器相關的漏洞和風險不但沒有下降,在NVD上註冊的CVE的數量和嚴重性反而急劇地增加,如下圖所示:

(圖片來源:美國國家標準技術研究院)

如何才能知道你的Kubernetes應用及Helm Chart中包含了哪些映象,以及這些映象是否包含已知的安全漏洞?ChartCenter為您提供了便捷的方法。

三、 ChartCenter 展示 CVE

JFrog的ChartCenter為社群提供了一個便利的途徑,可以透過UI在眾多公共儲存庫提供的數千個Helm Chart中進行搜尋。但是,ChartCenter不僅僅是這些Chart的目錄,而是由Artifactory提供支援,是一個包含了不可變版本的Helm Chart的儲存庫。使用者的Helm CLI可以從這個免費的單一可信源中獲取所需的公共Helm Chart。

除了提供不可變版本的Helm Chart,ChartCenter還基於JFrog Xray提供的深度遞迴安全掃描能力,對Helm Chart依賴的所有容器映象進行漏洞分析,並在UI中顯示了與這些映象相關的CVE。這樣,使用者在使用和部署任何K8s應用之前,都可以輕鬆瞭解並評估其安全風險。

ChartCenter預設顯示中、低和未知嚴重性的漏洞詳細資訊,而由維護人員控制為社群提供的高危嚴重性漏洞資訊的詳細程度。

四、減輕風險說明

雖然讓使用者知道其K8s應用中存在安全漏洞是件好事,但這還不是全部,大家還希望能夠了解如何減輕這些風險。比如,可以透過引用另一個元件來減輕某一依賴項的安全風險;可以透過建議的配置來消除危險;也可能您的應用並沒有使用到易受攻擊的功能,因此發現的風險並不是一個真正的威脅。

我們相信,在ChartCenter公開您的Helm Chart,也意味著您也可以公開發表自己的看法。因此,JFrog為Helm Chart的安全減輕說明提出了新規範,並邀請大家來提供內容。

為鼓勵大家的參與,在Helm Chart的維護者將至少一個高危級別CVE的減輕說明提交給ChartCenter之前,ChartCenter不會顯示該Chart的高危級別的安全漏洞。

這使得Helm Chart的作者可以在Chart加上有關CVE的註釋,從而使得使用者知道是否以及何時需要關注這些漏洞,或者是否可以減輕相關的風險。它可以幫助維護者在分析CVE時說“是,但是。。。”,並與Chart的使用者進行相應的交流。

五、如何註釋 Helm Charts

為了提供安全減輕說明,ChartCenter裡的Helm Charts包含了一個security-mitigation.yaml檔案,該檔案可以包含以下任何或所有資訊:

·          Chart使用者的總體(摘要)減輕資訊

·          每個CVE,每個受影響的元件和版本的減輕資訊

·          在Wiki或網頁上外部託管的減輕資訊的網站URL

·          外部託管的減輕檔案的URL

例如,以下的security-mitigation.yaml檔案為Helm Chart rimusz/security-sample-chart提供了摘要和單獨的CVE減輕資訊:



schemaVersion: v1
summary: Security mitigation information for this application is tracked by the security-mitigation.yaml file that's part of this Helm chart.

mitigations:

  - cves:

      - CVE-2019-1010022

    affectedPackageUri: helm://rimusz/security-sample-chart

    affectedVersions: <= 0.1.5

    description: This security mitigation information for CVE-2019-10100 applies to the specified affectedVersions of charts.

  - cves:

      - CVE-2019-11888

    affectedPackageUri: docker://docker.io/rimusz/security-sample-app

    affectedVersions: <= 0.1.1

    description: This CVE is applicable for applications running on Windows. This application currently doesn't support Windows OS, hence this CVE does not impact our users.

當您向ChartCenter提供漏洞減輕註釋檔案時,至少要引用一個高危級別的CVE。該檔案將包含在ChartCenter中,並將高危級別CVE的資訊提供給Chart的使用者。

該檔案由ChartCenter處理,所關聯的CVE將顯示相應的減輕說明,如下圖:

單擊圖示,可以顯示全部的說明,如下圖:

六、總結

ChartCenter不但為廣大的K8s使用者提供了集中的不可變版本Helm Chart的儲存、查詢和使用能力,還能夠展示Chart中依賴的容器映象所包含的已知安全漏洞。除此之外,ChartCenter提供的風險減輕說明機制,也為Helm Charts的維護者和使用者提供了很好的途徑,來更好地描述和了解如何減輕Helm Charts的安全風險。

目前,該減輕說明系統還是一個提議,根據社群的反饋,仍會持續修訂。有關更多技術細節,請參考我們在GitHub上的規範( https://github.com/jfrog/chartcenter/blob/master/docs/securitymitigationspec.md )。

同時,我們也邀請您嘗試透過security-mitigation.yaml來維護您的公共Helm Charts,並提出寶貴意見。 提供反饋。


 

歡迎觀看JFrog傑蛙每週二線上課堂,點選報名:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2718863/,如需轉載,請註明出處,否則將追究法律責任。

相關文章