一 背景

NeuVector业界首个端到端的开源容器安全渠道,唯一为容器化作业负载供给企业级零信任安全的解决方案。 NeuVector 是业界领先的安全和合规解决方案,已被全球知名企业广泛选用;其代码库的开源不仅使 NeuVector 成为开源社区的首选技术,还为受严格监管的客户(包含政企、金融)供给了更可靠的保证。

NeuVector开源容器镜像能够装置在任何Kubernetes集群上。 支撑包含红帽OpenShift、VMWare Tanzu、Google GKE、Amazon EKS、Microsoft Azure AKS等在内的很多企业级容器办理渠道。

NeuVector 将驱动 SUSE 旗舰 Kubernetes 办理渠道——SUSE Rancher 的容器安全创新,此举将有助于推进Kubernetes安全范畴的重大生态体系革新,此前这一范畴一般由闭源的专有解决方案主导。

二 NeuVector简介

开源容器安全平台NeuVector初探

2.1 功用特性

NeuVector 供给强大的端到端容器安全渠道。这包含对容器、Pod 和主机的端到端缝隙扫描和完好的运转时维护,包含:

  • CI/CD 缝隙办理和准入控制,运用 Jenkins 插件扫描镜像、扫描注册表并强制实施准入控制规则以将其布置到出产环境中。
  • 违规维护,发现行为并创立根据白名单的战略来检测违背正常行为的行为。
  • 威胁检测,检测容器上的常见运用程序进犯,例如 DDoS 和 DNS 进犯。
  • DLP 和 WAF 传感器。查看网络流量以防止敏感数据丢失,并检测常见的 OWASP Top10 WAF 进犯。
  • 运转时缝隙扫描。扫描注册表、镜像和正在运转的容器编列渠道和主机以查找常见 (CVE) 以及特定于运用程序的缝隙。
  • 合规与审计。主动运转 Docker Bench 测试和 Kubernetes CIS Benchmarks。
  • 端点/主机安全。检测权限升级,监控主机和容器内的进程和文件活动,并监控容器文件体系的可疑活动。
  • 多集群办理。从单个控制台监控和办理多个 Kubernetes 集群。

NeuVector 的其他特性包含阻隔容器和经过 SYSLOG 和 webhooks 导出日志的才能,为调查启动数据包捕获,以及与 OpenShift RBACs、 LDAP、 Microsoft AD 和 SSO 与 SAML 的集成。留意: 阻隔意味着一切网络通信都被阻塞。容器将保持并持续运转——只是没有任何网络连接。Kubernetes 不会启动一个容器来替换阻隔的容器,因为 api-服务器仍然能够抵达容器。

2.2 全生命周期安全

  • 构建:镜像构建扫描,防止生成有危险的镜像
  • 布置:经过准入控制战略机制,防止有危险的镜像和不符合战略要求的容器布置到环境
  • 运转:四层/七层防火墙防止外部进犯和数据盗取
  • 运转:东西向网络动态微阻隔,防止内部进犯扩展。WAF防火墙防止外部进犯。
  • 运转:容器内病毒、木马、破解器防护.
  • 主机、Runtime、 K8S级别安全基线扫描,合规性评估。

2.3 优势

  • 开放性: 100%开源,无需担心供货商锁定。
  • 灵活性:灵活布置各类Kubernetes发行版, Rancher、Openshift、EKS、 GKE、ACK、 TKE。
  • 可靠性: 7年迭代,成熟稳定产品。
  • 专业性:专业支撑服务,保证事务安全可靠持续运转。

三 组件构成即布置形式

NeuVector 运转时容器安全方案包含四种类型安全容器:Controllers,Enforcers,Managers,Scanners。

其能够布置为一个 Allinone 的特殊容器,也能即将个功用组合在一个容器总,当然也能够在虚拟机或单个操作体系的裸机上面布置。

开源容器安全平台NeuVector初探

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初探

NeuVector供给操作体系/Runtime/K8s/容器运用三个层面安全事务进行维护。

五 布置

5.1 Helm布置

  • 添加 repo
helm repo add neuvector https://neuvector.github.io/neuvector-helm/
helm search repo neuvector/core
  • Kubernetes布置

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 参数查看:

github.com/neuvector/n…

5.2 资源清单布置

5.2.1 装置环境

