Rainbond結合NeuVector實踐容器安全管理

rainbond發表於2022-05-10

前言

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 配置項:

registrydocker.io
tag5.0.0-preview.1
controller.image.repositoryneuvector/controller.preview
enforcer.image.repositoryneuvector/enforcer.preview
manager.image.repositoryneuvector/manager.preview
cve.scanner.image.repositoryneuvector/scanner.preview
cve.updater.image.repositoryneuvector/updater.preview
manager.svc.typeClusterIP

安裝完成以後,確認 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
Namespaceneuvector
Serviceneuvector-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 的功能遠遠不止於此,還是需要大家不斷的探索,不斷的實踐。

相關文章