Rainbond结合NeuVector实践容器安全管理
前言
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 的功能远远不止于此,还是需要大家不断的探索,不断的实践。
Rainbond结合NeuVector实践容器安全管理的更多相关文章
- 微服务性能分析|Pyroscope 在 Rainbond 上的实践分享
随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈.CPU利用率高.或内存泄漏等问题.要找到问题的根本原因,我们通常都会通过日志.进程再结合代码去判断根 ...
- 【原创】Docker实战 Dockerfile最佳实践&&容器之间通信
官方最佳实践文档 https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#from Docker实战(三十) ...
- 云原生存储解决方案Rook-Ceph与Rainbond结合的实践
基础不牢,地动山摇.无论是何种体系架构,底层存储的选择都是一个值得探讨的话题.存储承载着业务的数据,其性能直接影响到业务应用的实际表现.也正因为存储和业务的数据关联紧密,其可靠性也必须得到关注,存储的 ...
- 分布式链路追踪Jaeger + 微服务Pig在Rainbond上的实践分享
随着微服务架构的流行,客户端发起的一次请求可能需要涉及到多个或 N 个服务,致使我们对服务之间的监控和排查变得更加复杂. 举个例子: 某条业务线的某个接口调用服务端时快时慢,这时就需要排查各个服务的日 ...
- docker容器入门最佳教程
为什么要写这个 简单回答是:容器技术非常热门,但门槛高. 容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行. 对 IT 行业来说,这是一项非常有价值的技术.而对 I ...
- CI Weekly #17 | flow.ci 支持 Java 构建以及 Docker/DevOps 实践分享
这周一,我们迫不及待写下了最新的 changelog -- 项目语言新增「Java」.创建 Java 项目工作流和其它语言项目配置很相似,flow.ci 提供了默认的 Java 项目构建流程模版,快去 ...
- 容器化分布式日志组件ExceptionLess的Angular前端UI
写在前面 随着微服务架构的流行,日志也需要由专门的分布式日志组件来完成这个工作,我们项目使用的是 ExceptionLess 这个组件,它是前后端分离的:这篇文章我们就来实践容器化 Exception ...
- Rancher 容器管理平台-免费视频培训-链接及内容-第三季
Rancher 容器管理平台-免费视频培训-链接及内容 第三季 第5期-2018年05月10日-持续集成的容器化实践回放网址:http://www.itdks.com/liveevent/detail ...
- Docker容器与镜像管理
目录 容器管理 运行容器 容器的启停操作 容器导入导出 容器生命周期管理 容器资源限制 内存限制 CPU限制 io 限制 镜像管理 镜像命名规范 镜像基本操作 容器管理 运行容器 1.运行一个容器示例 ...
随机推荐
- 哪个类包含 clone 方法?是 Cloneable 还是 Object?
java.lang.Cloneable 是一个标示性接口,不包含任何方法,clone 方法在 object 类中定义.并且需要知道 clone() 方法是一个本地方法,这意味着它是由 c 或 c++ ...
- 更改IE中的jdk版本
一丶打开IE设置: 快捷键:Ctrl+Shift+Alt+S 二丶在设置中调设已经安装的jdk版本(前提已安装):
- IDEA学习之"插件安装位置"
进入设置 找到Plugin,就是插件安装位置了
- Azure DevOps (八) 通过流水线编译Docker镜像
上一篇文章我们完成了最简单的传统部署:上传应用到服务器上使用守护进程进行应用的部署. 本篇文章我们开始研究容器化和流水线的协作. 在开始操作之前,我们首先需要准备一下我们的dockerfile,这里我 ...
- 【转】ng-class的用法
原文出处:https://segmentfault.com/a/11... 在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现 ...
- 前端性能优化(JavaScript篇)
正巧看到在送书,于是乎找了找自己博客上记录过的一些东西来及其无耻的蹭书了~~~ 小广告:更多内容可以看我的博客 优化循环 如果现在有个一个data[]数组,需要对其进行遍历,应当怎么做?最简单的代码是 ...
- 微信小程序上拉加载:onReachBottom详解+设置触发距离
前端经常遇到上拉加载更多的需求,一般还涉及到翻页.小程序里已经给了下拉到底的触发方法onReachBottom(),这里记录下怎样使用这个方法实现下拉加载更多,有需要的直接看代码,有详细注释: 1.首 ...
- new String比字符串池浪费空间,为什么要用它?
对于下面程序中:ss0 = new String( "hello" );是用new()来新建对象的,存于堆中.每调用一次就会创建一个新的对象.当然从节省空间的角度来讲,肯定不如st ...
- vue-cropper裁剪上传
效果图: 全部代码: npm install vue-cropper //首先 安装vue-cropper main.js全局引用: import VueCropper from 'vue-cropp ...
- 解决webpack项目中打包时候内存溢出的bug JavaScript heap out of memory
vue 项目 npm run dev 的时候一直卡住不动:后来找到报错是 Ineffective mark-compacts near heap limit Allocation failed - J ...