前言
Rainbond 是一個雲原生應用管理平臺,使用簡單,不需要懂容器、Kubernetes和底層複雜技術,支援管理多個Kubernetes叢集,和管理企業應用全生命週期。但是隨著雲原生時代的一點點進步,層出不窮的網路容器安全事件的出現,也是讓大家對於容器安全,網路安全的重要性,有了更進一步的想法,Rainbond 為了保證使用者在使用的過程中不出現類似的容器安全事件,特別適配整合了 NeuVector。
NeuVector 是業界首個端到端的開源容器安全平臺,為容器化工作負載提供企業級零信任安全的解決方案。NeuVector 可以提供實時深入的容器網路視覺化、東西向容器網路監控、主動隔離和保護、容器主機安全以及容器內部安全,容器管理平臺無縫整合並且實現應用級容器安全的自動化,適用於各種雲環境、跨雲或者本地部署等容器生產環境。
本文主要表述,基於 Rainbond 安裝部署 NeuVector 容器安全平臺的步驟,以及配合 Rainbond 實現生產環境中的最佳實踐。
部署 NeuVector
NeuVector 有多種部署安裝形式,為了更加簡化安裝,選用 helm 的形式進行安裝,Rainbond 也是支援 helm 商店的形式,只需要在應用市場,新增一個新的商店,把 helm商店的URL 填寫上即可。
準備工作
建立團隊
NeuVector 通常是安裝在 neuvector 名稱空間裡面的,而在 Rainbond ,團隊的概念則是對應 kubernetes 裡名稱空間,所以通過 helm 安裝的時候,首先需要建立出來對應的團隊,團隊的英文名對應的則是該團隊在叢集中的名稱空間,此處填寫 neuvector,選擇對應叢集即可。
<img src="https://static.goodrain.com/wechat/neuvector/1.png" style="zoom: 50%;" />
對接 helm 商店
Rainbond支援基於helm直接部署應用,所以接下來對接 neuvector 官方helm倉庫,後續基於Helm商店部署 neuvector 即可, 在應用市場頁面,點選新增商店,選擇helm商店,輸入相關資訊即可完成對接。
helm 商店地址:https://neuvector.github.io/n...
安裝
在 helm 倉庫找到 core 點選安裝到 neuvector 團隊裡即可
修改預設的 key 以及 value
values 配置項:
鍵 | 值 |
---|---|
registry | docker.io |
tag | 5.0.0-preview.1 |
controller.image.repository | neuvector/controller.preview |
enforcer.image.repository | neuvector/enforcer.preview |
manager.image.repository | neuvector/manager.preview |
cve.scanner.image.repository | neuvector/scanner.preview |
cve.updater.image.repository | neuvector/updater.preview |
manager.svc.type | ClusterIP |
安裝完成以後,確認 pod 的狀態為 Running
<img src="https://static.goodrain.com/wechat/neuvector/5.png" style="zoom: 50%;" />
neuvector 提供了視覺化操作的介面,安裝過程將自動建立Service,通過Rainbond平臺第三方元件的形式可將 neuvector 的訪問埠暴露出來。
<img src="https://static.goodrain.com/wechat/neuvector/6.png" style="zoom: 50%;" />
以下為需要進行配置的選項
元件名稱 | neuvector-web |
---|---|
元件英文名稱 | neuvector |
元件註冊方式 | kubernetes |
Namespace | neuvector |
Service | neuvector-service-webui |
新增完成以後,需要新增並開啟對外訪問的埠(8443),預設使用者名稱以及密碼均為 admin/admin
注意:訪問的時候,需要通過 https 的形式進行訪問,至此 neuvector 安裝完畢
<img src="https://static.goodrain.com/wechat/neuvector/8.png" style="zoom: 50%;" />
NeuVector 最佳實踐
網路流量監視治理
NeuVector 提供的網路活動,可以清楚的檢視每一個 pod 之間的網路流量動向。以及對應的埠,規則,更加清晰明瞭的檢視走向。
藍色線代表正常的流向是記錄在學習模式裡的。
黃色的流向則是記錄在監視模式下,需要我們手動進行審閱規則,決定是否通過這個流量。
紅色則代表是記錄在保護模式下,被拒絕的動向,也可通過規則進行避免。
學習模式,監視模式,保護模式的使用
NeuVector 的組支援 3 種模式:學習模式、監控模式和保護模式;各個模式實現作用如下:
學習模式
學習和記錄容器、主機間網路連線情況和程式執行資訊。
自動構建網路規則白名單,保護應用網路正常行為。
為每個服務的容器中執行的程式設定安全基線,並建立程式配置檔案規則白名單。
監控模式
NeuVector 監視容器和主機的網路和程式執行情況,遇到非學習模式下記錄的行為將在 NeuVector 安全事件中進行告警。
保護模式
NeuVector 監視容器和主機的網路和程式執行情況,遇到非學習模式下記錄的行為直接拒絕。
針對於以上三種模式,可以總結出來適於生產環境的最佳實踐,當新的業務準備上線的時候,可以先預設是學習模式,經過一段時間的學習,記錄容器的以及主機的規則,然後轉換成監控模式,執行一段時間,監控是否有特殊的網路流量以及主機程式,幫助我們把特殊的網路動向記錄下來,並進行告警確認是否放行,最後轉換成監控模式,避免一些惡意的操作對我們的環境造成不必要的危險。
基於叢集的映象倉庫做漏洞檢查
kubernetes 叢集部署業務的最小單元是 pod 但是pod 的組成部分最重要的其實是映象, NeuVector 也是可以基於映象進行漏洞檢查,避免在映象被注入特殊的漏洞機制
對接 Rainbond 時,在不使用外部的映象倉庫的情況下,Rainbond 會提供一個預設的用於儲存映象的倉庫 goodrain.me ,它是用來儲存通過 Rainbond 構建的所有業務的映象,所以通過檢查裡面的映象,可以清楚的看出業務所依賴的映象都存在那些漏洞,已避免因為映象漏洞問題所造成的影響。
如果在對接 Rainbond 時使用了外部的映象倉庫,且域名可以被解析到的情況,可以直接填寫域名即可,因為 goodrain.me 本身是不能被 NeuVector 解析的,所以需要通過叢集的 coredns 手動新增對應的解析,來確保 NeuVector 可以連線上。
編輯coredns
kubectl edit cm coredns -n kube-system
<img src="https://static.goodrain.com/wechat/neuvector/10.png" style="zoom:33%;" />
獲取 goodrain.me 解析的 IP
kubectl get rainbondcluster -n rbd-system -oyaml | egrep -v [A-Za-z{}]
在指定位置新增以下內容,注意修改 IP
hosts {
192.168.0.1 goodrain.me
fallthrough
}
在 NeuVector web介面左側選擇 資產 > 映象庫 新增倉庫
goodrain.me 預設使用者為 admin,密碼通過以下命令獲取
kubectl get rainbondcluster -n rbd-system -oyaml | grep password | sed "1d"
映象掃描結束以後,映象的資訊會在下面進行呈現,點選想要檢視的映象名稱,即可檢視詳細資訊,以下供參考
寫在最後
通過本文,希望大家可以基於 Rainbond 成功把 NeuVector 容器安全平臺部署起來,並且可以根據最佳實踐,做好相對應的操作,當然NeuVector 的功能遠遠不止於此,還是需要大家不斷的探索,不斷的實踐。