上一篇文章《harbor系列(二)创建项目并且把本地的docker镜像上传到harbor上》我们介绍了打包一个本地的镜像上传到harbot仓库中,但是在生产环境,我们一般都对容器有安全性的要求,至少不能有漏洞,所以我们需要保证上传到harbor上的docker镜像都通过了安全扫描。在前面安装的harbor上,我们可以看到默认是没有漏洞扫描器的,例如:
所以这里我们需要安装一个扫描器,这里的扫描器我们使用开源的漏洞扫描器Clair。对于Clair的介绍如下:
Clair是CoreOS 2016年发布的一款开源容器漏洞扫描工具。该工具可以交叉检查Docker镜像的操作系统以及上面安装的任何包是否与任何已知不安全的包版本相匹配。漏洞是从特定操作系统的通用漏洞披露(CVE)数据库获取。 通过从镜像文件系统中抽取静态信息以及维护一个组成镜像的不同层之间的差异列表,可以大大减少分析时间,而且不需要实际运行可能存在漏洞的容器。如果镜像所依赖的一个靠下的层存在漏洞,那么该镜像就会被识别为有漏洞,而且,通过使用图存储,可以避免重新分析镜像。 clair的目标是能够从一个更加透明的维度去看待基于容器化的基础框架的安全性。Clair=clear + bright + transparent 与 Clair 集成, 添加漏洞扫描功能(可以设置漏洞级别, 当漏洞级别达到一定程度时, 限制镜像的拉取) .
Clair总体工作原理如下:
Clair主要包括以下模块:
获取器(Fetcher)- 从公共源收集漏洞数据 检测器(Detector)- 指出容器镜像中包含的Feature 容器格式器(Image Format)- Clair已知的容器镜像格式,包括Docker,ACI 通知钩子(Notification Hook)- 当新的漏洞被发现时或者已经存在的漏洞发生改变时通知用户/机器 数据库(Databases)- 存储容器中各个层以及漏洞 Worker - 每个Post Layer都会启动一个worker进行Layer Detect
Clair整体处理流程如下:
Clair定期从配置的源获取漏洞元数据然后存进数据库。 客户端使用Clair API处理镜像,获取镜像的特征并存进数据库。 客户端使用Clair API从数据库查询特定镜像的漏洞情况,为每个请求关联漏洞和特征,避免需要重新扫描镜像。 当更新漏洞元数据时,将会有系统通知产生。另外,还有webhook用于配置将受影响的镜像记录起来或者拦截其部署。
Clair漏洞等级说明如下:
Unknown:社区暂未给出优先级或者Clair当前未同步支持 Negligible:几乎无任何影响的漏洞,不会单独给出一个针对性的修复更新版本 Low 低风险等级,一般会在更高风险等级漏洞修复版本中修复 Medium:中风险等级,如跨域、用户权限暴露等,会有针对性版本修复 High:高风险等级,漏洞在大多数人默认的安装版本中出现,如服务出错、数据丢失、root权限恶意获取等 Critical:最高风险等级,几乎所有版本都存在某漏洞,如造成用户大量数据丢失
接下来我们就来为harbor安装一个Clair。
一、进入到harbor安装目录,把harbor停掉
#进入到harbor安装目录 cd /root/harbor #停掉harbor docker-compose stop
出现如下图,就代表停掉了。
二、添加扫描插件-Clair
./prepare --with-clair ./prepare --with-clair --with-chartmuseum
三、再启动harbor
docker-compose -f docker-compose.yml up -d
四、进入harbor dashboard查看扫描器
这里我们再进入到harbor的dashboard里面,找到我们刚才创建的school_zs项目,点击扫描器,就能看到已经安装好的扫描器了。
五、使用扫描器扫描所有的镜像
然后我们点击菜单:系统管理->审查服务->漏洞->开始扫描
这里就可以扫描harbor仓库中的所有镜像的漏洞了。扫描完之后,在每一个镜像的列表里面都会标记是否有漏洞:
还没有评论,来说两句吧...