《Clair二次开发指南1——Clair编译与使用》
2017-11-26 20:28
696 查看
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架构:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/07/27643f37836b77da313f2146c2e3732b)
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进行编译。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/07/bec182d01cf12dd8802c8191dc3e3857)
编译好后启动clair。clair启动时默认会从/etc/clair/config.yaml加载数据库相关配置文件。因此我事先已经安装好postgresql数据库,其版本为9.5.
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/07/923a2eaa5c15123626130eb74bcab1db)
接下来我们编译analyze-local-images。(这个是本地镜像分析的客户端,虽然clair现在已经不推荐使用此客户端,但它确实是最适合拿来分析的版本。)
go get -u github.com/coreos/analyze-local-images
go build github.com/coreos/analyze-local-images
编译好后扫描本地已经安装好的nginx镜像,扫描结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/07/6bf551c44f3951ed18cf2e46d4bb7806)
至此,我们已经学会了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的简单使用方法。下一篇文章我们会进一步对其源码进行剖析。
相关文章推荐
- AutoCAD .NET API二次开发学习指南
- DELMIA人机工程 ---- 二次开发 第一篇:开发指南
- [书友交流] <Autodesk 地理信息系统解决方案--FDO、MapGuide、AutoCAD Map 3D二次开发指南>读书交流贴
- Ecmall二次开发指南手册,ECMALL模板解析机制.MVC架构分析及文件目录说明.
- ecshop二次开发指南[转]
- ECSHOP - 二次开发指南---购物车篇
- ffmpeg二次开发指南
- UCenter Home二次开发指南
- UCenter Home二次开发指南
- ecshop二次开发指南
- Autodesk View and Data API二次开发学习指南
- Autodesk Infrastructure Map Server(AIMS)/MapGuide API二次开发学习指南
- UCenter Home二次开发指南
- ecshop二次开发指南
- Ecmall二次开发指南手册,ECMALL模板解析机制.MVC架构分析及文件目录说明.
- linux下用live555进行二次开发指南
- Map 3D API二次开发学习指南
- 二次开发指南-----购物车篇
- 【新版】Inventor二次开发学习指南
- ECShop二次开发指南