Clair简介:
Clair是一个开源项目,用于静态分析APP应用程序容器中的漏洞,当前支持的容器是appc和docker。
Clair目前已发布了21个版本。 这里使用第20个版本V2.0.0进行源代码分析。 下载地址: https://github.com/core OS/clair/archive/v 2.0.0.zip
Clair定期从一组配置的源中获取漏洞元数据并将其存储在数据库中。
客户端使用Clair API为容器图像编制索引; 这会分析已安装的源包列表并将其保存到数据库中。
客户端使用Clair API查询数据库; 相关数据是实时创建的,不是需要重新扫描的缓存结果。
如果发生漏洞元数据更新,可以将包含受影响镜像的webhook配置为页面或阻止部署。
Clair架构:
Clair主要包括以下模块:
获取-从公共源收集漏洞数据
检测器-指示容器镜像中包含的Feature
- Clair已知的容器镜像格式,如“容器格式”Docker和ACI
通知挂接-在发现新漏洞或已存在的漏洞发生更改时通知用户/计算机
数据库-存储容器中的层次和漏洞
Worker -每个Post Layer都可以在Layer Detect 编译与使用:
在这里用源代码编译安装。 建议在ubuntu系统上编译。 在编译之前,确保安装了git、bzr、rpm和xz等模块。 下载并解压缩V2.0.0版本后,运行gobuildgithub.com/core OS/clair/cmd/clair进行编译。
编译后启动clair。 启动clair时,默认为http://www.Sina.com/http://www.Sina.com /
然后编译analyze-local-images。 这是本地镜像分析的客户端。 clair目前不建议使用此客户端,但它是分析的最佳版本。 ) go get-ugithub.com/core OS/analyze-local-images
obuild github.com/core OS/analyze-local-images编译后,如果扫描本地安装的nginx镜像,扫描结果将如下所示:
这样,我就记住了clair的简单使用方法。 下一篇文章将进一步分析源代码。