前言
Rainbond 是一個云原生應用管理平臺,使用簡單,不需要懂容器、Kubernetes和底層復雜技術,支持管理多個Kubernetes集群,和管理企業應用全生命周期。但是隨著云原生時代的一點點進步,層出不窮的網絡容器安全事件的出現,也是讓大家對于容器安全,網絡安全的重要性,有了更進一步的想法,Rainbond 為了保證用戶在使用的過程中不出現類似的容器安全事件,特別適配整合了 NeuVector。
NeuVector 是業界首個端到端的開源容器安全平臺,為容器化工作負載提供企業級零信任安全的解決方案。NeuVector 可以提供實時深入的容器網絡可視化、東西向容器網絡監控、主動隔離和保護、容器主機安全以及容器內部安全,容器管理平臺無縫集成并且實現應用級容器安全的自動化,適用于各種云環境、跨云或者本地部署等容器生產環境。
本文主要表述,基于 Rainbond 安裝部署 NeuVector 容器安全平臺的步驟,以及配合 Rainbond 實現生產環境中的最佳實踐。
部署 NeuVector
NeuVector 有多種部署安裝形式,為了更加簡化安裝,選用 helm 的形式進行安裝,Rainbond 也是支持 helm 商店的形式,只需要在應用市場,添加一個新的商店,把 helm商店的URL 填寫上即可。
準備工作
「創建團隊」
NeuVector 通常是安裝在 neuvector 命名空間里面的,而在 Rainbond ,團隊的概念則是對應 kubernetes 里命名空間,所以通過 helm 安裝的時候,首先需要創建出來對應的團隊,團隊的英文名對應的則是該團隊在集群中的命名空間,此處填寫 neuvector,選擇對應集群即可。
「對接 helm 商店」
Rainbond支持基于helm直接部署應用,所以接下來對接 neuvector 官方helm倉庫,后續基于Helm商店部署 neuvector 即可, 在應用市場頁面,點擊添加商店,選擇helm商店,輸入相關信息即可完成對接。
helm 商店地址:https://neuvector.github.io/neuvector-helm/
安裝
在 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
neuvector 提供了可視化操作的界面,安裝過程將自動創建Service,通過Rainbond平臺第三方組件的形式可將 neuvector 的訪問端口暴露出來。
以下為需要進行配置的選項
組件名稱 neuvector-web 組件英文名稱 neuvector 組件注冊方式 kubernetes Namespace neuvector Service neuvector-service-webui
添加完成以后,需要添加并打開對外訪問的端口(8443),默認用戶名以及密碼均為 admin/admin
注意:訪問的時候,需要通過 https 的形式進行訪問,至此 neuvector 安裝完畢
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
獲取 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 的功能遠遠不止于此,還是需要大家不斷的探索,不斷的實踐。