NeuVector 會是下一個爆款雲原生安全神器嗎?

KubeSphere發表於2022-02-22

近日一則《SUSE 釋出 NeuVector:業內首個開源容器安全平臺》的文章被轉載於各大 IT 新聞網站。作為 SUSE 家族的新進成員,在 3 個月後便履行了開源承諾,著實讓人讚歎。那麼 NeuVector 究竟有哪些過人之處能得到 SUSE 的青睞?而對比各安全廠商的開源安全產品又有哪些突破?接下來,我會以一個 SecDevOps 的視角對 NeuVector 進行簡要分析。

開源雲原生安全產品現狀

NeuVector 此次開源的並非某個元件或者安全工具,而是一套完整的容器安全平臺。這與其他各大雲原生安全廠商的開源策略有很大的區別。目前,雲原生領域活躍的開源廠商包括:Aqua Security, Falco(sysdig), Anchore, Fairwinds, Portshift 等,以及被紅帽收購的 Stackrox,除此還有像 Clair 這樣來自大廠的安全工具。而傳統的安全廠商雖然都有面向原生安全的產品,然而鮮有軟體開源。雲原生安全產品成為了創新型安全廠商突破傳統廠商重圍的一條重要賽道。而開源則更像他們檢驗其產品的試金石。

專案廠商連結Star型別開源時間
clairQuayhttps://github.com/quay/clair8.4k映象掃描2015-11-13
trivyAquahttps://github.com/aquasecuri...10.1k映象掃描2019-04-11
kube-hunterAquahttps://github.com/aquasecuri...3.4k漏洞掃描2018-07-18
kube-benchAquahttps://github.com/aquasecuri...4.5kCIS 安全基線2017-06-19
starboardAquahttps://github.com/aquasecuri...968Dashboard2020-03-17
traceeAquahttps://github.com/aquasecuri...1.5k基於 eBPF 的系統事件追蹤2019-09-18
anchore-engineanchorehttps://github.com/anchore/an...1.4k漏洞掃描2017-09-06
kyvernokyverno.iohttps://github.com/kyverno/ky...1.8kKubernetes 策略與審計2019-02-04
GateKeeperOPA (sysdig)https://github.com/open-polic...1.3kKubernetes 策略與審計2018-10-26
falcofalcosecurity(sysdig)https://github.com/falcosecur...4.4k基於核心模組的系統事件追蹤、警告2016-01-19
terrascanaccurics.comhttps://github.com/accurics/t...2.7k通用的 IaS 配置掃描2017-09-11
Kubeiportshifthttps://github.com/cisco-open...489映象掃描(帶皮膚)2020-03-22
PolarisFairwindshttps://github.com/FairwindsO...2.4k配置掃描與策略2018-11-15
kubeseccontrolplaneiohttps://github.com/controlpla...667Kubernetes 配置掃描2017-10-10
KubeEyeKubeSpherehttps://github.com/kubesphere...424基於策略的 Kubernetes 叢集配置掃描2020-11-07
kube-linterStackrox(RedHat)https://github.com/stackrox/k...1.8kKubernetes 配置掃描2020-08-13

上表中,我們列舉出了來自各個安全廠商的主要開源專案。從上面的表格中我們可以看出,目前開源安全軟體集中在四大類別:

  1. 映象漏洞掃描
  2. 合規、基線掃描
  3. Kubernetes 安全策略、配置管理
  4. 威脅檢測

除上述四類工具外,網路安全也是雲原生安全的重要一環,但目前主要由 CNI 網路外掛支援,並未在其他安全廠商找到相關產品。這些工具目前都處於相對割裂的狀態。除 starboard 專案是整合了 Aqua 開源安全產品線的簡易安全平臺外,其他廠商並未開源類似 NeuVector 的平臺級別專案。且 starboard 目前也僅能只能自動執行漏洞掃描、配置審計、CIS 基線等基本功能。僅僅利用以上工具,運維開發人員則很難將其整合,形成一套完善的安全解決方案。從各個專案的 Star 數量上也可看出像 Trivy,TerraScan 等各類掃描工具相較執行時安全工具 Falco,Tracee 更受到社群使用者的歡迎。這跟掃描類工具更易於實施,可以與 CI/CD 流水線快速整合有,也許有著密切的關係。而執行時安全工具則需要與其它 IT 系統進行整合或二次開發才能發揮出安全防護的作用。學習、使用、實施難度的提升,大大的阻礙了其普及程度。而 NeuVector 的開源則很可能打破這一現狀,讓社群使用者輕鬆的部署一套完整的安全平臺,使用以往付費商業平臺才具有的功能。

