在我们关于正在运行的KubeClarity 系列的 EKS 上的 KubeClarity 的帖子中,我们在 EKS 上安装了 KubeClarity 并研究了它的工作原理。希望这篇文章能给你一些启发,让你带着一丝好奇心回来了解更多有关功能集及其架构的信息。这篇深入的文章将从架构角度探索 KubeClarity,并深入了解其实施细节。
深入了解 KubeClarity 架构
图 1:深入了解 KubeClarity 架构
一个很好的起点是研究 KubeClarity 的架构原理。所以,准备好深入研究吧!
KubeClarity 的云安全解决方案:架构原则
KubeClarity 的云安全解决方案从一些基本原则开始,以确保您可以使用其全部功能。以下是指导 KubeClarity 完整架构的原则:
即插即用架构和基础设施
可过载的内容分析器和扫描仪
模块化功能
并行化图像扫描工作负载。
合并和统一并行运行结果的能力。
集中式服务器,提高资源效率
可配置命名空间和扫描目标
用户友好界面和自动化 CLI
架构概览
2:KubeClarity 架构框图
REST API 和基于微服务的架构
API 优先架构将功能分布在多个组件中,并通过 API 调用每个功能组件。任何可通过 CLI 或 UI 获得的功能也可通过 API 获得。如果您想了解更多信息,请在此处查找完整的 API 规范。
模块化设计
KubeClarity 功能组件基于微服务架构模型粘合在一起。您可以将这个独立的“Go”模块作为库拉入现有应用程序 — 您可以根据自己的喜好来执行此操作。这个独立的 Go 模块可以作为库拉入现有应用程序的一部分或整体,具体取决于您的喜好。每个模块都定义了其控制器来处理 API 请求。让我们深入研究这些模块,并了解它们如何作为其整体云安全工具的一部分适应架构方案。
用户界面/仪表板
前端React APP在仪表板上公开 律师数据库 以下控件。它使用后端 API 来呈现这些数据:
各严重程度的可修复漏洞
五大易受攻击元素(应用程序、资源、包)
新的漏洞趋势
每种许可证类型的软件包数量
每种编程语言的软件包数量
一般柜台
命令行界面
KubeClarity 通过名为kubeclarity-cli。此工具独立于 KubeClarity 后端安装过程运行,需要单独安装才能使用其功能。此外,-工具通过在 管道内的 城市和风景如画的海滩而闻 不同阶段启动扫描来提供灵活性。这将促进多个阶段的结果合并,并允许将结果上传到 KubeClarity 后端。图 3 说明了此工具支持的各个 CI 阶段。
构建应用程序
构建映像
推送图像
查看KubeClarity 自述文件以了解有关如何运行 CLI 工具进行扫描并将结果导出到后端的更多信息。下图 3 显示了 CLI 的操作模型。
灵活的 KubeClarity CLI 架构
后端
后端模块是主要模块。它执行 KubeClarity 的所有 bw列表 主要功能编排,并公开 REST API 以触发功能。这些 API 调用由专用控制器处理。例如,处理 CIS Docker Benchmark 请求的控制器与处理检查漏洞请求的控制器不同。后端控制器的完整列表和实现细节可以在此处查看。下面的图 4 捕获了控制器列表作为快速参考。
运行时扫描协调器
此模块负责维护扫描状态以及启动和停止扫描。它还具有报告界面,用于报告扫描结果,包括失败扫描报告的错误。扫描协调器根据传入请求生成扫描作业。这些扫描作业运行内容分析(SBOM 软件物料清单分析)和漏洞扫描。
扫描请求可以特定于应用程序、图像或软件包,并通过 UI、CLI 或 API 触发。或者,扫描请求可以与 Kubernetes 命名空间或整个集群相关。根据扫描请求,编排器启动作业并使用适当的输入启动它们。Go 通道用于实现作业。编排器最后汇总这些异步作业的结果。
<上图> 的架构图在右侧显示了应用程序 pod 的图像扫描示例。扫描协调器根据应用程序 pod 中的图像数量为每个图像启动一个扫描作业。要执行扫描作业,每个扫描器作业都需要访问 SBOM DB 以生成和存储 SBOM,以及访问集中式扫描服务器以查找已知漏洞。我们将在下面介绍有关它的更多详细信息。
扫描仪作业(内容分析和漏洞扫描)
这些扫描器作业同时运行内容分析和漏洞扫描任务。分析器和扫描器的大部分逻辑都在共享模块中实现。此模块还包括各种实用程序,用于进行 SBOM 输出格式转换,合并来自多个扫描器和分析器的输出。
为了完成漏洞扫描作业,扫描程序作业会加载并处理特定于扫描程序的配置参数。如果您想了解有关扫描程序类型的更多详细信息,可以在此处找到实现细节,如下图 5 所示:
内容分析和漏洞扫描
SBOM数据库
SBOMDB 是一个 Go 模块,它设置了自己的控制器、后端和数据库组件,它使用 SQLite 数据库和gorm作为其 ORM 层。它支持使用资源哈希存储和检索 SBOM 的 API。API 路由由此模块中定义的控制器实例处理。SBOM DB 的设计更像一个缓存,为了避免重新计算 SBOM 的开销,它以原始字符串格式存储 SBOM 文档并避免持久存储开销。我们将在下一篇博客中介绍有关 SBOM 结构、集成和缓存的更多细节。下面的图 6 显示了 SBOM 对象的基本定义,您可以在此处查看更多详细信息。
KubeClarity SBOM DB 类型定义
图 6:KubeClarity SBOM DB 类型定义
集中扫描服务器
作为扫描过程的一部分,每个漏洞扫描作业都需要查找已知漏洞。由于扫描作业是独立的并且并行运行,这意味着为每个作业维护已知漏洞数据库的专用副本。但这会占用大量的集群资源和空间。KubeClarity 支持使用已知漏洞数据库的单个副本配置集中式服务器,以使此过程更加高效。所有工作实例都会向此集中式实例发出 API 调用以完成其任务并报告结果。还有进一步的功能可以为该集中式服务器选择本地或远程选项。可以在values.yaml文件中设置配置选项。
根据您的部署和集群资源,可以选择本地或远程服务器配置。您可以在此处查看实施细节以了解更多信息。供您参考,下图 7 显示了两种服务模式(即本地或远程服务器配置)的类型定义。