软件版别:
Kubernetes:1.20.14
Docker:19.03.15
NeuVector:5.0.0-preview.1

5.2.2 开端履行装置

  • 创立 namespace
kubectl create namespace neuvector
  • 布置 CRD( Kubernetes 1.19+ 版别)
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.19.yaml
  • 布置 CRD(Kubernetes 1.18或更低版别)
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.16.yaml
  • 装备 RBAC
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
  • 查看是否有以下 RBAC 目标
kubectl get clusterrolebinding  | grep neuvectorkubectl get rolebinding -n neuvector | grep neuvector
kubectl get clusterrolebinding  | grep neuvector
neuvector-binding-admission                            ClusterRole/neuvector-binding-admission                            44hneuvector-binding-app                                  ClusterRole/neuvector-binding-app                                  44hneuvector-binding-customresourcedefinition             ClusterRole/neuvector-binding-customresourcedefinition             44hneuvector-binding-nvadmissioncontrolsecurityrules      ClusterRole/neuvector-binding-nvadmissioncontrolsecurityrules      44hneuvector-binding-nvsecurityrules                      ClusterRole/neuvector-binding-nvsecurityrules                      44hneuvector-binding-nvwafsecurityrules                   ClusterRole/neuvector-binding-nvwafsecurityrules                   44hneuvector-binding-rbac                                 ClusterRole/neuvector-binding-rbac                                 44hneuvector-binding-view                                 ClusterRole/view                                                   44h
kubectl get rolebinding -n neuvector | grep neuvectorneuvector-admin         ClusterRole/admin            44hneuvector-binding-psp   Role/neuvector-binding-psp   44h
  • 布置 NeuVector
    • 底层 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

开源容器安全平台NeuVector初探

六 功用测试

6.1 Dashboard

在neuvector的dashboard页面,除了有集群的健康体检,还有入口和出口露出,已经TOP安全事情/资源/战略等。

开源容器安全平台NeuVector初探

开源容器安全平台NeuVector初探

6.2 Network Activity

开源容器安全平台NeuVector初探

6.3 资产

6.3.1 渠道

在渠道模块,能够看到当时集群运转的K8s版别,及当时集群中存在的CVE缝隙及详细缝隙信息。

开源容器安全平台NeuVector初探

6.3.2 主机

在改模块能够看到运转K8s集群的Node节点资源信息,维护操作体系及资源软件版别等信息。

开源容器安全平台NeuVector初探

  • 合规信息

开源容器安全平台NeuVector初探

  • 缝隙信息

开源容器安全平台NeuVector初探

  • 容器信息

开源容器安全平台NeuVector初探

6.3.3 容器

该模块能够看到集群运转的一切容器,并能够对单个容器进行查询详细信息,缝隙信息,容器进程,容器实时监控等。

开源容器安全平台NeuVector初探

开源容器安全平台NeuVector初探

6.3.4 镜像库

镜像库能够添加公有云镜像,或自建镜像,对其中存储的镜像进行安全扫描。

开源容器安全平台NeuVector初探

6.3.5 体系组件

该模块是对NeeuVector的体系自己例如控制器/扫描器/代理器进行信息展示和监控计算。

开源容器安全平台NeuVector初探

开源容器安全平台NeuVector初探

6.4 战略

  • 准入控制

开源容器安全平台NeuVector初探

  • 战略了

开源容器安全平台NeuVector初探

6.5 安全危险

  • 缝隙

开源容器安全平台NeuVector初探

  • 合规

开源容器安全平台NeuVector初探

6.7 通知/设置

  • 危险报告

开源容器安全平台NeuVector初探

  • 事情

开源容器安全平台NeuVector初探

其他

  • NeuVector支撑多集群办理。
  • 支撑丰富的战略及报告导出。

总结

容器安全一直是企业构建和运转 Kubernetes 运用的关键需求,NeuVector项目使Rancher用户能够满足整个运用生命周期中的首要安全场景要求,包含深入的网络可视化、查看和微阻隔;缝隙检测、装备和合规办理;以及危险分析、威胁检测和事情呼应,丰富的全场景容器安全协助用户看护事务安全。

参考链接

  • open-docs.neuvector.com/
  • github.com/neuvector/n…
  • github.com/neuvector/m…

本文正在参加「金石方案 . 分割6万现金大奖」