架构

目录

概述

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 扫描报告提供安全的临时存储
  • 报告下载:支持安全下载和访问生成的合规报告
  • 报告生成:将原始合规数据转换为格式化、可操作的报告

数据流

扫描执行流程

合规扫描过程遵循明确的步骤,确保资源管理和结果收集的正确性:

  1. 资源创建:用户通过 Kubernetes API 创建 Scan 自定义资源,定义扫描参数、目标节点和合规配置文件。

  2. 控制器调和:ScanController 发现新的 Scan 资源,开始调和流程以编排扫描工作流。

  3. 配置处理:控制器解析指定的合规配置文件和规则,应用 NodeScopeStrategy 确定应扫描的节点范围。

  4. 任务编排:控制器为每个目标节点创建 Scanner Jobs,负责执行实际的合规检查。

  5. Pod 执行:每个 Scanner Job 创建一个 Pod,在目标节点上运行合规扫描工具(如 OpenSCAP)。

  6. 合规评估:Scanner Pod 针对节点执行合规检查,依据指定的安全配置文件和规则进行评估。

  7. 结果收集:Scanner Pod 在 Kubernetes API 中创建 CheckResult 资源,存储合规检查结果。

  8. 报告生成:对于基于 OpenSCAP 的扫描,Scanner Pod 将详细合规报告上传至 ReportService 以供进一步分析和存储。

  9. 状态管理:ScanController 持续监控扫描进度,更新 Scan 资源状态以反映当前操作状态。

  10. 资源清理:扫描完成后,控制器清理 Scanner Jobs 和 Pods,释放集群资源。

该架构确保合规扫描具备分布式、可扩展性,并在编排与执行组件之间保持适当的职责分离。