架构
目录
概述
Compliance Service 是一个基于 Kubernetes 的合规性检查工具,旨在简化 Kubernetes 环境中的安全合规性验证。该项目受 OpenShift compliance-operator 设计启发,支持 DISA STIG 标准和自定义规则配置。
架构图
架构层次
用户层
用户交互层提供多种接口以访问合规服务:
- CLI Tools:用于直接操作合规任务的命令行界面
- Kubernetes API:标准 Kubernetes API 访问,用于与现有工作流集成
控制层
控制层负责合规操作的编排和协调:
- Manager Controller:协调整体合规服务操作的中央控制器
- Scan Controller:专门负责管理合规扫描工作流的控制器
- Report Service Controller:管理报告生成和分发流程
执行层
执行层处理实际的合规扫描和处理:
- Unified Scanner:集成多种合规框架的扫描器
- OpenSCAP Scanner:基于 OpenSCAP 的专用合规检查扫描器
- Report Service:负责生成、存储和提供合规报告的服务
存储层
存储层为合规数据提供持久和临时存储:
- CheckResults (ETCD):用于聚合合规检查结果的持久存储
- ConfigMaps:Kubernetes 原生的配置数据和扫描结果存储
扫描资源
为执行合规扫描动态创建的资源:
- Scanner Jobs:负责协调合规扫描任务的 Kubernetes Job
- Scanner Pods:执行具体合规检查的独立 Pod
核心组件
Scan Controller
Scan Controller 负责管理合规扫描任务的完整生命周期:
- 扫描任务初始化与调度:根据配置的策略创建并调度合规扫描任务
- 扫描进度跟踪:监控正在进行的合规扫描的执行状态
- 结果收集:聚合并处理来自多个来源的扫描结果
Report Service
Report Service 提供全面的报告管理功能:
- 临时存储:为 OpenSCAP 扫描报告提供安全的临时存储
- 报告下载:支持安全下载和访问生成的合规报告
- 报告生成:将原始合规数据转换为格式化、可操作的报告
数据流
扫描执行流程
合规扫描过程遵循明确的步骤,确保资源管理和结果收集的正确性:
-
资源创建:用户通过 Kubernetes API 创建 Scan 自定义资源,定义扫描参数、目标节点和合规配置文件。
-
控制器调和:ScanController 发现新的 Scan 资源,开始调和流程以编排扫描工作流。
-
配置处理:控制器解析指定的合规配置文件和规则,应用 NodeScopeStrategy 确定应扫描的节点范围。
-
任务编排:控制器为每个目标节点创建 Scanner Jobs,负责执行实际的合规检查。
-
Pod 执行:每个 Scanner Job 创建一个 Pod,在目标节点上运行合规扫描工具(如 OpenSCAP)。
-
合规评估:Scanner Pod 针对节点执行合规检查,依据指定的安全配置文件和规则进行评估。
-
结果收集:Scanner Pod 在 Kubernetes API 中创建 CheckResult 资源,存储合规检查结果。
-
报告生成:对于基于 OpenSCAP 的扫描,Scanner Pod 将详细合规报告上传至 ReportService 以供进一步分析和存储。
-
状态管理:ScanController 持续监控扫描进度,更新 Scan 资源状态以反映当前操作状态。
-
资源清理:扫描完成后,控制器清理 Scanner Jobs 和 Pods,释放集群资源。
该架构确保合规扫描具备分布式、可扩展性,并在编排与执行组件之间保持适当的职责分离。