现在打包应用到 Docker Image变的越来越普遍了,因此镜像的安全性也变得越来越重要了;
很多人认为只要打包成镜像应用就是安全的,但是大家也知道镜像是一个静态文件,由很多层组成,只要其中的一层发现漏洞,就会对你的应用造成威胁;
现在也出现了很多开源的漏洞扫描工具,用来扫描镜像中可能存在的漏洞,有Anchore,Clair和Trivy
Anchore是用python写的,主要功能就是对 Docker Image的扫描,它是一个CLI工具,当然也可以通过 API的方式调用;Anchore也有一款带有界面的Anchore Enterprise版本
Clair是用Golang写的,主要实现了对Docker image的漏洞分析,用户可以调用它的API来扫描镜像中的漏洞
Trivy也是用Golang写的,它不仅实现了对Image的扫描,还可以扫描文件,Git 仓库以及配置;它也是一个CLI工具,安装之后就可以通过命令实现扫描功能
下面就用这三个扫描器分别对Docker官方统计的常用镜像扫描,扫描结果的对比如下:




从图中可以看出,
Trivy相比较另外两个能够发现更多的漏洞,尤其是对基础镜像而言
那怎么选择漏洞扫描工具呢
Anchore和Clair相比较Trivy出现的时间更早,但是扫描的结果发现Trivy能发现更多的漏洞,尤其是对alphine镜像;现在大部分镜像的基础镜像都会选择alpine,因为它更加轻量级而且漏洞相对较少
而Anchore和Clair对一些alpine镜像是扫描不出来漏洞的,但是使用Trivy却能够找到;之前部署的Harbor版本使用的扫描器是Clair,扫描alphine镜像之后没有发现漏洞,就认为是安全的;现在Harbor2.0之后是使用Trivy作为默认扫描器,对一些alphine就能够扫描出来漏洞了
Trivy相对于其他两个来说,安装更加的简单,使用也更加的方便;并且能够支持多种类型的文件的扫描,目前也是Harbor默认的扫描器
参考连接:
https://boxboat.com/2020/04/24/image-scanning-tech-compared/