第 2 章 Clair 概念
以下小节概述了 Clair 的工作原理。
2.1. 实践中的 Clair
Clair 分析分为三个不同的部分:索引、匹配和通知。
2.1.1. 索引
Clair 的 indexer 服务在了解容器镜像的组成方面扮演了关键角色。在 Clair 中,名为 "manifests" 的容器镜像表示。清单用于理解镜像层的内容。为简化此过程,Clair 利用了开放容器项目(OCI)清单和层的事实,旨在提供内容寻址,从而减少重复性任务。
在索引过程中,会提取一个代表容器镜像的清单,并划分成其基本组件。索引程序的作业是取消镜像包含的软件包、其原始分发及其所依赖的软件包存储库。然后,在 Clair 的数据库中记录并存储在这些宝贵的信息。索引期间收集的见解作为生成全面漏洞报告的基础。此报告可无缝传输到匹配节点以进一步分析和操作,帮助用户对其容器镜像的安全性做出明智的决策。
IndexReport
存储在 Clair 的数据库中。它可以被限制为一个 匹配器
节点来计算漏洞报告。
2.1.2. 匹配
使用 Clair 时,匹配节点负责将漏洞与提供的索引报告匹配。
匹配者负责保持漏洞数据库最新。matchers 运行一组更新程序,它会定期探测到新内容的数据源。发现新漏洞时,会将其存储在数据库中。
匹配器 API 设计为在查询时始终提供最新的漏洞报告。漏洞报告总结了清单的内容以及影响内容的任何漏洞。
发现新漏洞时,会将其存储在数据库中。
matcher API 设计为经常使用。它设计为在查询时始终提供最新的 VulnerabilityReport
。VulnerabilityReport
总结了清单的内容以及影响内容的所有漏洞。
2.1.3. 通知程序服务
Clair 使用一个通知程序服务来跟踪新的安全数据库更新,并通知用户是否有新的或删除的漏洞是否影响索引的清单。
当 notifier 知道影响之前索引清单的新漏洞时,它使用 config.yaml
文件中配置的方法来提供有关新更改的通知。返回的通知表示因为变化而发现的最严重漏洞。这可避免为同一安全数据库更新创建过量通知。
当用户收到通知时,它会针对匹配者发出一个新的请求,以接收最新的漏洞报告。
您可以通过以下机制订阅通知:
- Webhook 交付
- AMQP 交付
- STOMP 交付
配置通知程序是通过 Clair YAML 配置文件完成的。