雲原生容器安全平臺

接下來,我們看一下作為雲原生容器安全平臺的 NeuVector 究竟有哪些獨一無二的開源功能。

統一平臺

首先,作為一個平臺應具備統一的安裝部署能力,而不需要使用者去思考如何去整合各類安全元件從而達到相應的安全需求。目前,可以通過官方提供的 Helm 安裝包或 yaml 檔案在已有的 Kubernetes 叢集上可輕鬆的部署 NeuVector。 NeuVector 由 5 個主要服務組成:

NeuVector 架構

  • Manager, NeuVector 的 Web 控制檯,為使用者提供了統一的管理 UI,便於使用者檢視安全事件、管理安全解決方案、規則等。
  • Controller, Backend 伺服器及控制器,管理如 Enforcer、Scanner 等其他元件,分發安全策略及排程掃描任務。
  • Scanner, 使用者執行漏洞掃描、基線掃描等任務。
  • Enforcer, 一個輕量級的容器,用於攔截系統事件,執行安全策略等。通常以 Daemon set 執行再叢集中的每個節點上。
  • Updater, 用於更新 CVE 資料庫。

其次,統一的管理平面。能夠管理 Kubernetes 平臺中的各種資產,如容器、映象、主機、程式等。針對各種元件配置規則,策略。執行計劃任務,如合規掃描,映象掃描等。NeuVector 目前功能已經相對比較完善,與 Sysdig、Aqua 等商業平臺的主要功能類似。成功安裝 NeuVector 後,使用者即可通過瀏覽器開啟 NeuVector 的控制檯。在控制檯的導航欄中包含了,資產管理、策略管理、安全風險、通知、平臺設定及聯邦叢集等五項核心功能,依次展開後便可窺見它強大的功能了。

AssetsPolicySecurity RisksNotificationsSettings
PlatformsAdmission ControlVulnerabilitiesSecurity EventsUsers & Roles
NodesGroupsVulnerabilities ProfileRisk ReportsConfiguration
ContainersNetwork RulesComplianceEventsLDAP/AD Settings
RegistriesResponse RulesCompliance Profile-SAML Setting
System ComponentsDLP Sensors--OIDC Settings
--WAF Sensors---

再次,元件之間的聯動能力。NeuVector 能自動發現應用程式、容器和服務的行為。通過學習模式、監控模式、保護模式的轉換有效的提升了效率。對已知的容器行為建模後,違反規則的行為都將觸發安全事件。這些的安全事件會被彙總到Security Events 模組,並通過於 Response Rules 配置事件的響應規則,執行通知告警、自動阻斷等響應動作。

視覺化安全威脅分析皮膚

NeuVector 的視覺化皮膚能有效的幫助管理員分析當前系統存在的風險。彙總顯示了系統中的安全事件,主機/容器漏洞,Ingress/Egress 流量等。還支援 pdf、csv 匯出功能,方便使用者生成報告和分析。

資產管理

資產管理顯示了節點、容器、映象倉庫、NeuVector 自身元件的相關資訊。以不同的視角檢視相關資產的安全風險,針對不同資產執行掃描任務。

事件通知

NeuVector 的通知模組包含了安全事件、風險(合規與漏洞)事件與系統事件。

安全事件中記錄了違反白名單的事件或匹配的黑名單事件。例如,我們可以在網路規則中設定白名單,所有未在白名單中允許的網路連線都將被攔截,並記錄安全事件。在安全事件中,還可以檢視網路、程式、檔案事件等各類事件。並修改事件規則,將誤報加入信任事件中。

使用者許可權管理與認證系統整合

