24 張圖初探開源容器安全平臺 NeuVector

一 背景

NeuVector 業界首個端到端的開源容器安全平臺,唯一爲容器化工作負載提供企業級零信任安全的解決方案。NeuVector 是業界領先的安全和合規解決方案,已被全球知名企業廣泛採用;其代碼庫的開源不僅使 NeuVector 成爲開源社區的首選技術,還爲受嚴格監管的客戶(包括政企、金融)提供了更可靠的保證。

NeuVector 開源容器鏡像可以安裝在任何 Kubernetes 集羣上。支持包括紅帽 OpenShift、VMWare Tanzu、Google GKE、Amazon EKS、Microsoft Azure AKS 等在內的衆多企業級容器管理平臺。

NeuVector 將驅動 SUSE 旗艦 Kubernetes 管理平臺:SUSE Rancher 的容器安全創新,此舉將有助於推動 Kubernetes 安全領域的重大生態系統革新,此前這一領域通常由閉源的專有解決方案主導。

二 NeuVector 簡介

2.1 功能特性

NeuVector 提供強大的端到端容器安全平臺。這包括對容器、Pod 和主機的端到端漏洞掃描和完整的運行時保護,包括:

NeuVector 的其他特性包括隔離容器和通過 SYSLOG 和 webhooks 導出日誌的能力,爲調查啓動數據包捕獲,以及與 OpenShift RBACs、 LDAP、 Microsoft AD 和 SSO 與 SAML 的集成。

注意: 隔離意味着所有網絡通信都被阻塞。容器將保持並繼續運行——只是沒有任何網絡連接。Kubernetes 不會啓動一個容器來替換隔離的容器,因爲 api-server 仍然能夠到達容器。

2.2 全生命週期安全

2.3 優勢

三 組件構成即部署模式

NeuVector 運行時容器安全方案包括四種類型安全容器:Controllers,Enforcers,Managers,Scanners。

其能夠部署爲一個 Allinone 的特殊容器,即能將個功能組合在一個容器中,當然也可以在虛擬機或單個操作系統的裸機上面部署。

3.1 Controller

Controller 管理 NeuVector Enforcer 容器集羣。它還爲管理控制檯提供 REST api。雖然典型的測試部署只有一個 Controller,但是建議在高可用性配置中使用多個 Controller。控制器是 Kubernetes Production 部署示例 yaml 中的默認控制器。

3.2 Enforce

Enforcer 是一個輕量級容器,用於強制執行安全策略。應該在每個節點 (主機) 上部署一個執行器,例如作爲一個守護進程集。注意: 對於 Docker 本地 (非 Kubernetes) 部署,執行器容器和控制器不能部署在同一個節點上(下面的 All-in-One 情況除外)。

3.3 Manager

Manager 是一個無狀態容器,它爲用戶提供 Web-UI(僅限 HTTPS)和 CLI 控制檯以管理 NeuVector 安全解決方案。可以根據需要部署多個 Manager 容器。

3.4 Scanner

掃描器是一個容器,它執行對鏡像、容器和節點的漏洞和順應性掃描。它通常作爲一個副本部署,並可以擴大到所需的許多並行掃描儀,以提高掃描性能。Controller 以循環的方式將掃描作業分配給每個可用的掃描器,直到所有掃描完成。掃描儀還包含最新的 CVE 數據庫,並由 NeuVector 定期更新。

四 平臺功能

NeuVector 提供操作系統 / Runtime/K8s / 容器應用三個層面安全業務進行保護。

五 部署

5.1 Helm 部署

# helm repo add neuvector https://neuvector.github.io/neuvector-helm/
"neuvector" has been added to your repositories

# helm search repo neuvector/core
NAME            CHART VERSION   APP VERSION     DESCRIPTION
neuvector/core  2.2.4           5.0.4           Helm chart for NeuVector's core services
kubectl create namespace neuvector
kubectl create serviceaccount neuvector -n neuvector
helm install neuvector --namespace neuvector neuvector/core  --set registry=docker.io  --set
tag=5.0.0-preview.1 --set=controller.image.repository=neuvector/controller.preview --
set=enforcer.image.repository=neuvector/enforcer.preview --set
manager.image.repository=neuvector/manager.preview --set
cve.scanner.image.repository=neuvector/scanner.preview --set cve.updater.image.repository=neuvector/updater.preview


NAME: my-release
LAST DEPLOYED: Wed Jan 19 21:04:03 2022
NAMESPACE: neuvector
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Get the NeuVector URL by running these commands:
  NODE_PORT=$(kubectl get --namespace neuvector -o jsonpath="{.spec.ports[0].nodePort}" services neuvector-service-webui)
  NODE_IP=$(kubectl get nodes --namespace neuvector -o jsonpath="{.items[0].status.addresses[0].address}")
  echo https://$NODE_IP:$NODE_PORT

Helm-chart 參數查看:

https://github.com/neuvector/neuvector-helm/tree/master/charts/core

5.2 資源清單部署

5.2.1 安裝環境

軟件版本:
Kubernetes:1.20.14
Docker:19.03.15
NeuVector:5.0.0-preview.1

5.2.2 開始執行安裝

