现在打包应用到 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/