NeuVector 控制檯具有使用者管理功能,對使用者許可權進行限制。並且可以與第三方使用者管理系統進行整合,如 LDAP、SAML、OIDC 等,可以通過與使用者管理系統內的使用者組許可權進行匹配,簡化使用者授權的流程。方法使用者整合已有的使用者授權基礎設施。

聯邦叢集管理

NeuVector 支援多叢集管理功能,建立主叢集后,即可在主叢集中配置聯邦規則。這些規則可以被自動的分發到其他叢集中。通過聯邦叢集可以統一的部署管理各個叢集的安全策略與規則,簡化管理流程。被納管叢集無權求改這些聯邦規則,保證了納管叢集不會違反安全規則,提升了納管叢集的安全性。

功能對比

接下來,我們再看一下 NeuVector 內建的安全工具箱與當前主流的開源安全工具對比。

映象漏洞掃描

映象漏洞掃描工具中,Clair,Trivy,Anchore-engine 壟斷絕大部分開源市場,又有像 Snyk 這樣的商業產品。在這些專案中 Trivy 作為後起之秀,在短短 3 年內即超越了 Clair,成為最流行的工具,這與 Trivy 強大的功能有著密不可分的關係。Trivy 不但支援 Alpine, RHEL, CentOS, Ubuntu 等系統軟體包的漏洞掃描。還支援基於開發語言的依賴包漏洞掃描,如 Go, Python, PHP, Node.js Java, .Net 等。基於 GitHub Action 自動化任務會從各大廠商的官方 CVE 漏洞庫拉取最新的漏洞資訊,及時更新 Trivy 漏洞庫。

從 NeuVector 的程式碼庫中可以看出,目前漏洞掃描可以支援基於 apk, dpkg, rpm 分發包的檢測,核心程式碼非常簡練。但由於其尚未釋出漏洞庫,因此很難判斷其漏洞掃描的準確性和全面性。還需要等待 NeuVector 釋出下一步的開源計劃,以全面的瞭解其相關的發展規劃。相信在短期內 NeuVector 的漏洞掃描應該難以撼動 Trivy 的地位。

合規檢查

NeuVector 內建的合規性檢測支援包括 CIS Kubernetes/docker Benchmarks, 以及 PCI, NIST,GDPR 和 HIPAA 等行業標準合規檢測模板。對於 CIS Kubernetes Benchmarks 可以支援 OpenShift 和 GKE 的自動檢測,但由於 CIS Kubernetes Benchmarks 檢測指令碼尚不能支援自定義規則,目前對於私有云或使用第三方安裝工具部署的叢集環境會受到限制。另外,由於 NeuVector 的檢測程式碼都是由 bash 指令碼開發,其擴充套件性和配置性不如 kube-bench 靈活。

目前,其他合規性檢測工具都只針對某一種標準,很難兼顧其它,而 NeuVector 更加全面和通用,使用者可以自定義合規檢測指令碼,可以定製針對主機或容器或第三方元件的合規性檢測。而不侷限於 CIS 或其他標準的規則。但另一方面,官方文件中建議謹慎使用自定義合規檢測指令碼,因為自定義指令碼具有主機和容器的 root 執行許可權,並且沒有命令限制,可能存在潛在的安全風險。

網路拓補圖

網路拓補圖使用了視覺化的方式顯示容器-容器和容器-主機之間間網路通訊關係,幫助我們分析潛在的安全風險,提升了網路的可觀測性。Weave Scope, Cilium Hubble 都支援網路拓補圖功能。Weave Scope 的使用範圍更加廣泛,不侷限於 Kubernetes,還可在 Docker,Mesosphere 等平臺進行部署。Hubble 雖然依賴於 Cilium,但是 Cilium 不僅效能優越,而且將可觀察性和安全性作為首要的功能特性,因此 Hubble 也作為其核心元件也被廣泛使用。而且 Cilium 作為社群中炙手可熱的網路外掛,未來大有超越 Calico 之勢。