kubectl create namespace neuvector
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.19.yaml
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.16.yaml
kubectl create clusterrole neuvector-binding-app --verb=get,list,watch,update --resource=nodes,pods,services,namespaces
kubectl create clusterrole neuvector-binding-rbac --verb=get,list,watch --resource=rolebindings.rbac.authorization.k8s.io,roles.rbac.authorization.k8s.io,clusterrolebindings.rbac.authorization.k8s.io,clusterroles.rbac.authorization.k8s.io
kubectl create clusterrolebinding neuvector-binding-app --clusterrole=neuvector-binding-app --serviceaccount=neuvector:default
kubectl create clusterrolebinding neuvector-binding-rbac --clusterrole=neuvector-binding-rbac --serviceaccount=neuvector:default
kubectl create clusterrole neuvector-binding-admission --verb=get,list,watch,create,update,delete --resource=validatingwebhookconfigurations,mutatingwebhookconfigurations
kubectl create clusterrolebinding neuvector-binding-admission --clusterrole=neuvector-binding-admission --serviceaccount=neuvector:default
kubectl create clusterrole neuvector-binding-customresourcedefinition --verb=watch,create,get --resource=customresourcedefinitions
kubectl create clusterrolebinding  neuvector-binding-customresourcedefinition --clusterrole=neuvector-binding-customresourcedefinition --serviceaccount=neuvector:default
kubectl create clusterrole neuvector-binding-nvsecurityrules --verb=list,delete --resource=nvsecurityrules,nvclustersecurityrules
kubectl create clusterrolebinding neuvector-binding-nvsecurityrules --clusterrole=neuvector-binding-nvsecurityrules --serviceaccount=neuvector:default
kubectl create clusterrolebinding neuvector-binding-view --clusterrole=view --serviceaccount=neuvector:default
kubectl create rolebinding neuvector-admin --clusterrole=admin --serviceaccount=neuvector:default -n neuvector
# kubectl get rolebinding -n neuvector | grep neuvector
neuvector-admin   ClusterRole/admin   7m23s

# kubectl get clusterrolebinding  | grep neuvector
neuvector-binding-admission                               ClusterRole/neuvector-binding-admission                                            7m26s
neuvector-binding-app                                     ClusterRole/neuvector-binding-app                                                  7m26s
neuvector-binding-customresourcedefinition                ClusterRole/neuvector-binding-customresourcedefinition                             7m26s
neuvector-binding-nvadmissioncontrolsecurityrules         ClusterRole/neuvector-binding-nvadmissioncontrolsecurityrules                      7m26s
neuvector-binding-nvdlpsecurityrules                      ClusterRole/neuvector-binding-nvdlpsecurityrules                                   7m26s
neuvector-binding-nvsecurityrules                         ClusterRole/neuvector-binding-nvsecurityrules                                      7m26s
neuvector-binding-nvwafsecurityrules                      ClusterRole/neuvector-binding-nvwafsecurityrules                                   7m26s
neuvector-binding-rbac                                    ClusterRole/neuvector-binding-rbac                                                 7m26s
neuvector-binding-view                                    ClusterRole/view                                                                   7m26s

底層 Runtime 爲 Docker

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml

底層 Runtime 爲 Containerd(對於 k3s 和 rke2 可以使用此 yaml 文件)

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-containerd-k8s.yaml

1.21 以下的 Kubernetes 版本會提示以下錯誤,將 yaml 文件下載將 batch/v1 修改爲 batch/v1beta1

error: unable to recognize "https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml": no matches for kind "CronJob" in version "batch/v1"

1.20.x cronjob 還處於 beta 階段,1.21 版本開始 cronjob 才正式 GA 。

默認部署 web-ui 使用的是 loadblance 類型的 Service,爲了方便訪問修改爲 NodePort,也可以通過 Ingress 對外提供服務

kubectl patch  svc neuvector-service-webui  -n neuvector --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"},{"op":"add","path":"/spec/ports/0/nodePort","value":30888}]'

訪問:

https://node_ip:30888

默認密碼爲 admin/admin

5.2.3 訪問

由於我採用 minikube 部署,臨時菜喲哦那個 port-forward 訪問測試。

kubectl port-forward --address 0.0.0.0 -n neuvector service/neuvector-service-webui 22222:8443

六 功能測試

6.1 Dashboard

在 neuvector 的 dashboard 頁面,除了有集羣的健康體檢,還有入口和出口暴露,已經 TOP 安全事件 / 資源 / 策略等。

6.2 Network Activity

6.3 資產

6.3.1 平臺

在平臺模塊,可以看到當前集羣運行的 K8s 版本,及當前集羣中存在的 CVE 漏洞及詳細漏洞信息。

6.3.2 主機

在改模塊可以看到運行 K8s 集羣的 Node 節點資源信息,保護操作系統及資源軟件版本等信息。

6.3.3 容器

該模塊可以看到集羣運行的所有容器,並可以對單個容器進行查詢詳細信息,漏洞信息,容器進程,容器實時監控等。

6.3.4 鏡像庫

鏡像庫可以添加公有云鏡像,或自建鏡像,對其中存儲的鏡像進行安全掃描。

6.3.5 系統組件

該模塊是對 NeeuVector 的系統自己例如控制器 / 掃描器 / 代理器進行信息展示和監控統計。

6.4 策略

6.5 安全隱患

6.7 通知 / 設置

其他

總結

容器安全一直是企業構建和運行 Kubernetes 應用的關鍵需求,NeuVector 項目使 Rancher 用戶能夠滿足整個應用生命週期中的主要安全場景要求,包括深入的網絡可視化、檢查和微隔離;漏洞檢測、配置和合規管理;以及風險分析、威脅檢測和事件響應,豐富的全場景容器安全幫助用戶守護業務安全。

參考鏈接

作者:kaliarch

出處:https://juejin.cn/post/7165128756531560478

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/s3corv94JMRY0Gpdcug7oA