《Clair二次开发指南1——Clair编译与使用》

Clair简介:

Clair是一个开源项目,用于对应用程序容器中的漏洞进行静态分析,目前支持的容器有appc和docker。

Clair目前共发布了21个release,这里我们使用其第20个release版本,即V2.0.0进行源码剖析。下载地址为:https://github.com/coreos/clair/archive/v2.0.0.zip


Clair会定期从一组配置的源中获取漏洞元数据,并将其存储在数据库中。

客户端使用Clair API来索引他们的容器图像; 这将解析已安装的源包列表并将它们存储在数据库中。

客户端使用Clair API来查询数据库; 关联数据是实时完成的,而不是需要重新扫描的缓存结果。

当发生漏洞元数据更新时,一个包含受影响的镜像的webhook可以配置为页面或阻止部署。


Clair架构:



Clair主要包括以下模块:

  • 获取器(Fetcher)- 从公共源收集漏洞数据

  • 检测器(Detector)- 指出容器镜像中包含的Feature

  • 容器格式器(Image Format)- Clair已知的容器镜像格式,包括Docker,ACI

  • 通知钩子(Notification Hook)- 当新的漏洞被发现时或者已经存在的漏洞发生改变时通知用户/机器

  • 数据库(Databases)- 存储容器中各个层以及漏洞

  • Worker - 每个Post Layer都会启动一个worker进行Layer Detect
编译与使用:

这里使用源码编译安装。建议使用ubuntu系统进行编译。在编译之前,确保git,bzr,rpm,xz等模块已经安装好。
下载好V2.0.0版本并解压后,执行go build github.com/coreos/clair/cmd/clair进行编译。


编译好后启动clair。clair启动时默认会从 /etc/clair/config.yaml 加载数据库相关配置文件。因此我事先已经安装好postgresql数据库,其版本为9.5.


接下来我们编译analyze-local-images。(这个是本地镜像分析的客户端,虽然clair现在已经不推荐使用此客户端,但它确实是最适合拿来分析的版本。)
go get -u github.com/coreos/analyze-local-images
go build github.com/coreos/analyze-local-images
编译好后扫描本地已经安装好的nginx镜像,扫描结果如下:


至此,我们已经学会了clair的简单使用方法。下一篇文章我们会进一步对其源码进行剖析。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MXi4oyu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值