從功能角度分析,Weave Scope 更加側重於網路效能分析和除錯,並支援外掛,可定製化 UI 功能。Hubble 則更偏向於微服務治理,可顯示微服務的依賴關係,對應用層協議有更好的支援。通過 Hubble 也可觀測到哪些服務發起了外網訪問或域名解析以及被網路策略攔截的網路連線等。

NeuVector 的 Network Activity 功能著重於網路安全性。幫助網路管理員識別異常流量。管理網路安全策略,執行隔離命令等。雖然他們的檢視功能相似、原理相通,但由於其功能重點不一樣,橫向對比的意義有限。

核心事件審計

通過核心事件分析系統和應用的行為是執行時安全檢測的重要一環。通過 Linux 核心監控的系統中的事件,事件產生速度極快,對核心模組效率要求極高。因此,目前主流方案會採用 eBPF,像 Tracee 就使用了 eBPF + Golang 的組合作為事件的收集引擎。核心模組也是另一種可選方案,Falco 目前即支援 eBPF 也支援核心模組,靈活性較高,對低版本核心有更好的支援。NeuVector 還缺少事件收集的設計文件,由於時間倉促,並未通過程式碼深入瞭解 NeuVector 事件收集的模式。僅從程式碼結構上看,程式碼相對較複雜,缺少註釋,元件之間的關係僅憑命名很難確定。希望官方能儘快完善相關文件,便於進一步理解分析。

安裝試用

接下來我們通過 KubeSphere 來安裝試用 NeuVector。

進入 kubectl 終端

首先登入 KubeSphere Console,進入"平臺管理",選擇"叢集管理"。

進入"ks-installer",選擇"應用負載",選擇"工作負載",專案設定為"kubesphere-system",選擇"ks-installer"。

進入 ks-installer 的 Pod 終端。

使用 helm 安裝 NeuVector

  • 建立 namespace
kubectl create namespace neuvector
  • 建立 serviceaccount
kubectl create serviceaccount neuvector -n neuvector
  • 新增 neuvector 的 helm 倉庫
helm repo add neuvector https://neuvector.github.io/neuvector-helm/
  • 安裝 neuvector
helm install my-neuvector --namespace neuvector neuvector/core

  • 替換映象

    由於 neuvector 映象需要許可權才能獲取,這裡將映象替換為 preview 版本
    更多安裝資訊請參考:https://github.com/neuvector/...
kubectl set image deployment.apps/neuvector-controller-pod *=neuvector/controller.preview:5.0.0-preview.1 -n neuvector
kubectl set image deployment.apps/neuvector-manager-pod *=neuvector/manager.preview:5.0.0-preview.1 -n neuvector
kubectl set image deployment.apps/neuvector-scanner-pod *=neuvector/scanner.preview:latest -n neuvector
kubectl set image daemonset.apps/neuvector-enforcer-pod *=neuvector/enforcer.preview:5.0.0-preview.1 -n neuvector
kubectl get cronjob/neuvector-updater-pod -n neuvector -o yaml | sed 's#image: registry.neuvector.com/updater:latest#image: neuvector/updater.preview:latest#' | kubectl replace -f -

  • 檢視 neuvector 服務狀態

訪問 neuvector UI

  • 使用 kubernetes node ip 和 node port 訪問 neuvector UI, e.g. http://1.2.3.4:34567
  • 預設使用者密碼:admin/admin
  • 使用條款點選 "I accept"
  • 修改預設密碼
    點選使用者選擇"my profile",點選"EDIT PROFILE"
  • 檢視 Dashboard

開源社群

從 Github 倉庫的資訊來看,NeuVector 開源還處於起步階段。僅僅公佈了程式碼而已,目前還沒有明確的 RoadMap,Release Plan, 社群的治理方式也尚不明確。這些問題都亟待解決。考慮到 Rancher 社群的成熟度,這一切應該只是時間問題,相信 NeuVector 會很快的步入正軌。

總結

NeuVector 填補了安全產品的空缺。雖然各個功能模組並非業界最強,但是其全生命週期的安全治理能力是其他開源工具所不能企及的。如果未來 NeuVector 可打造成開放式平臺,整合業內的優秀工具取長補短,必將發揮出更大的作,並在開源安全市場佔有一席之地。

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章