容器化时代
容器是一种将传统应用标准化的技术,它可以将程序以及程序依赖的环境打包在一起,极大的方便了程序的交付和部署,降低了运维成本和故障率。目前,容器技术已经被广泛使用,相应的技术生态如:Docker, Kubernetes, Containerd等,也越来越成熟。各大云厂商更是推出自己的容器云平台,如亚马逊的EKS、微软的AKS、阿里的ACK/ASK等等,容器技术的火热程度可见一斑。
面临的挑战
但容器技术普及的同时,也诞生了一些新的安全问题。理想情况下,一个容器中只包含一个正在运行的程序,和它所依赖的环境,但多数情况下,容器中还包含了动态库、静态库、命令行工具等可执行文件,这就给恶意程序留下了可乘之机,更重要的是,这些可执行文件可能是很旧的版本,存在一些安全漏洞。已经有不少人因为部署了不安全的容器而付出了高额的代价。那么,当我们部署一个容器化的应用时,怎样知道这个容器镜像中有没有安全漏洞呢?我们需要一些手段和工具帮助我们了解容器镜像的安全性。
Kube-eye能做什么
Kube-eye是一个专门为Kubernetes平台设计的安全工具,并且将持续集成更多的实用功能。目前kube-eye中包含的主要功能如下:
- 基于各Linux发行版公开的安全漏洞数据库,扫描镜像中任何可能存在的安全漏洞。
- 基于CIS Kubernetes标准,扫描集群节点可能存在的安全风险,并给出修复建议。
- 提供最快捷最直接的方式,搜索和查看集群中所有Pod的日志,帮助使用者快速定位问题。
- 实时查看指定Pod日志,并支持搜索词高亮。
Kube-eye的安装和使用都是一键式的,以下命令将在你的Kubernetes集群中直接安装好Kube-eye,更多信息请移至Kube-eye项目说明。
kubectl create ns kube-eye
kubectl create -f http://cdn.jsdelivr.net/gh/ivyentcn/ivyentcn.github.io/kube-eye/deploy/kube-eye-k8s1.18-loadbalance.yaml
扫描你的镜像
安装后进入Kube-eye首页,只需勾选要扫描的镜像,然后点击扫描按钮,扫描完成后将在右侧看到镜像的详细信息和扫描历史。
扫描过的镜像,将用不同的颜色表示该镜像的安全级别。
- 绿色:表示没有在该镜像内找到安全漏洞
- 黄色:表示在镜像内找到安全漏洞,但该漏洞不是高危漏洞
- 红色:表示在镜像内找到高危漏洞
你可以点击右侧栏中的扫描结果按钮,查看该次扫描到的所有安全漏洞,以及每个漏洞的详细信息。
扫描Kubernetes节点
该功能主要基于CIS Kubernetes标准,检查Kuberntes节点是否被正确的安装和配置,比如该节点上的TLS证书文件的权限是否正确的设置,避免被恶意获取和篡改等。
进入CIS Benchmark页面,勾选要扫描的节点,然后点击扫描按钮,扫描完成后将在右侧看到该节点的详细信息和扫描历史。
你可以点击右侧栏中的扫描结果按钮,查看该次扫描的所有检查项以及结果汇总。如果有未通过的检查项,则可以按照相应的修复建议来优化你的节点。
搜索Pod日志
进入Log Search页面后,默认展示集群中所有Pod的最新日志,右上方可以选择Namespace, Pod, Container和指定日期,以缩小查找范围。
或者可以在输入栏直接搜索关键词来找到相关的日志,如下所示,每输入一个关键词,日志的显示范围也将逐步缩小。
实时日志
进入Log Monitor页面,直接选择容器对应的Namespace, Pod, Container选项,即可查看该容器的实时日志输出。并且高亮显示搜索关键词,快速找到感兴趣的日志。